67 lines
3.1 KiB
SQL
67 lines
3.1 KiB
SQL
-- Add new SubscriptionStatus enum values
|
|
ALTER TYPE "SubscriptionStatus" ADD VALUE IF NOT EXISTS 'PAYMENT_PENDING';
|
|
ALTER TYPE "SubscriptionStatus" ADD VALUE IF NOT EXISTS 'SUSPENDED';
|
|
ALTER TYPE "SubscriptionStatus" ADD VALUE IF NOT EXISTS 'EXPIRED';
|
|
ALTER TYPE "SubscriptionStatus" ADD VALUE IF NOT EXISTS 'PAUSED';
|
|
|
|
-- Add new InvoiceStatus enum value
|
|
ALTER TYPE "InvoiceStatus" ADD VALUE IF NOT EXISTS 'VOIDED';
|
|
|
|
-- Extend subscriptions table (camelCase to match Prisma default)
|
|
ALTER TABLE "subscriptions"
|
|
ADD COLUMN IF NOT EXISTS "trialUsed" BOOLEAN NOT NULL DEFAULT false,
|
|
ADD COLUMN IF NOT EXISTS "paymentPendingSince" TIMESTAMP(3),
|
|
ADD COLUMN IF NOT EXISTS "paymentDueAt" TIMESTAMP(3),
|
|
ADD COLUMN IF NOT EXISTS "pastDueSince" TIMESTAMP(3),
|
|
ADD COLUMN IF NOT EXISTS "suspendedAt" TIMESTAMP(3),
|
|
ADD COLUMN IF NOT EXISTS "endedAt" TIMESTAMP(3),
|
|
ADD COLUMN IF NOT EXISTS "retryCount" INTEGER NOT NULL DEFAULT 0,
|
|
ADD COLUMN IF NOT EXISTS "maxRetryCount" INTEGER NOT NULL DEFAULT 5;
|
|
|
|
-- Extend subscription_invoices table
|
|
ALTER TABLE "subscription_invoices"
|
|
ADD COLUMN IF NOT EXISTS "providerInvoiceId" TEXT,
|
|
ADD COLUMN IF NOT EXISTS "dueAt" TIMESTAMP(3),
|
|
ADD COLUMN IF NOT EXISTS "failedAt" TIMESTAMP(3),
|
|
ADD COLUMN IF NOT EXISTS "voidedAt" TIMESTAMP(3);
|
|
|
|
-- Create subscription_events table
|
|
CREATE TABLE IF NOT EXISTS "subscription_events" (
|
|
"id" TEXT NOT NULL,
|
|
"subscriptionId" TEXT NOT NULL,
|
|
"companyId" TEXT NOT NULL,
|
|
"eventType" TEXT NOT NULL,
|
|
"source" TEXT NOT NULL DEFAULT 'system',
|
|
"payload" JSONB NOT NULL DEFAULT '{}',
|
|
"occurredAt" TIMESTAMP(3) NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
CONSTRAINT "subscription_events_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS "subscription_events_subscriptionId_idx" ON "subscription_events"("subscriptionId");
|
|
CREATE INDEX IF NOT EXISTS "subscription_events_companyId_idx" ON "subscription_events"("companyId");
|
|
|
|
ALTER TABLE "subscription_events"
|
|
ADD CONSTRAINT "subscription_events_subscriptionId_fkey"
|
|
FOREIGN KEY ("subscriptionId") REFERENCES "subscriptions"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|
|
|
|
-- Create payment_attempts table
|
|
CREATE TABLE IF NOT EXISTS "payment_attempts" (
|
|
"id" TEXT NOT NULL,
|
|
"invoiceId" TEXT NOT NULL,
|
|
"subscriptionId" TEXT NOT NULL,
|
|
"providerPaymentId" TEXT,
|
|
"status" TEXT NOT NULL,
|
|
"failureCode" TEXT,
|
|
"failureMessage" TEXT,
|
|
"attemptedAt" TIMESTAMP(3) NOT NULL,
|
|
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
CONSTRAINT "payment_attempts_pkey" PRIMARY KEY ("id")
|
|
);
|
|
|
|
CREATE INDEX IF NOT EXISTS "payment_attempts_invoiceId_idx" ON "payment_attempts"("invoiceId");
|
|
|
|
ALTER TABLE "payment_attempts"
|
|
ADD CONSTRAINT "payment_attempts_invoiceId_fkey"
|
|
FOREIGN KEY ("invoiceId") REFERENCES "subscription_invoices"("id") ON DELETE CASCADE ON UPDATE CASCADE;
|