bf9e827f85
Deploy backend, frontend, PostgreSQL, and Redis on Kubernetes with optional Ingress/TLS, SQL migration hooks, and public registry exposure at repo.3fase.ir. Co-authored-by: Cursor <cursoragent@cursor.com>
53 lines
1.8 KiB
SQL
53 lines
1.8 KiB
SQL
CREATE TABLE IF NOT EXISTS invoices (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
"invoiceNumber" VARCHAR NOT NULL UNIQUE,
|
|
"userId" UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
"applicationId" UUID REFERENCES applications(id) ON DELETE SET NULL,
|
|
reason VARCHAR NOT NULL DEFAULT 'manual',
|
|
status VARCHAR NOT NULL DEFAULT 'issued',
|
|
"paymentMethod" VARCHAR,
|
|
subtotal DECIMAL(14, 2) NOT NULL DEFAULT 0,
|
|
total DECIMAL(14, 2) NOT NULL DEFAULT 0,
|
|
"paidAmount" DECIMAL(14, 2) NOT NULL DEFAULT 0,
|
|
"dueAmount" DECIMAL(14, 2) NOT NULL DEFAULT 0,
|
|
"dueDate" TIMESTAMPTZ,
|
|
"paidAt" TIMESTAMPTZ,
|
|
"gatewayTrackingCode" VARCHAR,
|
|
"gatewayReference" VARCHAR,
|
|
"adminNote" VARCHAR,
|
|
"statusReason" VARCHAR,
|
|
metadata JSONB,
|
|
"createdAt" TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
"updatedAt" TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
CREATE TABLE IF NOT EXISTS invoice_lines (
|
|
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
"invoiceId" UUID NOT NULL REFERENCES invoices(id) ON DELETE CASCADE,
|
|
label VARCHAR NOT NULL,
|
|
description VARCHAR,
|
|
quantity INT NOT NULL DEFAULT 1,
|
|
"unitAmount" DECIMAL(14, 2) NOT NULL DEFAULT 0,
|
|
amount DECIMAL(14, 2) NOT NULL DEFAULT 0,
|
|
metadata JSONB,
|
|
"createdAt" TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
);
|
|
|
|
ALTER TABLE wallet_transactions
|
|
ADD COLUMN IF NOT EXISTS "invoiceId" UUID REFERENCES invoices(id) ON DELETE SET NULL;
|
|
|
|
ALTER TABLE wallet_transactions
|
|
ADD COLUMN IF NOT EXISTS "gatewayTrackingCode" VARCHAR;
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_invoices_user_status_created
|
|
ON invoices ("userId", status, "createdAt" DESC);
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_invoices_application
|
|
ON invoices ("applicationId");
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_invoice_lines_invoice
|
|
ON invoice_lines ("invoiceId");
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_wallet_transactions_invoice
|
|
ON wallet_transactions ("invoiceId");
|