114 lines
3.4 KiB
TypeScript
114 lines
3.4 KiB
TypeScript
/**
|
|
* 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());
|