nxtgauge-backend-rust/crates/db/migrations/20260317202400_onboarding_states.up.sql

17 lines
814 B
MySQL
Raw Normal View History

-- 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);