-- CreateEnum CREATE TYPE "OrganizationType" AS ENUM ('COMPANY', 'SCHOOL', 'GOVERNMENT', 'LAB', 'OTHER'); -- CreateTable CREATE TABLE "organizations" ( "id" TEXT NOT NULL, "name" TEXT NOT NULL, "type" "OrganizationType" NOT NULL DEFAULT 'OTHER', "domain" TEXT, "is_active" BOOLEAN NOT NULL DEFAULT true, "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, CONSTRAINT "organizations_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "user_affiliations" ( "id" TEXT NOT NULL, "user_id" TEXT NOT NULL, "organization_id" TEXT NOT NULL, "department" TEXT, "position" TEXT, "is_primary" BOOLEAN NOT NULL DEFAULT false, "starts_at" TIMESTAMP(3), "ends_at" TIMESTAMP(3), "created_at" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "updated_at" TIMESTAMP(3) NOT NULL, CONSTRAINT "user_affiliations_pkey" PRIMARY KEY ("id") ); -- CreateIndex CREATE UNIQUE INDEX "organizations_name_type_key" ON "organizations"("name", "type"); -- CreateIndex CREATE INDEX "organizations_is_active_type_idx" ON "organizations"("is_active", "type"); -- CreateIndex CREATE INDEX "user_affiliations_user_id_is_primary_idx" ON "user_affiliations"("user_id", "is_primary"); -- CreateIndex CREATE INDEX "user_affiliations_organization_id_idx" ON "user_affiliations"("organization_id"); -- AddForeignKey ALTER TABLE "user_affiliations" ADD CONSTRAINT "user_affiliations_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users"("id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "user_affiliations" ADD CONSTRAINT "user_affiliations_organization_id_fkey" FOREIGN KEY ("organization_id") REFERENCES "organizations"("id") ON DELETE RESTRICT ON UPDATE CASCADE;