/** * One-off: fill Women Clothes category tree for Mana Collection. * Run: npx tsx scripts/fill-women-categories.ts */ import { PrismaClient } from "@prisma/client"; const prisma = new PrismaClient(); const WOMEN_ID = "cmtrlmy1r0003qmyebijmqbqt"; const PANTS_ID = "cmtrlo4dn0009qmye6ere4659"; const MANTEL_ID = "cmtrln6d80005qmye97lzhc01"; const JEANS_ID = "cmtrlonpc000bqmyexzvqd500"; async function ensureChild( storeId: string, parentId: string, nameFa: string, nameEn: string, sortOrder: number, ) { const existing = await prisma.category.findFirst({ where: { storeId, parentId, nameFa }, }); if (existing) { return prisma.category.update({ where: { id: existing.id }, data: { nameEn, sortOrder }, }); } return prisma.category.create({ data: { storeId, parentId, nameFa, nameEn, sortOrder }, }); } async function main() { const women = await prisma.category.findUnique({ where: { id: WOMEN_ID } }); if (!women) throw new Error("Women category not found"); const { storeId } = women; await prisma.category.update({ where: { id: WOMEN_ID }, data: { nameEn: "Women Clothes", sortOrder: 0 }, }); const tops: Array<{ nameFa: string; nameEn: string; sortOrder: number; id?: string; }> = [ { nameFa: "شلوار", nameEn: "Pants", sortOrder: 0, id: PANTS_ID }, { nameFa: "مانتو", nameEn: "Mantel", sortOrder: 1, id: MANTEL_ID }, { nameFa: "پالتو و کت", nameEn: "Coats", sortOrder: 2 }, { nameFa: "پیراهن", nameEn: "Dress", sortOrder: 3 }, { nameFa: "شومیز", nameEn: "Blouse", sortOrder: 4 }, { nameFa: "تی‌شرت", nameEn: "T-Shirt", sortOrder: 5 }, { nameFa: "دامن", nameEn: "Skirt", sortOrder: 6 }, { nameFa: "لباس مجلسی", nameEn: "Formal Dress", sortOrder: 7 }, { nameFa: "کت و شلوار", nameEn: "Suit", sortOrder: 8 }, { nameFa: "کیف", nameEn: "Bag", sortOrder: 9 }, { nameFa: "عینک", nameEn: "Glasses", sortOrder: 10 }, { nameFa: "جوراب", nameEn: "Socks", sortOrder: 11 }, ]; for (const row of tops) { if (row.id) { await prisma.category.update({ where: { id: row.id }, data: { nameFa: row.nameFa, nameEn: row.nameEn, sortOrder: row.sortOrder, }, }); } else { await ensureChild( storeId, WOMEN_ID, row.nameFa, row.nameEn, row.sortOrder, ); } } await prisma.category.update({ where: { id: JEANS_ID }, data: { nameFa: "شلوار جین", nameEn: "Jean Pants", sortOrder: 0 }, }); await ensureChild(storeId, PANTS_ID, "شلوار پارچه‌ای", "Fabric Pants", 1); await ensureChild(storeId, PANTS_ID, "شلوارک", "Shorts", 2); await ensureChild(storeId, MANTEL_ID, "بهاره", "Spring", 0); await ensureChild(storeId, MANTEL_ID, "پاییزه", "Autumn", 1); await ensureChild(storeId, MANTEL_ID, "مجلسی", "Formal", 2); const children = await prisma.category.findMany({ where: { parentId: WOMEN_ID }, orderBy: { sortOrder: "asc" }, select: { nameFa: true, nameEn: true, sortOrder: true }, }); console.log("Women children:", children.length); for (const c of children) { console.log(` ${c.sortOrder}. ${c.nameFa} / ${c.nameEn}`); } } main() .catch((err) => { console.error(err); process.exit(1); }) .finally(() => prisma.$disconnect());