diff --git a/Dockerfile b/Dockerfile index 4ab9659..87fc87c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -34,4 +34,4 @@ COPY --from=builder /app/packages/db/src ./packages/db/src ENV NODE_ENV=production EXPOSE 3001 ENTRYPOINT ["dumb-init", "--"] -CMD ["sh", "-c", "cd packages/db && npx prisma migrate deploy && cd /app && node dist/main"] +CMD ["sh", "-c", "cd packages/db && npx prisma migrate deploy && if [ \"$RUN_SEED\" = \"true\" ]; then echo 'Seeding database...' && npx tsx prisma/seed.ts; fi && cd /app && node dist/main"] diff --git a/packages/db/prisma/migrations/20260415000000_make_user_tenantid_nullable/migration.sql b/packages/db/prisma/migrations/20260415000000_make_user_tenantid_nullable/migration.sql new file mode 100644 index 0000000..d5fad37 --- /dev/null +++ b/packages/db/prisma/migrations/20260415000000_make_user_tenantid_nullable/migration.sql @@ -0,0 +1,12 @@ +-- AlterTable: make tenantId nullable for super_admin users +ALTER TABLE "users" ALTER COLUMN "tenantId" DROP NOT NULL; + +-- Fix FK to allow NULL (super_admin has no tenant) +ALTER TABLE "users" DROP CONSTRAINT "users_tenantId_fkey"; +ALTER TABLE "users" ADD CONSTRAINT "users_tenantId_fkey" + FOREIGN KEY ("tenantId") REFERENCES "tenants"("id") ON DELETE SET NULL ON UPDATE CASCADE; + +-- Drop unique index that requires tenantId (email must be unique globally for super_admin) +DROP INDEX IF EXISTS "users_tenantId_email_key"; +CREATE UNIQUE INDEX "users_tenantId_email_key" ON "users"("tenantId", "email") WHERE "tenantId" IS NOT NULL; +CREATE UNIQUE INDEX "users_email_key" ON "users"("email") WHERE "tenantId" IS NULL;