-- CreateEnum CREATE TYPE "UserRole" AS ENUM ('ADMIN', 'SUPERVISOR', 'OPERATOR'); -- CreateTable CREATE TABLE "Tenant" ( "id" TEXT NOT NULL, "name" TEXT NOT NULL, "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "Tenant_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "User" ( "id" TEXT NOT NULL, "tenantId" TEXT NOT NULL, "email" TEXT NOT NULL, "passwordHash" TEXT, "role" "UserRole" NOT NULL DEFAULT 'OPERATOR', "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, CONSTRAINT "User_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "Workstation" ( "id" TEXT NOT NULL, "tenantId" TEXT NOT NULL, "code" TEXT NOT NULL, "name" TEXT NOT NULL, "area" TEXT NOT NULL, CONSTRAINT "Workstation_pkey" PRIMARY KEY ("id") ); -- CreateTable CREATE TABLE "DomainEvent" ( "id" TEXT NOT NULL, "tenantId" TEXT NOT NULL, "aggregateType" TEXT NOT NULL, "aggregateId" TEXT NOT NULL, "eventType" TEXT NOT NULL, "payload" JSONB NOT NULL, "occurredAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP, "processedAt" TIMESTAMP(3), CONSTRAINT "DomainEvent_pkey" PRIMARY KEY ("id") ); -- CreateIndex CREATE INDEX "User_tenantId_idx" ON "User"("tenantId"); -- CreateIndex CREATE UNIQUE INDEX "User_tenantId_email_key" ON "User"("tenantId", "email"); -- CreateIndex CREATE INDEX "Workstation_tenantId_idx" ON "Workstation"("tenantId"); -- CreateIndex CREATE UNIQUE INDEX "Workstation_tenantId_code_key" ON "Workstation"("tenantId", "code"); -- CreateIndex CREATE INDEX "DomainEvent_tenantId_idx" ON "DomainEvent"("tenantId"); -- CreateIndex CREATE INDEX "DomainEvent_tenantId_processedAt_idx" ON "DomainEvent"("tenantId", "processedAt"); -- CreateIndex CREATE INDEX "DomainEvent_tenantId_aggregateType_aggregateId_idx" ON "DomainEvent"("tenantId", "aggregateType", "aggregateId"); -- AddForeignKey ALTER TABLE "User" ADD CONSTRAINT "User_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "Tenant"("id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "Workstation" ADD CONSTRAINT "Workstation_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "Tenant"("id") ON DELETE CASCADE ON UPDATE CASCADE; -- AddForeignKey ALTER TABLE "DomainEvent" ADD CONSTRAINT "DomainEvent_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "Tenant"("id") ON DELETE CASCADE ON UPDATE CASCADE;