-- 0003_teams.sql — Team tier data layer (PRD §21 Phase 4). CREATE TABLE teams ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), name TEXT NOT NULL, owner_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE, -- NULL = unlimited seats; otherwise the billed seat cap. seat_limit INTEGER, created_at TIMESTAMPTZ NOT NULL DEFAULT now() ); CREATE INDEX idx_teams_owner ON teams(owner_id); CREATE TABLE team_memberships ( team_id UUID NOT NULL REFERENCES teams(id) ON DELETE CASCADE, user_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE, role TEXT NOT NULL DEFAULT 'member' CHECK (role IN ('owner', 'admin', 'member')), created_at TIMESTAMPTZ NOT NULL DEFAULT now(), PRIMARY KEY (team_id, user_id) ); CREATE INDEX idx_team_memberships_user ON team_memberships(user_id);