183 lines
5.8 KiB
SQL
183 lines
5.8 KiB
SQL
-- CreateEnum
|
|
CREATE TYPE "UserRole" AS ENUM ('SUPER_ADMIN', 'ADMIN_EMPRESA', 'OPERADOR_BODEGA', 'AGENTE_ADUANERO', 'CLIENTE', 'SOPORTE');
|
|
|
|
-- CreateEnum
|
|
CREATE TYPE "PackageStatus" AS ENUM ('REGISTRADO', 'EN_TRANSITO_BODEGA', 'RECIBIDO_BODEGA', 'EN_VERIFICACION', 'VERIFICADO', 'DECLARACION_ADUANERA', 'EN_TRANSITO_ECUADOR', 'EN_ADUANA_ECUADOR', 'LISTO_ENTREGA', 'ENTREGADO', 'INCIDENCIA');
|
|
|
|
-- CreateEnum
|
|
CREATE TYPE "PreAlertStatus" AS ENUM ('PENDIENTE', 'VINCULADA', 'CANCELADA');
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Tenant" (
|
|
"id" TEXT NOT NULL,
|
|
"slug" TEXT NOT NULL,
|
|
"name" TEXT NOT NULL,
|
|
"isActive" BOOLEAN NOT NULL DEFAULT true,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "Tenant_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "User" (
|
|
"id" TEXT NOT NULL,
|
|
"tenantId" TEXT NOT NULL,
|
|
"email" TEXT NOT NULL,
|
|
"passwordHash" TEXT NOT NULL,
|
|
"firstName" TEXT NOT NULL,
|
|
"lastName" TEXT NOT NULL,
|
|
"phone" TEXT,
|
|
"role" "UserRole" NOT NULL DEFAULT 'CLIENTE',
|
|
"mfaEnabled" BOOLEAN NOT NULL DEFAULT false,
|
|
"mfaSecret" TEXT,
|
|
"isActive" BOOLEAN NOT NULL DEFAULT true,
|
|
"lastLoginAt" TIMESTAMP(3),
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "User_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Suite" (
|
|
"id" TEXT NOT NULL,
|
|
"tenantId" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"code" TEXT NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "Suite_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "Package" (
|
|
"id" TEXT NOT NULL,
|
|
"tenantId" TEXT NOT NULL,
|
|
"userId" TEXT NOT NULL,
|
|
"trackingId" TEXT NOT NULL,
|
|
"status" "PackageStatus" NOT NULL DEFAULT 'REGISTRADO',
|
|
"description" TEXT NOT NULL,
|
|
"store" TEXT,
|
|
"declaredValue" DECIMAL(10,2) NOT NULL,
|
|
"declaredWeight" DECIMAL(8,2),
|
|
"actualWeight" DECIMAL(8,2),
|
|
"vendorTracking" TEXT,
|
|
"productUrl" TEXT,
|
|
"paidAt" TIMESTAMP(3),
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "Package_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "PackageStatusHistory" (
|
|
"id" TEXT NOT NULL,
|
|
"packageId" TEXT NOT NULL,
|
|
"status" "PackageStatus" NOT NULL,
|
|
"note" TEXT,
|
|
"createdBy" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "PackageStatusHistory_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "PreAlert" (
|
|
"id" TEXT NOT NULL,
|
|
"tenantId" TEXT NOT NULL,
|
|
"packageId" TEXT,
|
|
"store" TEXT NOT NULL,
|
|
"vendorTracking" TEXT,
|
|
"description" TEXT NOT NULL,
|
|
"declaredValue" DECIMAL(10,2) NOT NULL,
|
|
"invoiceKey" TEXT,
|
|
"status" "PreAlertStatus" NOT NULL DEFAULT 'PENDIENTE',
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
"updatedAt" TIMESTAMP(3) NOT NULL,
|
|
|
|
CONSTRAINT "PreAlert_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateTable
|
|
CREATE TABLE "AuditLog" (
|
|
"id" TEXT NOT NULL,
|
|
"tenantId" TEXT,
|
|
"userId" TEXT,
|
|
"action" TEXT NOT NULL,
|
|
"resource" TEXT,
|
|
"resourceId" TEXT,
|
|
"metadata" JSONB,
|
|
"ipAddress" TEXT,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
CONSTRAINT "AuditLog_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Tenant_slug_key" ON "Tenant"("slug");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "User_tenantId_idx" ON "User"("tenantId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "User_tenantId_email_key" ON "User"("tenantId", "email");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Suite_userId_key" ON "Suite"("userId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Suite_tenantId_idx" ON "Suite"("tenantId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Suite_tenantId_code_key" ON "Suite"("tenantId", "code");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "Package_trackingId_key" ON "Package"("trackingId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Package_tenantId_status_idx" ON "Package"("tenantId", "status");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "Package_userId_idx" ON "Package"("userId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "PackageStatusHistory_packageId_idx" ON "PackageStatusHistory"("packageId");
|
|
|
|
-- CreateIndex
|
|
CREATE UNIQUE INDEX "PreAlert_packageId_key" ON "PreAlert"("packageId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "PreAlert_tenantId_idx" ON "PreAlert"("tenantId");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "AuditLog_tenantId_createdAt_idx" ON "AuditLog"("tenantId", "createdAt");
|
|
|
|
-- CreateIndex
|
|
CREATE INDEX "AuditLog_userId_idx" ON "AuditLog"("userId");
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "User" ADD CONSTRAINT "User_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "Tenant"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Suite" ADD CONSTRAINT "Suite_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "Tenant"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Suite" ADD CONSTRAINT "Suite_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Package" ADD CONSTRAINT "Package_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "Tenant"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "Package" ADD CONSTRAINT "Package_userId_fkey" FOREIGN KEY ("userId") REFERENCES "User"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "PackageStatusHistory" ADD CONSTRAINT "PackageStatusHistory_packageId_fkey" FOREIGN KEY ("packageId") REFERENCES "Package"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "PreAlert" ADD CONSTRAINT "PreAlert_tenantId_fkey" FOREIGN KEY ("tenantId") REFERENCES "Tenant"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE "PreAlert" ADD CONSTRAINT "PreAlert_packageId_fkey" FOREIGN KEY ("packageId") REFERENCES "Package"("id") ON DELETE SET NULL ON UPDATE CASCADE;
|