Closes the gap between "what tag did I deploy" and "what is actually running", and gives the schema a history that can be reasoned about across releases. Migrations - Baseline the existing schema as 0000_init (migrate diff --from-empty). The schema had only ever been applied with `prisma db push`, so no history existed and schema state was disconnected from app version. Existing databases must be baselined once with `migrate resolve --applied 0000_init`; the workflows print this remedy on P3005. - Run `prisma migrate deploy` as a deploy STEP, not the container CMD — as a CMD, N replicas would race each other applying the same migration. Version reporting - GET /version on the API reports the APP_VERSION / GIT_SHA / BUILD_DATE that build.yml already baked into both images but nothing ever read. - The web footer shows the web build and flags an api/web mismatch. The two cannot drift at build time (one matrix run) but can at deploy time. - Both deploy workflows now fail if the running API does not report the tag that was dispatched — a stack naming a tag is not proof of what is running. - scripts/set-version.mjs stamps every package.json, which had all sat at 0.1.0 while real releases shipped as v1.x. Pre-migrate backup - deploy/scripts/pre-migrate-backup.mjs dumps the database from INSIDE the still-running old API container over Portainer's Docker API, so the file lands in the volume the Operaciones restore screen reads. A dump taken on the CI runner would be unreachable by the only restore path we have. Verifies the artefact with `gzip -t` before letting the migration proceed. galactus - deploy/galactus/*.compose.yml: standalone-Docker ports of the Swarm stacks. Plain compose silently ignores `deploy:`, so restart_policy becomes `restart: unless-stopped` — without it nothing returns after a host reboot. - .gitea/workflows/deploy-galactus.yml drives endpoint 3 with its own secrets. Fixes - deploy.yml passed `endpoint_id` and `pull_image` to cssnr/portainer-stack-deploy-action, which has no such inputs (they are `endpoint` and `pull`). The endpoint was silently never set. docs/DEPLOY_AND_MIGRATIONS.md documents expand/contract as the rule for schema changes: Prisma has no down-migrations, so a code rollback never rolls the schema back, and restoring the replication master from a dump diverges every replica. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
539 lines
20 KiB
SQL
539 lines
20 KiB
SQL
-- CreateTable
|
|
CREATE TABLE `customers` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`name` VARCHAR(191) NOT NULL,
|
|
`nameSource` VARCHAR(191) NULL,
|
|
`nameMissing` BOOLEAN NOT NULL DEFAULT false,
|
|
`addressLine1` VARCHAR(191) NULL,
|
|
`addressLine2` VARCHAR(191) NULL,
|
|
`city` VARCHAR(191) NULL,
|
|
`state` VARCHAR(191) NULL,
|
|
`zipCode` VARCHAR(191) NULL,
|
|
`country` VARCHAR(191) NULL,
|
|
`phone` VARCHAR(191) NULL,
|
|
`mobile` VARCHAR(191) NULL,
|
|
`fax` VARCHAR(191) NULL,
|
|
`email` VARCHAR(191) NULL,
|
|
`notes` TEXT NULL,
|
|
`identificationType` VARCHAR(191) NULL,
|
|
`identificationNumber` VARCHAR(191) NULL,
|
|
`identificationExpiration` DATETIME(3) NULL,
|
|
`customerSince` DATETIME(3) NULL,
|
|
`status` BOOLEAN NOT NULL DEFAULT true,
|
|
`minimumBalance` DECIMAL(12, 2) NULL,
|
|
`feeAmount` DECIMAL(12, 2) NULL,
|
|
`preferredCurrency` ENUM('USD', 'MXN') NOT NULL DEFAULT 'USD',
|
|
`archivedAt` DATETIME(3) NULL,
|
|
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`updatedAt` DATETIME(3) NOT NULL,
|
|
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `customer_legacy_refs` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`customerId` VARCHAR(191) NOT NULL,
|
|
`sourceSystem` VARCHAR(191) NOT NULL,
|
|
`sourceTable` VARCHAR(191) NOT NULL,
|
|
`legacyId` VARCHAR(191) NOT NULL,
|
|
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
|
|
UNIQUE INDEX `customer_legacy_refs_sourceSystem_sourceTable_legacyId_key`(`sourceSystem`, `sourceTable`, `legacyId`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `insurance_providers` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`name` VARCHAR(191) NOT NULL,
|
|
|
|
UNIQUE INDEX `insurance_providers_name_key`(`name`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `policy_types` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`name` VARCHAR(191) NOT NULL,
|
|
`shortDescription` VARCHAR(191) NULL,
|
|
|
|
UNIQUE INDEX `policy_types_name_key`(`name`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `policies` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`policyNumber` VARCHAR(191) NOT NULL,
|
|
`customerId` VARCHAR(191) NOT NULL,
|
|
`policyTypeId` VARCHAR(191) NULL,
|
|
`insuranceProviderId` VARCHAR(191) NULL,
|
|
`agentName` VARCHAR(191) NULL,
|
|
`policyDate` DATETIME(3) NULL,
|
|
`policyFrom` DATETIME(3) NULL,
|
|
`policyTo` DATETIME(3) NULL,
|
|
`coveragePeriodDays` INTEGER NULL DEFAULT 365,
|
|
`netPremium` DECIMAL(12, 2) NULL,
|
|
`policyFee` DECIMAL(12, 2) NULL,
|
|
`brokerFee` DECIMAL(12, 2) NULL,
|
|
`commission` DECIMAL(12, 2) NULL,
|
|
`total` DECIMAL(12, 2) NULL,
|
|
`currency` ENUM('USD', 'MXN') NOT NULL DEFAULT 'MXN',
|
|
`observations` TEXT NULL,
|
|
`notes` TEXT NULL,
|
|
`coveragesJson` JSON NULL,
|
|
`endorsement` BOOLEAN NOT NULL DEFAULT false,
|
|
`liquidated` BOOLEAN NOT NULL DEFAULT false,
|
|
`liquidationNumber` VARCHAR(191) NULL,
|
|
`liquidationDate` DATETIME(3) NULL,
|
|
`archivedAt` DATETIME(3) NULL,
|
|
`legacySourceDb` VARCHAR(191) NULL,
|
|
`legacySourceTable` VARCHAR(191) NULL,
|
|
`legacyId` VARCHAR(191) NULL,
|
|
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`updatedAt` DATETIME(3) NOT NULL,
|
|
|
|
INDEX `policies_policyNumber_idx`(`policyNumber`),
|
|
UNIQUE INDEX `policies_legacySourceDb_legacySourceTable_legacyId_key`(`legacySourceDb`, `legacySourceTable`, `legacyId`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `renewal_notices` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`policyId` VARCHAR(191) NOT NULL,
|
|
`generation` INTEGER NOT NULL,
|
|
`channel` ENUM('MAIL', 'EMAIL') NOT NULL DEFAULT 'MAIL',
|
|
`sentAt` DATETIME(3) NULL,
|
|
`sentById` VARCHAR(191) NULL,
|
|
`notes` TEXT NULL,
|
|
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
|
|
UNIQUE INDEX `renewal_notices_policyId_generation_key`(`policyId`, `generation`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `policy_payment_installments` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`policyId` VARCHAR(191) NOT NULL,
|
|
`sequence` INTEGER NOT NULL,
|
|
`amount` DECIMAL(12, 2) NULL,
|
|
`currency` ENUM('USD', 'MXN') NOT NULL DEFAULT 'MXN',
|
|
`dueDate` DATETIME(3) NULL,
|
|
`paidDate` DATETIME(3) NULL,
|
|
`checkNumber` VARCHAR(191) NULL,
|
|
`isCash` BOOLEAN NOT NULL DEFAULT false,
|
|
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `vehicles` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`customerId` VARCHAR(191) NULL,
|
|
`policyId` VARCHAR(191) NULL,
|
|
`make` VARCHAR(191) NULL,
|
|
`model` VARCHAR(191) NULL,
|
|
`modelYear` VARCHAR(191) NULL,
|
|
`bodyType` VARCHAR(191) NULL,
|
|
`engineNumber` VARCHAR(191) NULL,
|
|
`licensePlate` VARCHAR(191) NULL,
|
|
`vinNumber` VARCHAR(191) NULL,
|
|
`stateCode` VARCHAR(191) NULL,
|
|
`notes` TEXT NULL,
|
|
`legacySourceTable` VARCHAR(191) NULL,
|
|
`legacyId` VARCHAR(191) NULL,
|
|
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `insured_drivers` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`policyId` VARCHAR(191) NOT NULL,
|
|
`fullName` VARCHAR(191) NULL,
|
|
`birthDate` DATETIME(3) NULL,
|
|
`sex` VARCHAR(191) NULL,
|
|
`occupation` VARCHAR(191) NULL,
|
|
`licenseNumber` VARCHAR(191) NULL,
|
|
`licenseState` VARCHAR(191) NULL,
|
|
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `policy_beneficiaries` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`policyId` VARCHAR(191) NOT NULL,
|
|
`name` VARCHAR(191) NULL,
|
|
`address` VARCHAR(191) NULL,
|
|
`phone` VARCHAR(191) NULL,
|
|
`email` VARCHAR(191) NULL,
|
|
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `claims` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`policyId` VARCHAR(191) NOT NULL,
|
|
`claimType` VARCHAR(191) NULL,
|
|
`incidentDate` DATETIME(3) NULL,
|
|
`reportedDate` DATETIME(3) NULL,
|
|
`description` TEXT NULL,
|
|
`adjusterId` VARCHAR(191) NULL,
|
|
`claimedAmount` DECIMAL(12, 2) NULL,
|
|
`settledAmount` DECIMAL(12, 2) NULL,
|
|
`settlementDate` DATETIME(3) NULL,
|
|
`checkNumber` VARCHAR(191) NULL,
|
|
`resolved` BOOLEAN NOT NULL DEFAULT false,
|
|
`resolutionNotes` TEXT NULL,
|
|
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `adjusters` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`company` VARCHAR(191) NULL,
|
|
`city` VARCHAR(191) NULL,
|
|
`name` VARCHAR(191) NULL,
|
|
`phone` VARCHAR(191) NULL,
|
|
`beeper` VARCHAR(191) NULL,
|
|
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `policy_documents` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`policyId` VARCHAR(191) NOT NULL,
|
|
`documentType` VARCHAR(191) NOT NULL,
|
|
`storageKey` VARCHAR(191) NOT NULL,
|
|
`originalColumn` VARCHAR(191) NULL,
|
|
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `properties` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`customerId` VARCHAR(191) NOT NULL,
|
|
`policyId` VARCHAR(191) NULL,
|
|
`addressLine1` VARCHAR(191) NULL,
|
|
`addressLine2` VARCHAR(191) NULL,
|
|
`phone1` VARCHAR(191) NULL,
|
|
`phone2` VARCHAR(191) NULL,
|
|
`phone3` VARCHAR(191) NULL,
|
|
`zone` VARCHAR(191) NULL,
|
|
`archivedAt` DATETIME(3) NULL,
|
|
`legacySourceTable` VARCHAR(191) NULL,
|
|
`legacyId` VARCHAR(191) NULL,
|
|
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
|
|
UNIQUE INDEX `properties_legacySourceTable_legacyId_key`(`legacySourceTable`, `legacyId`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `property_services` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`propertyId` VARCHAR(191) NOT NULL,
|
|
`kind` ENUM('WATER', 'ELECTRIC', 'GAS', 'CABLE', 'PROPERTY_TAX', 'FEDERAL_ZONE', 'ALARM', 'OTHER') NOT NULL,
|
|
`accountNumber` VARCHAR(191) NULL,
|
|
`meterNumber` VARCHAR(191) NULL,
|
|
`route` VARCHAR(191) NULL,
|
|
`dueDay` VARCHAR(191) NULL,
|
|
`active` BOOLEAN NOT NULL DEFAULT true,
|
|
`notes` TEXT NULL,
|
|
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `service_documents` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`propertyId` VARCHAR(191) NOT NULL,
|
|
`documentType` VARCHAR(191) NOT NULL,
|
|
`storageKey` VARCHAR(191) NOT NULL,
|
|
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `trust_accounts` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`propertyId` VARCHAR(191) NOT NULL,
|
|
`bankName` VARCHAR(191) NULL,
|
|
`trustNumber` VARCHAR(191) NULL,
|
|
`bankFee` DECIMAL(12, 2) NULL,
|
|
`dueDate1` DATETIME(3) NULL,
|
|
`dueDate2` DATETIME(3) NULL,
|
|
|
|
UNIQUE INDEX `trust_accounts_propertyId_key`(`propertyId`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `type_transactions` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`nameEn` VARCHAR(191) NOT NULL,
|
|
`nameEs` VARCHAR(191) NULL,
|
|
`isService` BOOLEAN NOT NULL DEFAULT false,
|
|
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `transactions` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`customerId` VARCHAR(191) NOT NULL,
|
|
`domain` ENUM('UTILITY', 'INSURANCE', 'TRUST') NOT NULL,
|
|
`typeId` VARCHAR(191) NULL,
|
|
`transactionDate` DATETIME(3) NOT NULL,
|
|
`period` VARCHAR(191) NULL,
|
|
`reference` VARCHAR(191) NULL,
|
|
`amount` DECIMAL(12, 2) NOT NULL,
|
|
`currency` ENUM('USD', 'MXN') NOT NULL DEFAULT 'MXN',
|
|
`exchangeRate` DECIMAL(10, 4) NULL,
|
|
`checkNumber` VARCHAR(191) NULL,
|
|
`message` TEXT NULL,
|
|
`outstanding` BOOLEAN NOT NULL DEFAULT false,
|
|
`captureSource` ENUM('MANUAL', 'BATCH', 'OCR') NULL,
|
|
`captureRef` VARCHAR(191) NULL,
|
|
`voidedAt` DATETIME(3) NULL,
|
|
`voidedById` VARCHAR(191) NULL,
|
|
`legacySourceDb` VARCHAR(191) NULL,
|
|
`legacySourceTable` VARCHAR(191) NULL,
|
|
`legacyId` VARCHAR(191) NULL,
|
|
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
|
|
INDEX `transactions_customerId_transactionDate_idx`(`customerId`, `transactionDate`),
|
|
INDEX `transactions_checkNumber_idx`(`checkNumber`),
|
|
INDEX `transactions_captureRef_idx`(`captureRef`),
|
|
UNIQUE INDEX `transactions_legacySourceDb_legacySourceTable_legacyId_key`(`legacySourceDb`, `legacySourceTable`, `legacyId`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `exchange_rates` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`rate` DECIMAL(10, 4) NOT NULL,
|
|
`effectiveDate` DATETIME(3) NOT NULL,
|
|
`effectiveHour` DATETIME(3) NULL,
|
|
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `business_line_categories` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`name` VARCHAR(191) NOT NULL,
|
|
|
|
UNIQUE INDEX `business_line_categories_name_key`(`name`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `banks` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`name` VARCHAR(191) NOT NULL,
|
|
`country` VARCHAR(191) NULL,
|
|
|
|
UNIQUE INDEX `banks_name_key`(`name`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `bank_accounts` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`bankId` VARCHAR(191) NOT NULL,
|
|
`label` VARCHAR(191) NOT NULL,
|
|
`currency` ENUM('USD', 'MXN') NOT NULL,
|
|
`businessLine` ENUM('UTILITY', 'INSURANCE', 'TRUST') NULL,
|
|
`active` BOOLEAN NOT NULL DEFAULT true,
|
|
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `bank_transactions` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`bankAccountId` VARCHAR(191) NOT NULL,
|
|
`transactionDate` DATETIME(3) NOT NULL,
|
|
`transactionType` VARCHAR(191) NULL,
|
|
`reference` VARCHAR(191) NULL,
|
|
`concept` VARCHAR(191) NULL,
|
|
`amount` DECIMAL(12, 2) NOT NULL,
|
|
`categoryId` VARCHAR(191) NULL,
|
|
`cleared` BOOLEAN NOT NULL DEFAULT false,
|
|
`transferred` BOOLEAN NOT NULL DEFAULT false,
|
|
`notes` TEXT NULL,
|
|
`amountInWords` VARCHAR(191) NULL,
|
|
`voidedAt` DATETIME(3) NULL,
|
|
`voidedById` VARCHAR(191) NULL,
|
|
`legacySourceTable` VARCHAR(191) NULL,
|
|
`legacyId` VARCHAR(191) NULL,
|
|
|
|
INDEX `bank_transactions_bankAccountId_transactionDate_idx`(`bankAccountId`, `transactionDate`),
|
|
UNIQUE INDEX `bank_transactions_legacySourceTable_legacyId_key`(`legacySourceTable`, `legacyId`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `users` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`name` VARCHAR(191) NOT NULL,
|
|
`email` VARCHAR(191) NOT NULL,
|
|
`passwordHash` VARCHAR(191) NOT NULL,
|
|
`role` ENUM('ADMIN', 'MANAGER', 'STAFF', 'VIEWER') NOT NULL DEFAULT 'STAFF',
|
|
`active` BOOLEAN NOT NULL DEFAULT true,
|
|
`uiScale` DOUBLE NOT NULL DEFAULT 1,
|
|
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`updatedAt` DATETIME(3) NOT NULL,
|
|
|
|
UNIQUE INDEX `users_email_key`(`email`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `activity_logs` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`userId` VARCHAR(191) NULL,
|
|
`event` VARCHAR(191) NOT NULL,
|
|
`level` VARCHAR(191) NOT NULL,
|
|
`message` JSON NULL,
|
|
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `email_templates` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`name` VARCHAR(191) NOT NULL,
|
|
`subject` VARCHAR(191) NOT NULL,
|
|
`templateSource` TEXT NOT NULL,
|
|
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `email_campaigns` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`campaignName` VARCHAR(191) NOT NULL,
|
|
`subject` VARCHAR(191) NULL,
|
|
`body` TEXT NULL,
|
|
`status` VARCHAR(191) NOT NULL DEFAULT 'in_progress',
|
|
`emailSentCount` INTEGER NOT NULL DEFAULT 0,
|
|
`createdAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `email_log` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`customerId` VARCHAR(191) NULL,
|
|
`emailAddress` VARCHAR(191) NULL,
|
|
`emailType` VARCHAR(191) NULL,
|
|
`requestBody` TEXT NULL,
|
|
`responseBody` TEXT NULL,
|
|
`sentAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- CreateTable
|
|
CREATE TABLE `ops_jobs` (
|
|
`id` VARCHAR(191) NOT NULL,
|
|
`kind` ENUM('BACKUP', 'RESTORE', 'REIMPORT', 'SYNC') NOT NULL,
|
|
`status` ENUM('RUNNING', 'SUCCESS', 'FAILED') NOT NULL DEFAULT 'RUNNING',
|
|
`log` LONGTEXT NOT NULL,
|
|
`params` JSON NULL,
|
|
`createdById` VARCHAR(191) NULL,
|
|
`startedAt` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3),
|
|
`finishedAt` DATETIME(3) NULL,
|
|
|
|
INDEX `ops_jobs_status_idx`(`status`),
|
|
INDEX `ops_jobs_startedAt_idx`(`startedAt`),
|
|
PRIMARY KEY (`id`)
|
|
) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `customer_legacy_refs` ADD CONSTRAINT `customer_legacy_refs_customerId_fkey` FOREIGN KEY (`customerId`) REFERENCES `customers`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `policies` ADD CONSTRAINT `policies_customerId_fkey` FOREIGN KEY (`customerId`) REFERENCES `customers`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `policies` ADD CONSTRAINT `policies_policyTypeId_fkey` FOREIGN KEY (`policyTypeId`) REFERENCES `policy_types`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `policies` ADD CONSTRAINT `policies_insuranceProviderId_fkey` FOREIGN KEY (`insuranceProviderId`) REFERENCES `insurance_providers`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `renewal_notices` ADD CONSTRAINT `renewal_notices_policyId_fkey` FOREIGN KEY (`policyId`) REFERENCES `policies`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `policy_payment_installments` ADD CONSTRAINT `policy_payment_installments_policyId_fkey` FOREIGN KEY (`policyId`) REFERENCES `policies`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `vehicles` ADD CONSTRAINT `vehicles_customerId_fkey` FOREIGN KEY (`customerId`) REFERENCES `customers`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `vehicles` ADD CONSTRAINT `vehicles_policyId_fkey` FOREIGN KEY (`policyId`) REFERENCES `policies`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `insured_drivers` ADD CONSTRAINT `insured_drivers_policyId_fkey` FOREIGN KEY (`policyId`) REFERENCES `policies`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `policy_beneficiaries` ADD CONSTRAINT `policy_beneficiaries_policyId_fkey` FOREIGN KEY (`policyId`) REFERENCES `policies`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `claims` ADD CONSTRAINT `claims_policyId_fkey` FOREIGN KEY (`policyId`) REFERENCES `policies`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `claims` ADD CONSTRAINT `claims_adjusterId_fkey` FOREIGN KEY (`adjusterId`) REFERENCES `adjusters`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `policy_documents` ADD CONSTRAINT `policy_documents_policyId_fkey` FOREIGN KEY (`policyId`) REFERENCES `policies`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `properties` ADD CONSTRAINT `properties_customerId_fkey` FOREIGN KEY (`customerId`) REFERENCES `customers`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `properties` ADD CONSTRAINT `properties_policyId_fkey` FOREIGN KEY (`policyId`) REFERENCES `policies`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `property_services` ADD CONSTRAINT `property_services_propertyId_fkey` FOREIGN KEY (`propertyId`) REFERENCES `properties`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `service_documents` ADD CONSTRAINT `service_documents_propertyId_fkey` FOREIGN KEY (`propertyId`) REFERENCES `properties`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `trust_accounts` ADD CONSTRAINT `trust_accounts_propertyId_fkey` FOREIGN KEY (`propertyId`) REFERENCES `properties`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `transactions` ADD CONSTRAINT `transactions_customerId_fkey` FOREIGN KEY (`customerId`) REFERENCES `customers`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `transactions` ADD CONSTRAINT `transactions_typeId_fkey` FOREIGN KEY (`typeId`) REFERENCES `type_transactions`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `bank_accounts` ADD CONSTRAINT `bank_accounts_bankId_fkey` FOREIGN KEY (`bankId`) REFERENCES `banks`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `bank_transactions` ADD CONSTRAINT `bank_transactions_bankAccountId_fkey` FOREIGN KEY (`bankAccountId`) REFERENCES `bank_accounts`(`id`) ON DELETE RESTRICT ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `bank_transactions` ADD CONSTRAINT `bank_transactions_categoryId_fkey` FOREIGN KEY (`categoryId`) REFERENCES `business_line_categories`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|
|
-- AddForeignKey
|
|
ALTER TABLE `activity_logs` ADD CONSTRAINT `activity_logs_userId_fkey` FOREIGN KEY (`userId`) REFERENCES `users`(`id`) ON DELETE SET NULL ON UPDATE CASCADE;
|
|
|