fix(seed/docker): repair production symbol loss incident
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 21m31s
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 21m31s
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { PrismaClient, Role } from '@prisma/client'
|
||||
import { PrismaClient } from '@prisma/client'
|
||||
import bcrypt from 'bcryptjs'
|
||||
|
||||
const prisma = new PrismaClient()
|
||||
@@ -18,7 +18,7 @@ async function main() {
|
||||
email: 'admin@lageplan.local',
|
||||
name: 'Administrator',
|
||||
password: adminPassword,
|
||||
role: Role.ADMIN,
|
||||
role: 'SERVER_ADMIN',
|
||||
},
|
||||
})
|
||||
|
||||
@@ -29,7 +29,7 @@ async function main() {
|
||||
email: 'editor@lageplan.local',
|
||||
name: 'Einsatzleiter',
|
||||
password: editorPassword,
|
||||
role: Role.EDITOR,
|
||||
role: 'TENANT_ADMIN',
|
||||
},
|
||||
})
|
||||
|
||||
@@ -40,28 +40,28 @@ async function main() {
|
||||
email: 'viewer@lageplan.local',
|
||||
name: 'Beobachter',
|
||||
password: viewerPassword,
|
||||
role: Role.VIEWER,
|
||||
role: 'OPERATOR',
|
||||
},
|
||||
})
|
||||
|
||||
console.log('✅ Users created:', { admin: admin.email, editor: editor.email, viewer: viewer.email })
|
||||
|
||||
// Create icon categories
|
||||
// Create icon categories with stable IDs (same logic as seed.js)
|
||||
const categories = [
|
||||
{ name: 'Feuer', description: 'Brand- und Feuersymbole', sortOrder: 1 },
|
||||
{ name: 'Wasser', description: 'Wasser- und Überflutungssymbole', sortOrder: 2 },
|
||||
{ name: 'Gefahrstoffe', description: 'Chemie- und Gefahrstoffsymbole', sortOrder: 3 },
|
||||
{ name: 'Verkehr', description: 'Verkehrs- und Unfallsymbole', sortOrder: 4 },
|
||||
{ name: 'Personen', description: 'Personen- und Rettungssymbole', sortOrder: 5 },
|
||||
{ name: 'Fahrzeuge', description: 'Einsatzfahrzeuge und Geräte', sortOrder: 6 },
|
||||
{ name: 'Infrastruktur', description: 'Gebäude und Infrastruktursymbole', sortOrder: 7 },
|
||||
{ name: 'Taktik', description: 'Taktische Zeichen und Symbole', sortOrder: 8 },
|
||||
{ name: 'Eigene', description: 'Benutzerdefinierte Symbole', sortOrder: 99 },
|
||||
{ id: 'feuer', name: 'Feuer', description: 'Brand- und Feuersymbole', sortOrder: 1 },
|
||||
{ id: 'wasser', name: 'Wasser', description: 'Wasser- und Überflutungssymbole', sortOrder: 2 },
|
||||
{ id: 'gefahrstoffe', name: 'Gefahrstoffe', description: 'Chemie- und Gefahrstoffsymbole', sortOrder: 3 },
|
||||
{ id: 'verkehr', name: 'Verkehr', description: 'Verkehrs- und Unfallsymbole', sortOrder: 4 },
|
||||
{ id: 'personen', name: 'Personen', description: 'Personen- und Rettungssymbole', sortOrder: 5 },
|
||||
{ id: 'fahrzeuge', name: 'Fahrzeuge', description: 'Einsatzfahrzeuge und Geräte', sortOrder: 6 },
|
||||
{ id: 'infrastruktur', name: 'Infrastruktur', description: 'Gebäude und Infrastruktursymbole', sortOrder: 7 },
|
||||
{ id: 'taktik', name: 'Taktik', description: 'Taktische Zeichen und Symbole', sortOrder: 8 },
|
||||
{ id: 'eigene', name: 'Eigene', description: 'Benutzerdefinierte Symbole', sortOrder: 99 },
|
||||
]
|
||||
|
||||
for (const cat of categories) {
|
||||
await prisma.iconCategory.upsert({
|
||||
where: { name: cat.name },
|
||||
where: { id: cat.id },
|
||||
update: { description: cat.description, sortOrder: cat.sortOrder },
|
||||
create: cat,
|
||||
})
|
||||
@@ -70,14 +70,14 @@ async function main() {
|
||||
console.log('✅ Icon categories created:', categories.length)
|
||||
|
||||
// Get category IDs for system icons
|
||||
const feuerCat = await prisma.iconCategory.findUnique({ where: { name: 'Feuer' } })
|
||||
const wasserCat = await prisma.iconCategory.findUnique({ where: { name: 'Wasser' } })
|
||||
const gefahrstoffeCat = await prisma.iconCategory.findUnique({ where: { name: 'Gefahrstoffe' } })
|
||||
const verkehrCat = await prisma.iconCategory.findUnique({ where: { name: 'Verkehr' } })
|
||||
const personenCat = await prisma.iconCategory.findUnique({ where: { name: 'Personen' } })
|
||||
const fahrzeugeCat = await prisma.iconCategory.findUnique({ where: { name: 'Fahrzeuge' } })
|
||||
const infrastrukturCat = await prisma.iconCategory.findUnique({ where: { name: 'Infrastruktur' } })
|
||||
const taktikCat = await prisma.iconCategory.findUnique({ where: { name: 'Taktik' } })
|
||||
const feuerCat = await prisma.iconCategory.findUnique({ where: { id: 'feuer' } })
|
||||
const wasserCat = await prisma.iconCategory.findUnique({ where: { id: 'wasser' } })
|
||||
const gefahrstoffeCat = await prisma.iconCategory.findUnique({ where: { id: 'gefahrstoffe' } })
|
||||
const verkehrCat = await prisma.iconCategory.findUnique({ where: { id: 'verkehr' } })
|
||||
const personenCat = await prisma.iconCategory.findUnique({ where: { id: 'personen' } })
|
||||
const fahrzeugeCat = await prisma.iconCategory.findUnique({ where: { id: 'fahrzeuge' } })
|
||||
const infrastrukturCat = await prisma.iconCategory.findUnique({ where: { id: 'infrastruktur' } })
|
||||
const taktikCat = await prisma.iconCategory.findUnique({ where: { id: 'taktik' } })
|
||||
|
||||
// Create system icons (these use inline SVG data URIs - in production, upload to MinIO)
|
||||
const systemIcons = [
|
||||
|
||||
Reference in New Issue
Block a user