Files
DLE/backend/db/migrations/007_user_preferences.sql

47 lines
1.6 KiB
SQL

CREATE TABLE IF NOT EXISTS user_preferences (
id SERIAL PRIMARY KEY,
user_id INTEGER NOT NULL REFERENCES users(id),
preference_key VARCHAR(50) NOT NULL,
preference_value TEXT,
metadata JSONB DEFAULT '{}',
created_at TIMESTAMP NOT NULL DEFAULT NOW(),
updated_at TIMESTAMP NOT NULL DEFAULT NOW(),
UNIQUE(user_id, preference_key)
);
-- Добавляем колонку metadata, если её нет
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM information_schema.columns
WHERE table_name = 'user_preferences' AND column_name = 'metadata'
) THEN
ALTER TABLE user_preferences ADD COLUMN metadata JSONB DEFAULT '{}';
END IF;
END $$;
CREATE INDEX IF NOT EXISTS idx_user_preferences_user_id ON user_preferences(user_id);
-- Базовые настройки (пропускаем, так как колонки зашифрованы)
-- Данные будут добавлены через encryptedDatabaseService
-- DO $$
-- BEGIN
-- INSERT INTO user_preferences (user_id, preference_key, preference_value, metadata)
-- SELECT id, 'language', 'ru', '{"available": ["ru", "en"]}'::jsonb
-- FROM users u
-- WHERE NOT EXISTS (
-- SELECT 1 FROM user_preferences
-- WHERE preference_key = 'language' AND user_id = u.id
-- );
-- END $$;
-- DO $$
-- BEGIN
-- INSERT INTO user_preferences (user_id, preference_key, preference_value, metadata)
-- SELECT id, 'notifications', 'true', '{"channels": ["email", "telegram"]}'::jsonb
-- FROM users u
-- WHERE NOT EXISTS (
-- SELECT 1 FROM user_preferences
-- WHERE preference_key = 'notifications' AND user_id = u.id
-- );
-- END $$;