| -- Stock Analysis Database Schema | |
| -- Run this SQL in your Supabase SQL Editor | |
| -- Create user role enum | |
| CREATE TYPE user_role AS ENUM ('ADMIN', 'STAFF'); | |
| -- Create users table | |
| CREATE TABLE users ( | |
| id UUID PRIMARY KEY DEFAULT gen_random_uuid(), | |
| email VARCHAR(255) UNIQUE NOT NULL, | |
| name VARCHAR(255) NOT NULL, | |
| password_hash VARCHAR(255) NOT NULL, | |
| role user_role NOT NULL DEFAULT 'STAFF', | |
| is_active BOOLEAN DEFAULT TRUE, | |
| created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), | |
| updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() | |
| ); | |
| -- Create index on email for faster lookups | |
| CREATE INDEX idx_users_email ON users(email); | |
| -- Create function to automatically update updated_at timestamp | |
| CREATE OR REPLACE FUNCTION update_updated_at_column() | |
| RETURNS TRIGGER AS $$ | |
| BEGIN | |
| NEW.updated_at = NOW(); | |
| RETURN NEW; | |
| END; | |
| $$ language 'plpgsql'; | |
| -- Create trigger to call the function before update | |
| CREATE TRIGGER update_users_updated_at BEFORE UPDATE ON users | |
| FOR EACH ROW EXECUTE FUNCTION update_updated_at_column(); | |
| -- Verify table creation | |
| SELECT table_name FROM information_schema.tables WHERE table_schema = 'public'; | |