medusa-strapi-plugin 0.0.16 → 0.0.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -158,35 +158,62 @@ class StrapiModuleService {
158
158
  return await this.updateEntry(entity, entry.documentId, updatePayload);
159
159
  }
160
160
  /**
161
- * Auto-populates attribute description relations on a category if they don't exist
161
+ * Auto-populates attribute override components and relations on a category if they don't exist
162
162
  */
163
163
  async populateCategoryOverrides(categoryDocumentId, attributeValueDocumentIds) {
164
164
  if (!attributeValueDocumentIds.length)
165
165
  return;
166
166
  try {
167
- // 1. Fetch the category with its current descriptions populated
168
- const category = await this.makeRequest(`${StrapiEntity.CATEGORY}/${categoryDocumentId}?populate=attribute_descriptions.attribute_value`);
167
+ // 1. Fetch the category with its current overrides and relations populated
168
+ const category = await this.makeRequest(`${StrapiEntity.CATEGORY}/${categoryDocumentId}?populate[0]=attribute_overrides.attribute_value&populate[1]=attribute_values`);
169
169
  if (!category)
170
170
  return;
171
- const existingDescriptions = category.attribute_descriptions || [];
171
+ const existingOverrides = category.attribute_overrides || [];
172
+ const existingRelations = category.attribute_values || [];
172
173
  // 2. Determine which attribute values are missing
173
- const existingAttributeValueIds = existingDescriptions
174
- .map((desc) => desc.attribute_value?.documentId)
174
+ const existingAttributeValueIds = existingOverrides
175
+ .map((override) => override.attribute_value?.documentId)
175
176
  .filter(Boolean);
176
- const missingAttributeValueIds = attributeValueDocumentIds.filter((id) => !existingAttributeValueIds.includes(id));
177
- if (missingAttributeValueIds.length === 0) {
178
- this.logger.debug(`No new descriptions needed for category ${categoryDocumentId}`);
177
+ const existingRelationIds = existingRelations
178
+ .map((rel) => rel.documentId)
179
+ .filter(Boolean);
180
+ const missingOverrides = attributeValueDocumentIds.filter((id) => !existingAttributeValueIds.includes(id));
181
+ const missingRelations = attributeValueDocumentIds.filter((id) => !existingRelationIds.includes(id));
182
+ if (missingOverrides.length === 0 && missingRelations.length === 0) {
183
+ this.logger.debug(`No new overrides or relations needed for category ${categoryDocumentId}`);
179
184
  return;
180
185
  }
181
- // 3. Create missing relations individually instead of updating the whole Category
182
- await Promise.all(missingAttributeValueIds.map((missingId) => this.createEntry(StrapiEntity.CATEGORY_ATTRIBUTE_DESCRIPTION, {
183
- category: categoryDocumentId,
184
- attribute_value: missingId,
185
- })));
186
- this.logger.debug(`Added ${missingAttributeValueIds.length} missing attribute descriptions to category ${categoryDocumentId}`);
186
+ // 3. Construct the update payload
187
+ const payload = {};
188
+ if (missingOverrides.length > 0 || existingOverrides.length > 0) {
189
+ // We always pass existing if we are passing new overrides
190
+ // Strapi requires the full array to update components
191
+ payload.attribute_overrides = [
192
+ ...existingOverrides.map((override) => ({
193
+ id: override.id, // Keep existing ID
194
+ attribute_value: override.attribute_value?.documentId,
195
+ description: override.description,
196
+ bottom_description: override.bottom_description,
197
+ })),
198
+ ...missingOverrides.map((missingId) => ({
199
+ attribute_value: missingId,
200
+ // description and bottom_description stay empty for the editor
201
+ })),
202
+ ];
203
+ }
204
+ if (missingRelations.length > 0) {
205
+ // Keep existing relations and add new ones to prevent deleting others in Strapi
206
+ payload.attribute_values = [
207
+ ...existingRelationIds,
208
+ ...missingRelations,
209
+ ];
210
+ }
211
+ // 4. Update the category in Strapi
212
+ await this.updateEntry(StrapiEntity.CATEGORY, categoryDocumentId, payload);
213
+ this.logger.debug(`Added ${missingOverrides.length} overrides and ${missingRelations.length} relations to category ${categoryDocumentId}`);
187
214
  }
188
215
  catch (error) {
189
- this.logger.error(`Failed to populate descriptions for category ${categoryDocumentId}`, error);
216
+ this.logger.error(`Failed to populate overrides/relations for category ${categoryDocumentId}`, error);
190
217
  }
191
218
  }
192
219
  /**
@@ -367,4 +394,4 @@ class StrapiModuleService {
367
394
  }
368
395
  }
369
396
  exports.default = StrapiModuleService;
370
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL3N0cmFwaS9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBT0EscURBQXdEO0FBQ3hELDRDQUFvQjtBQVlwQixJQUFLLFlBTUo7QUFORCxXQUFLLFlBQVk7SUFDZixvQ0FBb0IsQ0FBQTtJQUNwQiw0Q0FBNEIsQ0FBQTtJQUM1Qix1Q0FBdUIsQ0FBQTtJQUN2QiwwQ0FBMEIsQ0FBQTtJQUMxQixrRkFBa0UsQ0FBQTtBQUNwRSxDQUFDLEVBTkksWUFBWSxLQUFaLFlBQVksUUFNaEI7QUFFRCxNQUFxQixtQkFBbUI7SUFLdEMsWUFBWSxFQUFFLE1BQU0sRUFBd0IsRUFBRSxPQUFzQjtRQUNsRSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ2IsR0FBRyxPQUFPO1lBQ1YsY0FBYyxFQUFFLE9BQU8sQ0FBQyxjQUFjLElBQUksSUFBSTtZQUM5QyxhQUFhLEVBQUUsT0FBTyxDQUFDLGFBQWEsSUFBSSxVQUFVO1NBQ25ELENBQUM7UUFFRixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLElBQUksVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkUsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsT0FBc0I7UUFDM0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDMUMsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsMENBQTBDLENBQzNDLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssS0FBSyxDQUFDLFdBQVcsQ0FDdkIsUUFBZ0IsRUFDaEIsVUFBd0MsRUFBRTtR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
397
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9tb2R1bGVzL3N0cmFwaS9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBT0EscURBQXdEO0FBQ3hELDRDQUFvQjtBQVlwQixJQUFLLFlBTUo7QUFORCxXQUFLLFlBQVk7SUFDZixvQ0FBb0IsQ0FBQTtJQUNwQiw0Q0FBNEIsQ0FBQTtJQUM1Qix1Q0FBdUIsQ0FBQTtJQUN2QiwwQ0FBMEIsQ0FBQTtJQUMxQixrRkFBa0UsQ0FBQTtBQUNwRSxDQUFDLEVBTkksWUFBWSxLQUFaLFlBQVksUUFNaEI7QUFFRCxNQUFxQixtQkFBbUI7SUFLdEMsWUFBWSxFQUFFLE1BQU0sRUFBd0IsRUFBRSxPQUFzQjtRQUNsRSxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHO1lBQ2IsR0FBRyxPQUFPO1lBQ1YsY0FBYyxFQUFFLE9BQU8sQ0FBQyxjQUFjLElBQUksSUFBSTtZQUM5QyxhQUFhLEVBQUUsT0FBTyxDQUFDLGFBQWEsSUFBSSxVQUFVO1NBQ25ELENBQUM7UUFFRixJQUFJLENBQUMsV0FBVyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLElBQUksVUFBVSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDdkUsQ0FBQztJQUVELE1BQU0sQ0FBQyxlQUFlLENBQUMsT0FBc0I7UUFDM0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDMUMsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIsMENBQTBDLENBQzNDLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ssS0FBSyxDQUFDLFdBQVcsQ0FDdkIsUUFBZ0IsRUFDaEIsVUFBd0MsRUFBRTtR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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "medusa-strapi-plugin",
3
- "version": "0.0.16",
3
+ "version": "0.0.17",
4
4
  "description": "Medusa plugin for Strapi as CMS",
5
5
  "author": "devx commerce (https://devxcommerce.com)",
6
6
  "license": "MIT",
@@ -246,7 +246,7 @@ export default class StrapiModuleService {
246
246
  }
247
247
 
248
248
  /**
249
- * Auto-populates attribute description relations on a category if they don't exist
249
+ * Auto-populates attribute override components and relations on a category if they don't exist
250
250
  */
251
251
  async populateCategoryOverrides(
252
252
  categoryDocumentId: string,
@@ -255,47 +255,81 @@ export default class StrapiModuleService {
255
255
  if (!attributeValueDocumentIds.length) return;
256
256
 
257
257
  try {
258
- // 1. Fetch the category with its current descriptions populated
258
+ // 1. Fetch the category with its current overrides and relations populated
259
259
  const category: any = await this.makeRequest(
260
- `${StrapiEntity.CATEGORY}/${categoryDocumentId}?populate=attribute_descriptions.attribute_value`,
260
+ `${StrapiEntity.CATEGORY}/${categoryDocumentId}?populate[0]=attribute_overrides.attribute_value&populate[1]=attribute_values`,
261
261
  );
262
262
 
263
263
  if (!category) return;
264
264
 
265
- const existingDescriptions = category.attribute_descriptions || [];
265
+ const existingOverrides = category.attribute_overrides || [];
266
+ const existingRelations = category.attribute_values || [];
266
267
 
267
268
  // 2. Determine which attribute values are missing
268
- const existingAttributeValueIds = existingDescriptions
269
- .map((desc: any) => desc.attribute_value?.documentId)
269
+ const existingAttributeValueIds = existingOverrides
270
+ .map((override: any) => override.attribute_value?.documentId)
270
271
  .filter(Boolean);
271
272
 
272
- const missingAttributeValueIds = attributeValueDocumentIds.filter(
273
+ const existingRelationIds = existingRelations
274
+ .map((rel: any) => rel.documentId)
275
+ .filter(Boolean);
276
+
277
+ const missingOverrides = attributeValueDocumentIds.filter(
273
278
  (id) => !existingAttributeValueIds.includes(id),
274
279
  );
275
280
 
276
- if (missingAttributeValueIds.length === 0) {
281
+ const missingRelations = attributeValueDocumentIds.filter(
282
+ (id) => !existingRelationIds.includes(id),
283
+ );
284
+
285
+ if (missingOverrides.length === 0 && missingRelations.length === 0) {
277
286
  this.logger.debug(
278
- `No new descriptions needed for category ${categoryDocumentId}`,
287
+ `No new overrides or relations needed for category ${categoryDocumentId}`,
279
288
  );
280
289
  return;
281
290
  }
282
291
 
283
- // 3. Create missing relations individually instead of updating the whole Category
284
- await Promise.all(
285
- missingAttributeValueIds.map((missingId) =>
286
- this.createEntry(StrapiEntity.CATEGORY_ATTRIBUTE_DESCRIPTION, {
287
- category: categoryDocumentId,
292
+ // 3. Construct the update payload
293
+ const payload: any = {};
294
+
295
+ if (missingOverrides.length > 0 || existingOverrides.length > 0) {
296
+ // We always pass existing if we are passing new overrides
297
+ // Strapi requires the full array to update components
298
+ payload.attribute_overrides = [
299
+ ...existingOverrides.map((override: any) => ({
300
+ id: override.id, // Keep existing ID
301
+ attribute_value: override.attribute_value?.documentId,
302
+ description: override.description,
303
+ bottom_description: override.bottom_description,
304
+ })),
305
+ ...missingOverrides.map((missingId) => ({
288
306
  attribute_value: missingId,
289
- }),
290
- ),
307
+ // description and bottom_description stay empty for the editor
308
+ })),
309
+ ];
310
+ }
311
+
312
+ if (missingRelations.length > 0) {
313
+ // Keep existing relations and add new ones to prevent deleting others in Strapi
314
+ payload.attribute_values = [
315
+ ...existingRelationIds,
316
+ ...missingRelations,
317
+ ];
318
+ }
319
+
320
+ // 4. Update the category in Strapi
321
+ await this.updateEntry(
322
+ StrapiEntity.CATEGORY,
323
+ categoryDocumentId,
324
+ payload,
291
325
  );
292
326
 
293
327
  this.logger.debug(
294
- `Added ${missingAttributeValueIds.length} missing attribute descriptions to category ${categoryDocumentId}`,
328
+ `Added ${missingOverrides.length} overrides and ${missingRelations.length} relations to category ${categoryDocumentId}`,
295
329
  );
296
330
  } catch (error) {
297
331
  this.logger.error(
298
- `Failed to populate descriptions for category ${categoryDocumentId}`,
332
+ `Failed to populate overrides/relations for category ${categoryDocumentId}`,
299
333
  error as Error,
300
334
  );
301
335
  }