55 lines
1.6 KiB
SQL
55 lines
1.6 KiB
SQL
-- CreateTable
|
|
CREATE TABLE "Attendee" (
|
|
"id" TEXT NOT NULL,
|
|
"tenantId" TEXT NOT NULL,
|
|
"eventId" TEXT,
|
|
"fullName" TEXT NOT NULL,
|
|
"email" TEXT NOT NULL,
|
|
"phone" TEXT,
|
|
"tags" TEXT[] NOT NULL DEFAULT ARRAY[]::TEXT[],
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "Attendee_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "AuditLog" (
|
|
"id" TEXT NOT NULL,
|
|
"tenantId" TEXT,
|
|
"actorUserId" TEXT,
|
|
"action" TEXT NOT NULL,
|
|
"entityType" TEXT,
|
|
"entityId" TEXT,
|
|
"ip" TEXT,
|
|
"userAgent" TEXT,
|
|
"metadata" JSONB,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "AuditLog_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Attendee_tenantId_email_key" ON "Attendee"("tenantId", "email");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Attendee_tenantId_idx" ON "Attendee"("tenantId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Attendee_tenantId_eventId_idx" ON "Attendee"("tenantId", "eventId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "AuditLog_tenantId_idx" ON "AuditLog"("tenantId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "AuditLog_actorUserId_idx" ON "AuditLog"("actorUserId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "AuditLog_entityType_entityId_idx" ON "AuditLog"("entityType", "entityId");
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Attendee" ADD CONSTRAINT "Attendee_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "Tenant"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Attendee" ADD CONSTRAINT "Attendee_eventId_fkey" FOREIGN KEY ("eventId") REFERENCES "Event"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|