-- Add migration script here CREATE TABLE IF NOT EXISTS users ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), username VARCHAR(255) NOT NULL UNIQUE, email VARCHAR(255) UNIQUE, password_hash VARCHAR(255), role VARCHAR(20) NOT NULL DEFAULT 'accountant', created_at TIMESTAMPTZ DEFAULT CURRENT_TIMESTAMP ); -- Add an index for faster lookups CREATE INDEX idx_users_email_username ON users(email, username); ALTER TABLE users ADD CONSTRAINT valid_roles CHECK (role IN ( 'admin', 'moderator', 'accountant', 'viewer' )); -- Create JWT sessions table CREATE TABLE user_sessions ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), user_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE, jwt_token TEXT NOT NULL UNIQUE, expires_at TIMESTAMPTZ NOT NULL, revoked BOOLEAN NOT NULL DEFAULT false, created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP ); -- Add indexes CREATE INDEX idx_sessions_user ON user_sessions(user_id); CREATE INDEX idx_sessions_expires ON user_sessions(expires_at);