feat(schema): Phase 1 Symbol Architecture — SymbolTemplate, TenantCategory, TenantSymbol refactor + seed + migration scripts
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 14m40s
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 14m40s
This commit is contained in:
@@ -90,6 +90,7 @@ model Tenant {
|
||||
iconCategories IconCategory[]
|
||||
iconAssets IconAsset[]
|
||||
tenantSymbols TenantSymbol[]
|
||||
tenantCategories TenantCategory[]
|
||||
upgradeRequests UpgradeRequest[]
|
||||
dictionaryEntries DictionaryEntry[]
|
||||
rapports Rapport[]
|
||||
@@ -392,10 +393,53 @@ model TenantSymbol {
|
||||
iconId String
|
||||
icon IconAsset @relation(fields: [iconId], references: [id], onDelete: Cascade)
|
||||
|
||||
// New fields for Phase 1 Symbol Architecture
|
||||
categoryId String?
|
||||
category TenantCategory? @relation(fields: [categoryId], references: [id], onDelete: SetNull)
|
||||
|
||||
name String? // Display name (migrated from customName || icon.name)
|
||||
svgPath String? // e.g. "signaturen/TLF.svg" or tenant-specific MinIO key
|
||||
isUploaded Boolean @default(false)
|
||||
migratedFromIconId String?
|
||||
|
||||
@@index([tenantId])
|
||||
@@index([categoryId])
|
||||
@@map("tenant_symbols")
|
||||
}
|
||||
|
||||
// ─── Symbol Templates (global read-only packages) ─────────
|
||||
|
||||
model SymbolTemplate {
|
||||
id String @id @default(uuid())
|
||||
packageId String // e.g. "feuerwehr-ch"
|
||||
packageName String // e.g. "Feuerwehr Schweiz"
|
||||
categoryName String // e.g. "Fahrzeuge"
|
||||
name String
|
||||
svgPath String // relative path in public/ or MinIO key
|
||||
tags String[] @default([])
|
||||
sortOrder Int @default(0)
|
||||
|
||||
@@index([packageId])
|
||||
@@map("symbol_templates")
|
||||
}
|
||||
|
||||
// ─── Tenant Categories (per-tenant, user-managed) ─────────
|
||||
|
||||
model TenantCategory {
|
||||
id String @id @default(uuid())
|
||||
tenantId String
|
||||
tenant Tenant @relation(fields: [tenantId], references: [id], onDelete: Cascade)
|
||||
name String
|
||||
sortOrder Int @default(0)
|
||||
icon String? // Optional emoji or Lucide icon name for UI
|
||||
|
||||
symbols TenantSymbol[]
|
||||
|
||||
@@unique([tenantId, name])
|
||||
@@index([tenantId])
|
||||
@@map("tenant_categories")
|
||||
}
|
||||
|
||||
// ─── Dictionary (Global + Tenant word library) ────────────
|
||||
|
||||
model DictionaryEntry {
|
||||
|
||||
Reference in New Issue
Block a user