fix(schema): ensureTables() fügt jetzt fehlende Spalten nachträglich hinzu – verhindert altes Schema-Problem
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 11m16s
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 11m16s
This commit is contained in:
@@ -32,6 +32,32 @@ async function ensureTables() {
|
||||
"tenantId" TEXT NOT NULL REFERENCES tenants(id) ON DELETE CASCADE
|
||||
)
|
||||
`)
|
||||
|
||||
const symbolCols = [
|
||||
`ALTER TABLE tenant_symbols ADD COLUMN IF NOT EXISTS "name" TEXT`,
|
||||
`ALTER TABLE tenant_symbols ADD COLUMN IF NOT EXISTS "svgPath" TEXT`,
|
||||
`ALTER TABLE tenant_symbols ADD COLUMN IF NOT EXISTS "isUploaded" BOOLEAN NOT NULL DEFAULT false`,
|
||||
`ALTER TABLE tenant_symbols ADD COLUMN IF NOT EXISTS "categoryId" TEXT`,
|
||||
`ALTER TABLE tenant_symbols ADD COLUMN IF NOT EXISTS "migratedFromIconId" TEXT`,
|
||||
`ALTER TABLE tenant_symbols ADD COLUMN IF NOT EXISTS "customName" TEXT`,
|
||||
`ALTER TABLE tenant_symbols ADD COLUMN IF NOT EXISTS "sortOrder" INTEGER`,
|
||||
`ALTER TABLE tenant_symbols ADD COLUMN IF NOT EXISTS "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP`,
|
||||
`ALTER TABLE tenant_symbols ADD COLUMN IF NOT EXISTS "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP`,
|
||||
]
|
||||
for (const sql of symbolCols) {
|
||||
try { await prisma.$executeRawUnsafe(sql) } catch (e) { /* ignore */ }
|
||||
}
|
||||
|
||||
const catCols = [
|
||||
`ALTER TABLE tenant_categories ADD COLUMN IF NOT EXISTS "description" TEXT`,
|
||||
`ALTER TABLE tenant_categories ADD COLUMN IF NOT EXISTS "sortOrder" INTEGER NOT NULL DEFAULT 0`,
|
||||
`ALTER TABLE tenant_categories ADD COLUMN IF NOT EXISTS "isActive" BOOLEAN NOT NULL DEFAULT true`,
|
||||
`ALTER TABLE tenant_categories ADD COLUMN IF NOT EXISTS "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP`,
|
||||
`ALTER TABLE tenant_categories ADD COLUMN IF NOT EXISTS "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP`,
|
||||
]
|
||||
for (const sql of catCols) {
|
||||
try { await prisma.$executeRawUnsafe(sql) } catch (e) { /* ignore */ }
|
||||
}
|
||||
}
|
||||
|
||||
export async function GET() {
|
||||
@@ -93,7 +119,7 @@ export async function GET() {
|
||||
`SELECT ts.*, tc.id as "catId", tc.name as "catName"
|
||||
FROM tenant_symbols ts
|
||||
LEFT JOIN tenant_categories tc ON ts."categoryId" = tc.id
|
||||
WHERE ts."tenantId" = $1 AND ts."isActive" = true
|
||||
WHERE ts."tenantId" = $1 AND (ts."isActive" IS NULL OR ts."isActive" = true)
|
||||
ORDER BY COALESCE(tc."sortOrder", 9999) ASC, COALESCE(ts."sortOrder", 9999) ASC`,
|
||||
tenantId
|
||||
) as any[]
|
||||
|
||||
@@ -14,6 +14,7 @@ async function getTenantId() {
|
||||
}
|
||||
|
||||
async function ensureTables() {
|
||||
// ─── Create tables (idempotent) ───
|
||||
await prisma.$executeRawUnsafe(`
|
||||
CREATE TABLE IF NOT EXISTS tenant_symbols (
|
||||
id TEXT PRIMARY KEY DEFAULT gen_random_uuid(),
|
||||
@@ -43,6 +44,33 @@ async function ensureTables() {
|
||||
"tenantId" TEXT NOT NULL REFERENCES tenants(id) ON DELETE CASCADE
|
||||
)
|
||||
`)
|
||||
|
||||
// ─── Add missing columns (idempotent) ───
|
||||
const symbolCols = [
|
||||
`ALTER TABLE tenant_symbols ADD COLUMN IF NOT EXISTS "name" TEXT`,
|
||||
`ALTER TABLE tenant_symbols ADD COLUMN IF NOT EXISTS "svgPath" TEXT`,
|
||||
`ALTER TABLE tenant_symbols ADD COLUMN IF NOT EXISTS "isUploaded" BOOLEAN NOT NULL DEFAULT false`,
|
||||
`ALTER TABLE tenant_symbols ADD COLUMN IF NOT EXISTS "categoryId" TEXT`,
|
||||
`ALTER TABLE tenant_symbols ADD COLUMN IF NOT EXISTS "migratedFromIconId" TEXT`,
|
||||
`ALTER TABLE tenant_symbols ADD COLUMN IF NOT EXISTS "customName" TEXT`,
|
||||
`ALTER TABLE tenant_symbols ADD COLUMN IF NOT EXISTS "sortOrder" INTEGER`,
|
||||
`ALTER TABLE tenant_symbols ADD COLUMN IF NOT EXISTS "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP`,
|
||||
`ALTER TABLE tenant_symbols ADD COLUMN IF NOT EXISTS "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP`,
|
||||
]
|
||||
for (const sql of symbolCols) {
|
||||
try { await prisma.$executeRawUnsafe(sql) } catch (e) { /* ignore */ }
|
||||
}
|
||||
|
||||
const catCols = [
|
||||
`ALTER TABLE tenant_categories ADD COLUMN IF NOT EXISTS "description" TEXT`,
|
||||
`ALTER TABLE tenant_categories ADD COLUMN IF NOT EXISTS "sortOrder" INTEGER NOT NULL DEFAULT 0`,
|
||||
`ALTER TABLE tenant_categories ADD COLUMN IF NOT EXISTS "isActive" BOOLEAN NOT NULL DEFAULT true`,
|
||||
`ALTER TABLE tenant_categories ADD COLUMN IF NOT EXISTS "createdAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP`,
|
||||
`ALTER TABLE tenant_categories ADD COLUMN IF NOT EXISTS "updatedAt" TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP`,
|
||||
]
|
||||
for (const sql of catCols) {
|
||||
try { await prisma.$executeRawUnsafe(sql) } catch (e) { /* ignore */ }
|
||||
}
|
||||
}
|
||||
|
||||
// ─── GET ────────────────────────────────────────────────────────────────────
|
||||
@@ -95,7 +123,7 @@ export async function GET(req: NextRequest) {
|
||||
|
||||
// Get categories for ordering
|
||||
const categories: any[] = await prisma.$queryRawUnsafe(
|
||||
`SELECT * FROM tenant_categories WHERE "tenantId" = $1 AND "isActive" = true ORDER BY "sortOrder" ASC`,
|
||||
`SELECT * FROM tenant_categories WHERE "tenantId" = $1 AND ("isActive" IS NULL OR "isActive" = true) ORDER BY "sortOrder" ASC`,
|
||||
tenantId
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user