()
| 138 | }; |
| 139 | |
| 140 | const 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(); |
nothing calls this directly
no test coverage detected