CREATE TABLE IF NOT EXISTS users ( id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, username TEXT NOT NULL UNIQUE, email TEXT NOT NULL UNIQUE, password_hash TEXT NOT NULL, password_salt TEXT NOT NULL, first_name TEXT NOT NULL, last_name TEXT NOT NULL, display_name TEXT, date_of_birth DATE, phone_number TEXT, created_at TIMESTAMPTZ NOT NULL DEFAULT now(), last_login_at TIMESTAMPTZ, -- i64 bitfield for permissions permissions BIGINT NOT NULL DEFAULT 0 )