MCPcopy Create free account
hub / github.com/ethanniser/NextFaster / generateSubcategories

Function generateSubcategories

scripts/generate.ts:140–185  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

138};
139
140const generateSubcategories = async () => {
141 const data = [] as any;
142 const subcollections = (await getSubcollections()).map(
143 (c) => c.subcollections,
144 );
145
146 const promises = subcollections.map(async (subcol) => {
147 const { object } = await generateObject({
148 model: client.languageModel("gpt-4o-mini", { structuredOutputs: true }),
149 schema: z.object({
150 subcategories: z.array(z.string()),
151 }),
152 system: `You are given the name of a subcollection of products in an art supply store.
153 Your task is to generate 10 unique subcategories that belong to this subcollection.
154 Make sure the subcategory names are broad.
155
156 YOU MUST OUTPUT IN ONLY JSON.
157
158 EXAMPLE:
159
160 INPUT:
161 Subcollection Name: Art Hitory
162
163 OUTPUT:
164 { subcategories: ["Art History Books", "Art History CDs", ...] }
165
166 Remember, ONLY RETURN THE JSON of 10 unique subcategories and nothing else.
167
168 MAKE SURE THERE ARE 10 SUBCATEGORIES IN THE OUTPUT.`,
169 prompt: `Subcollection Name: ${subcol}`,
170 });
171
172 const { subcategories: sc } = object;
173 console.log(`Subcategories generated: ${sc.length}`);
174
175 const subcategoriesToAdd = sc.map((subcat: string) => ({
176 name: subcat,
177 slug: slugify(subcat, { lower: true }),
178 subcollection_id: subcol.id,
179 }));
180 data.push(...subcategoriesToAdd);
181 });
182
183 await Promise.all(promises);
184 await db.insert(subcategories).values(data).onConflictDoNothing();
185};
186
187// getSubcollections();
188// generateSubcategories();

Callers

nothing calls this directly

Calls 1

getSubcollectionsFunction · 0.85

Tested by

no test coverage detected