/** * Add subcategories under remaining women categories + men clothes. * Run: npx tsx scripts/fill-category-children.ts */ import { PrismaClient } from "@prisma/client"; const prisma = new PrismaClient(); const SUBS: Record> = { // پالتو و کت cmujwdqxd0001q9g7gbkdzp90: [ ["پالتو بلند", "Long Coat"], ["کت کوتاه", "Short Coat"], ["پالتو فوتر", "Wool Coat"], ], // پیراهن cmujwdqxh0003q9g7ywj3xtkg: [ ["پیراهن کوتاه", "Short Dress"], ["پیراهن بلند", "Long Dress"], ["پیراهن مجلسی", "Party Dress"], ], // شومیز cmujwdqxj0005q9g7dmrujmar: [ ["شومیز رسمی", "Formal Blouse"], ["شومیز روزانه", "Casual Blouse"], ["شومیز آستین کوتاه", "Short Sleeve"], ], // تی‌شرت cmujwdqxl0007q9g72fa9i1u6: [ ["تی‌شرت ساده", "Basic Tee"], ["تی‌شرت طرح‌دار", "Printed Tee"], ["تی‌شرت یقه‌دار", "Collar Tee"], ], // دامن cmujwdqxm0009q9g7dygpixfl: [ ["دامن کوتاه", "Mini Skirt"], ["دامن متوسط", "Midi Skirt"], ["دامن بلند", "Maxi Skirt"], ], // لباس مجلسی cmujwdqxn000bq9g769r3oaq2: [ ["شب", "Evening"], ["عروس", "Bridal"], ["مهمانی", "Party"], ], // کت و شلوار cmujwdqxo000dq9g7syqycf39: [ ["رسمی", "Formal"], ["نیمه‌رسمی", "Semi Formal"], ["کت تک", "Blazer"], ], // کیف cmujwdqxp000fq9g7pww4264v: [ ["کیف دستی", "Handbag"], ["کیف دوشی", "Shoulder Bag"], ["کیف پول", "Wallet"], ], // عینک cmujwdqxq000hq9g7hsyx1c6p: [ ["آفتابی", "Sunglasses"], ["طبی", "Optical"], ], // جوراب cmujwdqxr000jq9g7kesb73gy: [ ["کوتاه", "Ankle"], ["بلند", "Knee High"], ["ورزشی", "Sport"], ], }; const MEN_ID = "cmtrlp2zu000dqmyewzr566tk"; const MEN_CHILDREN: Array<[string, string]> = [ ["پیراهن", "Shirt"], ["شلوار", "Pants"], ["کت", "Jacket"], ["تی‌شرت", "T-Shirt"], ["کت و شلوار", "Suit"], ]; 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() { for (const [parentId, children] of Object.entries(SUBS)) { const parent = await prisma.category.findUnique({ where: { id: parentId } }); if (!parent) { console.warn("skip missing", parentId); continue; } for (let i = 0; i < children.length; i++) { const [nameFa, nameEn] = children[i]!; await ensureChild(parent.storeId, parentId, nameFa, nameEn, i); } console.log(`${parent.nameFa}: +${children.length}`); } const men = await prisma.category.findUnique({ where: { id: MEN_ID } }); if (men) { for (let i = 0; i < MEN_CHILDREN.length; i++) { const [nameFa, nameEn] = MEN_CHILDREN[i]!; await ensureChild(men.storeId, MEN_ID, nameFa, nameEn, i); } console.log(`لباس مردانه: +${MEN_CHILDREN.length}`); } } main() .catch((err) => { console.error(err); process.exit(1); }) .finally(() => prisma.$disconnect());