53 lines
1.4 KiB
SQL
53 lines
1.4 KiB
SQL
CREATE TABLE IF NOT EXISTS guest_messages (
|
|
id SERIAL PRIMARY KEY,
|
|
guest_id VARCHAR(255) NOT NULL,
|
|
content TEXT NOT NULL,
|
|
language VARCHAR(10) DEFAULT 'en',
|
|
is_ai BOOLEAN DEFAULT false,
|
|
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
|
);
|
|
|
|
-- DO $$
|
|
-- BEGIN
|
|
-- IF NOT EXISTS (
|
|
-- SELECT 1 FROM pg_indexes
|
|
-- WHERE tablename = 'guest_messages' AND indexname = 'idx_guest_messages_guest_id'
|
|
-- ) THEN
|
|
-- CREATE INDEX idx_guest_messages_guest_id ON guest_messages(guest_id);
|
|
-- END IF;
|
|
-- END $$;
|
|
-- -- Пропускаем создание индекса, так как колонка guest_id зашифрована
|
|
|
|
DO $$
|
|
BEGIN
|
|
IF NOT EXISTS (
|
|
SELECT 1 FROM information_schema.columns
|
|
WHERE table_name = 'messages' AND column_name = 'guest_message_id'
|
|
) THEN
|
|
ALTER TABLE messages ADD COLUMN guest_message_id INTEGER;
|
|
END IF;
|
|
END $$;
|
|
|
|
DO $$
|
|
BEGIN
|
|
IF NOT EXISTS (
|
|
SELECT 1 FROM pg_constraint
|
|
WHERE conname = 'fk_messages_guest_message'
|
|
) THEN
|
|
ALTER TABLE messages
|
|
ADD CONSTRAINT fk_messages_guest_message
|
|
FOREIGN KEY (guest_message_id)
|
|
REFERENCES guest_messages(id)
|
|
ON DELETE SET NULL;
|
|
END IF;
|
|
END $$;
|
|
|
|
DO $$
|
|
BEGIN
|
|
IF NOT EXISTS (
|
|
SELECT 1 FROM pg_indexes
|
|
WHERE tablename = 'messages' AND indexname = 'idx_messages_guest_message_id'
|
|
) THEN
|
|
CREATE INDEX idx_messages_guest_message_id ON messages(guest_message_id);
|
|
END IF;
|
|
END $$; |