CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; CREATE TABLE users ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), email TEXT UNIQUE NOT NULL, display_name TEXT, created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), last_login_at TIMESTAMP WITH TIME ZONE ); CREATE TABLE organizations ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), name TEXT NOT NULL, slug TEXT UNIQUE NOT NULL, created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW() ); CREATE TABLE memberships ( user_id UUID REFERENCES users(id), org_id UUID REFERENCES organizations(id), role TEXT NOT NULL, created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(), PRIMARY KEY (user_id, org_id) ); CREATE TABLE sessions ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), user_id UUID REFERENCES users(id), expires_at TIMESTAMP WITH TIME ZONE NOT NULL, revoked_at TIMESTAMP WITH TIME ZONE ); CREATE TABLE audit_logs ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), user_id UUID REFERENCES users(id), org_id UUID REFERENCES organizations(id), action TEXT NOT NULL, resource TEXT, success BOOLEAN NOT NULL, timestamp TIMESTAMP WITH TIME ZONE DEFAULT NOW(), metadata JSONB ); CREATE TABLE activities ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), user_id UUID REFERENCES users(id), org_id UUID REFERENCES organizations(id), file_id TEXT, -- nullable, for future file table action TEXT NOT NULL, metadata JSONB, timestamp TIMESTAMP WITH TIME ZONE DEFAULT NOW() );