Compare commits

...

2 commits

Author SHA1 Message Date
Tero Halla-aho
ed67f4305a Add migration preflight and sync prod DB
Some checks failed
CI / checks (push) Waiting to run
CI / checks (pull_request) Has been cancelled
2025-12-20 22:59:48 +02:00
Tero Halla-aho
dabe6b6268 Restore agent billing migration 2025-12-20 22:35:30 +02:00
3 changed files with 48 additions and 2 deletions

View file

@ -97,3 +97,9 @@
- Navbar: combined admin actions (approvals/users/monitoring) under a single “Admin” dropdown menu.
- Pricing copy: treat listing prices as indicative “starting from” values and show starting-from line on browse cards + home latest carousel.
- Site settings page added with a toggle to require login for listing contact details; contact info is now hidden from logged-out visitors.
## 2025-12-20 — Migration history repair
- Restored missing migration `20251212_agent_billing` (agent billing columns + listing billing settings table) so Prisma history matches the DB.
- Reconciled test DB migration history: aligned checksum for `20251212_agent_billing` and marked `20260310_site_settings` and `20260311_billing_preferences` as applied to stop Prisma errors and surface listings again.
- Applied the same agent billing schema to staging/prod DB (`lomavuokraus`) and marked the migration as applied; Prisma status now clean there too.
- Deploy script now runs a Prisma migration status preflight using DATABASE_URL from env or in-cluster secret and fails fast on drift before applying manifests.

View file

@ -71,7 +71,7 @@ APP_VERSION="${APP_VERSION:-$(echo \"$IMAGE\" | awk -F: '{print $NF}')}"
export K8S_NAMESPACE APP_HOST API_HOST NEXT_PUBLIC_SITE_URL NEXT_PUBLIC_API_BASE APP_ENV CLUSTER_ISSUER INGRESS_CLASS APP_REPLICAS K8S_IMAGE APP_VERSION
maybe_run_prisma_migrations() {
resolve_database_url() {
local db_url="${DATABASE_URL:-}"
if [[ -z "$db_url" ]]; then
# If DATABASE_URL isn't available locally, try to reuse the in-cluster secret.
@ -87,6 +87,25 @@ maybe_run_prisma_migrations() {
fi
fi
echo "$db_url"
}
prisma_preflight() {
local db_url="$1"
if [[ -z "$db_url" ]]; then
echo "DATABASE_URL unavailable; skipping Prisma status preflight" >&2
return 0
fi
echo "Prisma preflight: checking migration status for APP_ENV=$APP_ENV (namespace=$K8S_NAMESPACE)"
if ! DATABASE_URL="$db_url" npx prisma migrate status >/dev/null; then
echo "Prisma migrate status failed. Fix migration history before deploying." >&2
exit 1
fi
}
maybe_run_prisma_migrations() {
local db_url="$1"
if [[ -n "$db_url" ]]; then
echo "Running Prisma migrations for APP_ENV=$APP_ENV (namespace=$K8S_NAMESPACE)"
DATABASE_URL="$db_url" npx prisma migrate deploy
@ -95,7 +114,9 @@ maybe_run_prisma_migrations() {
fi
}
maybe_run_prisma_migrations
DB_URL_FOR_DEPLOY="$(resolve_database_url)"
prisma_preflight "$DB_URL_FOR_DEPLOY"
maybe_run_prisma_migrations "$DB_URL_FOR_DEPLOY"
TMP_MANIFEST=$(mktemp)
envsubst < k8s/app.yaml > "$TMP_MANIFEST"

View file

@ -0,0 +1,19 @@
-- Agent billing preferences and per-listing overrides (legacy)
ALTER TABLE "User"
ADD COLUMN "agentBillingEnabled" BOOLEAN NOT NULL DEFAULT FALSE,
ADD COLUMN "agentBankAccount" TEXT,
ADD COLUMN "agentVatBreakdownRequired" BOOLEAN NOT NULL DEFAULT FALSE,
ADD COLUMN "agentUseListingOverrides" BOOLEAN NOT NULL DEFAULT FALSE;
CREATE TABLE "ListingBillingSettings" (
"id" TEXT NOT NULL,
"listingId" TEXT NOT NULL,
"bankAccount" TEXT,
"vatBreakdownRequired" BOOLEAN NOT NULL DEFAULT FALSE,
"createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
"updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT "ListingBillingSettings_pkey" PRIMARY KEY ("id"),
CONSTRAINT "ListingBillingSettings_listingId_key" UNIQUE ("listingId"),
CONSTRAINT "ListingBillingSettings_listingId_fkey" FOREIGN KEY ("listingId") REFERENCES "Listing"("id") ON DELETE CASCADE ON UPDATE CASCADE
);