mirror of
https://github.com/SamyRai/turash.git
synced 2025-12-26 23:01:33 +00:00
49 lines
1.6 KiB
SQL
Executable File
49 lines
1.6 KiB
SQL
Executable File
-- Enhance users table with role, permissions, and activity tracking
|
|
-- Migration: 016_enhance_users_table.up.sql
|
|
|
|
-- Add role column (if not exists)
|
|
DO $$
|
|
BEGIN
|
|
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
|
|
WHERE table_name = 'users' AND column_name = 'role') THEN
|
|
ALTER TABLE users ADD COLUMN role VARCHAR(50) DEFAULT 'user';
|
|
END IF;
|
|
END $$;
|
|
|
|
-- Add permissions column (JSONB array)
|
|
DO $$
|
|
BEGIN
|
|
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
|
|
WHERE table_name = 'users' AND column_name = 'permissions') THEN
|
|
ALTER TABLE users ADD COLUMN permissions JSONB DEFAULT '[]'::jsonb;
|
|
END IF;
|
|
END $$;
|
|
|
|
-- Add last_login_at column
|
|
DO $$
|
|
BEGIN
|
|
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
|
|
WHERE table_name = 'users' AND column_name = 'last_login_at') THEN
|
|
ALTER TABLE users ADD COLUMN last_login_at TIMESTAMP WITH TIME ZONE;
|
|
END IF;
|
|
END $$;
|
|
|
|
-- Add is_active column
|
|
DO $$
|
|
BEGIN
|
|
IF NOT EXISTS (SELECT 1 FROM information_schema.columns
|
|
WHERE table_name = 'users' AND column_name = 'is_active') THEN
|
|
ALTER TABLE users ADD COLUMN is_active BOOLEAN DEFAULT TRUE;
|
|
END IF;
|
|
END $$;
|
|
|
|
-- Create indexes
|
|
CREATE INDEX IF NOT EXISTS idx_users_role ON users(role);
|
|
CREATE INDEX IF NOT EXISTS idx_users_is_active ON users(is_active);
|
|
CREATE INDEX IF NOT EXISTS idx_users_last_login_at ON users(last_login_at);
|
|
|
|
-- Update existing users to have default role
|
|
UPDATE users SET role = 'user' WHERE role IS NULL;
|
|
UPDATE users SET is_active = TRUE WHERE is_active IS NULL;
|
|
|