Files
komp_ac/server/migrations/20250324192805_auth.sql
2025-03-24 21:46:04 +01:00

39 lines
1.0 KiB
SQL

-- 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);