-- Onboarding state per user per role
-- Tracks progress through the schema-driven onboarding form
CREATE TABLE IF NOT EXISTS onboarding_states (
    id          UUID        PRIMARY KEY DEFAULT gen_random_uuid(),
    user_id     UUID        NOT NULL REFERENCES users(id) ON DELETE CASCADE,
    role_id     UUID        NOT NULL REFERENCES roles(id) ON DELETE CASCADE,
    status      VARCHAR(20) NOT NULL DEFAULT 'NOT_STARTED', -- NOT_STARTED | IN_PROGRESS | COMPLETED
    progress_json JSONB     NOT NULL DEFAULT '{}',
    completed_at TIMESTAMPTZ,
    created_at  TIMESTAMPTZ NOT NULL DEFAULT NOW(),
    updated_at  TIMESTAMPTZ NOT NULL DEFAULT NOW()
);

-- One onboarding state record per user per role
CREATE UNIQUE INDEX IF NOT EXISTS idx_onboarding_state_user_role
    ON onboarding_states(user_id, role_id);
