24 lines
752 B
SQL
24 lines
752 B
SQL
CREATE TABLE IF NOT EXISTS roles (
|
||
id SERIAL PRIMARY KEY,
|
||
name VARCHAR(50) NOT NULL UNIQUE,
|
||
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||
);
|
||
|
||
-- Добавляем базовые роли
|
||
INSERT INTO roles (name) VALUES ('admin'), ('user')
|
||
ON CONFLICT (name) DO NOTHING;
|
||
|
||
-- Добавляем связь пользователей с ролями
|
||
DO $$
|
||
BEGIN
|
||
IF NOT EXISTS (
|
||
SELECT 1 FROM information_schema.columns
|
||
WHERE table_name = 'users' AND column_name = 'role_id'
|
||
) THEN
|
||
ALTER TABLE users
|
||
ADD COLUMN role_id INTEGER REFERENCES roles(id);
|
||
END IF;
|
||
END $$;
|
||
|
||
-- Создаем индекс для role_id после добавления колонки
|
||
CREATE INDEX IF NOT EXISTS idx_users_role_id ON users(role_id); |