131 lines
3.5 KiB
TypeScript
131 lines
3.5 KiB
TypeScript
/**
|
|
* 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<string, Array<[string, string]>> = {
|
|
// پالتو و کت
|
|
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());
|