54 lines
1.4 KiB
TypeScript
54 lines
1.4 KiB
TypeScript
/**
|
|
* Ensure the six website dock category slugs exist (local / staging).
|
|
* Production already uses these slugs on shirinibalout.com.
|
|
*
|
|
* Usage: npm run ensure:dock-categories
|
|
*/
|
|
import { PrismaClient } from '@prisma/client'
|
|
|
|
const prisma = new PrismaClient()
|
|
|
|
const DOCK_CATEGORIES = [
|
|
{ nameFa: 'کیک', nameEn: 'Cake', slug: 'cake', sortOrder: 1 },
|
|
{ nameFa: 'شیرینی', nameEn: 'Pastry', slug: 'pastry', sortOrder: 2 },
|
|
{ nameFa: 'سوهان', nameEn: 'Sohan', slug: 'sohan', sortOrder: 3 },
|
|
{ nameFa: 'دسر', nameEn: 'Dessert', slug: 'dessert', sortOrder: 4 },
|
|
{ nameFa: 'شکلات', nameEn: 'Choclate', slug: 'choclate', sortOrder: 5 },
|
|
{
|
|
nameFa: 'باقلوا و حلوا',
|
|
nameEn: 'Baklava and Halva',
|
|
slug: 'baklava-and-halva',
|
|
sortOrder: 6,
|
|
},
|
|
]
|
|
|
|
async function main() {
|
|
for (const cat of DOCK_CATEGORIES) {
|
|
await prisma.category.upsert({
|
|
where: { slug: cat.slug },
|
|
create: cat,
|
|
update: {
|
|
nameFa: cat.nameFa,
|
|
nameEn: cat.nameEn,
|
|
sortOrder: cat.sortOrder,
|
|
},
|
|
})
|
|
}
|
|
|
|
const roots = await prisma.category.findMany({
|
|
where: { parentId: null },
|
|
select: { slug: true, nameFa: true, nameEn: true },
|
|
orderBy: { sortOrder: 'asc' },
|
|
})
|
|
console.log(JSON.stringify(roots, null, 2))
|
|
}
|
|
|
|
main()
|
|
.catch((err) => {
|
|
console.error(err)
|
|
process.exitCode = 1
|
|
})
|
|
.finally(async () => {
|
|
await prisma.$disconnect()
|
|
})
|