CREATE EXTENSION IF NOT EXISTS pgcrypto; CREATE TABLE accounts ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), email TEXT NOT NULL UNIQUE, password_hash TEXT NOT NULL, display_nick TEXT NOT NULL, role TEXT NOT NULL DEFAULT 'user', can_publish_addons BOOLEAN NOT NULL DEFAULT true, created_at TIMESTAMPTZ NOT NULL DEFAULT now() ); CREATE TABLE avatars ( account_id UUID PRIMARY KEY REFERENCES accounts(id) ON DELETE CASCADE, s3_key TEXT NOT NULL, uploaded_at TIMESTAMPTZ NOT NULL DEFAULT now() ); CREATE TABLE device_links ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), account_id UUID NOT NULL REFERENCES accounts(id) ON DELETE CASCADE, device_token_hash TEXT NOT NULL, linked_at TIMESTAMPTZ NOT NULL DEFAULT now(), last_seen TIMESTAMPTZ ); CREATE INDEX idx_device_links_account_id ON device_links(account_id);