CREATE TABLE "student_enrollments" ( "id" UUID NOT NULL DEFAULT gen_random_uuid(), "user_id" UUID NOT NULL, "organization_id" UUID, "organization_name" TEXT NOT NULL, "status" TEXT NOT NULL DEFAULT 'ACTIVE', "removed_at" TIMESTAMP(3), "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "student_enrollments_pkey" PRIMARY KEY ("id") ); CREATE UNIQUE INDEX "student_enrollments_user_id_organization_name_key" ON "student_enrollments"("user_id", "organization_name"); CREATE INDEX "student_enrollments_organization_id_status_idx" ON "student_enrollments"("organization_id", "status"); CREATE INDEX "student_enrollments_organization_name_status_idx" ON "student_enrollments"("organization_name", "status"); ALTER TABLE "student_enrollments" ADD CONSTRAINT "student_enrollments_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE; INSERT INTO "student_enrollments" ("user_id", "organization_id", "organization_name", "status") SELECT u."id", u."primary_organization_id", u."primary_organization_name", 'ACTIVE' FROM "users" u WHERE u."primary_organization_name" IS NOT NULL AND (u."auth_role" IS NULL OR u."auth_role" IN ('USER', 'STUDENT')) ON CONFLICT ("user_id", "organization_name") DO NOTHING;