@primershop/strapi-plugin-product-actions 0.0.13 → 0.0.15
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.
- package/dist/admin/index.js +221 -24
- package/dist/admin/index.mjs +223 -23
- package/dist/server/index.js +240 -16
- package/dist/server/index.mjs +243 -16
- package/package.json +11 -10
- package/dist/admin/components/Initializer/index.js +0 -17
- package/dist/admin/components/Initializer/index.js.map +0 -1
- package/dist/admin/components/Initializer/index.mjs +0 -15
- package/dist/admin/components/Initializer/index.mjs.map +0 -1
- package/dist/admin/components/SeriesProductActions/index.js +0 -229
- package/dist/admin/components/SeriesProductActions/index.js.map +0 -1
- package/dist/admin/components/SeriesProductActions/index.mjs +0 -227
- package/dist/admin/components/SeriesProductActions/index.mjs.map +0 -1
- package/dist/admin/index.js.map +0 -1
- package/dist/admin/index.mjs.map +0 -1
- package/dist/admin/pluginId.js +0 -6
- package/dist/admin/pluginId.js.map +0 -1
- package/dist/admin/pluginId.mjs +0 -4
- package/dist/admin/pluginId.mjs.map +0 -1
- package/dist/admin/translations/en.js +0 -25
- package/dist/admin/translations/en.js.map +0 -1
- package/dist/admin/translations/en.mjs +0 -23
- package/dist/admin/translations/en.mjs.map +0 -1
- package/dist/server/bootstrap.js +0 -16
- package/dist/server/bootstrap.js.map +0 -1
- package/dist/server/bootstrap.mjs +0 -14
- package/dist/server/bootstrap.mjs.map +0 -1
- package/dist/server/controllers/index.js +0 -10
- package/dist/server/controllers/index.js.map +0 -1
- package/dist/server/controllers/index.mjs +0 -8
- package/dist/server/controllers/index.mjs.map +0 -1
- package/dist/server/controllers/product-series.js +0 -29
- package/dist/server/controllers/product-series.js.map +0 -1
- package/dist/server/controllers/product-series.mjs +0 -27
- package/dist/server/controllers/product-series.mjs.map +0 -1
- package/dist/server/index.js.map +0 -1
- package/dist/server/index.mjs.map +0 -1
- package/dist/server/permissions.js +0 -51
- package/dist/server/permissions.js.map +0 -1
- package/dist/server/permissions.mjs +0 -49
- package/dist/server/permissions.mjs.map +0 -1
- package/dist/server/register.js +0 -7
- package/dist/server/register.js.map +0 -1
- package/dist/server/register.mjs +0 -5
- package/dist/server/register.mjs.map +0 -1
- package/dist/server/routes/admin.js +0 -44
- package/dist/server/routes/admin.js.map +0 -1
- package/dist/server/routes/admin.mjs +0 -42
- package/dist/server/routes/admin.mjs.map +0 -1
- package/dist/server/routes/index.js +0 -10
- package/dist/server/routes/index.js.map +0 -1
- package/dist/server/routes/index.mjs +0 -8
- package/dist/server/routes/index.mjs.map +0 -1
- package/dist/server/services/index.js +0 -10
- package/dist/server/services/index.js.map +0 -1
- package/dist/server/services/index.mjs +0 -8
- package/dist/server/services/index.mjs.map +0 -1
- package/dist/server/services/product-series.js +0 -113
- package/dist/server/services/product-series.js.map +0 -1
- package/dist/server/services/product-series.mjs +0 -111
- package/dist/server/services/product-series.mjs.map +0 -1
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
const productSeriesService = ({ strapi })=>({
|
|
2
|
-
async createProductsFromSeries (seriesId, count = 1) {
|
|
3
|
-
const series = await getSeries(strapi, seriesId);
|
|
4
|
-
const products = [];
|
|
5
|
-
const startIndex = series.products?.length || 0;
|
|
6
|
-
for(let i = 0; i < count; i++){
|
|
7
|
-
const index = startIndex + i;
|
|
8
|
-
// Create product with series data
|
|
9
|
-
const product = await strapi.documents("api::product.product").create({
|
|
10
|
-
data: {
|
|
11
|
-
name: `${series.name} #${index + 1}`,
|
|
12
|
-
slug: `${series.slug}-${index + 1}`,
|
|
13
|
-
series: {
|
|
14
|
-
set: seriesId
|
|
15
|
-
},
|
|
16
|
-
seriesIndex: index,
|
|
17
|
-
category: series.category ? {
|
|
18
|
-
set: series.category.documentId
|
|
19
|
-
} : null,
|
|
20
|
-
creator: series.creator ? {
|
|
21
|
-
set: series.creator?.documentId
|
|
22
|
-
} : null,
|
|
23
|
-
publishedAt: undefined,
|
|
24
|
-
// Copy all required fields from series
|
|
25
|
-
description: series.description,
|
|
26
|
-
shortDescription: series.shortDescription,
|
|
27
|
-
media: series.media,
|
|
28
|
-
coverImage: series.coverImage,
|
|
29
|
-
seo: series.seo,
|
|
30
|
-
totalCost: series.totalCost,
|
|
31
|
-
wholesalePrice: series.wholesalePrice,
|
|
32
|
-
retailPrice: series.retailPrice
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
products.push(product);
|
|
36
|
-
}
|
|
37
|
-
return products;
|
|
38
|
-
},
|
|
39
|
-
async updateSeriesProducts (seriesId, fieldsToUpdate) {
|
|
40
|
-
const series = await getSeries(strapi, seriesId);
|
|
41
|
-
const dataToUpdate = {};
|
|
42
|
-
if (fieldsToUpdate.includes("description")) {
|
|
43
|
-
dataToUpdate.description = series.description;
|
|
44
|
-
}
|
|
45
|
-
if (fieldsToUpdate.includes("shortDescription")) {
|
|
46
|
-
dataToUpdate.shortDescription = series.shortDescription;
|
|
47
|
-
}
|
|
48
|
-
if (fieldsToUpdate.includes("media")) {
|
|
49
|
-
dataToUpdate.media = series.media;
|
|
50
|
-
}
|
|
51
|
-
if (fieldsToUpdate.includes("coverImage")) {
|
|
52
|
-
dataToUpdate.coverImage = series.coverImage;
|
|
53
|
-
}
|
|
54
|
-
if (fieldsToUpdate.includes("seo")) {
|
|
55
|
-
dataToUpdate.seo = series.seo;
|
|
56
|
-
}
|
|
57
|
-
if (fieldsToUpdate.includes("totalCost")) {
|
|
58
|
-
dataToUpdate.totalCost = series.totalCost;
|
|
59
|
-
}
|
|
60
|
-
if (fieldsToUpdate.includes("wholesalePrice")) {
|
|
61
|
-
dataToUpdate.wholesalePrice = series.wholesalePrice;
|
|
62
|
-
}
|
|
63
|
-
if (fieldsToUpdate.includes("retailPrice")) {
|
|
64
|
-
dataToUpdate.retailPrice = series.retailPrice;
|
|
65
|
-
}
|
|
66
|
-
if (fieldsToUpdate.includes("category")) {
|
|
67
|
-
dataToUpdate.category = {
|
|
68
|
-
set: [
|
|
69
|
-
series.category?.documentId
|
|
70
|
-
]
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
if (fieldsToUpdate.includes("creator")) {
|
|
74
|
-
dataToUpdate.creator = {
|
|
75
|
-
set: [
|
|
76
|
-
series.creator?.documentId
|
|
77
|
-
]
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
const updatePromises = series.products?.map((product)=>strapi.documents("api::product.product").update({
|
|
81
|
-
documentId: product.documentId,
|
|
82
|
-
data: {
|
|
83
|
-
...dataToUpdate
|
|
84
|
-
}
|
|
85
|
-
}));
|
|
86
|
-
if (updatePromises) {
|
|
87
|
-
await Promise.all(updatePromises);
|
|
88
|
-
}
|
|
89
|
-
return true;
|
|
90
|
-
}
|
|
91
|
-
});
|
|
92
|
-
async function getSeries(strapi, seriesId) {
|
|
93
|
-
const series = await strapi.documents("api::product-series.product-series").findOne({
|
|
94
|
-
documentId: seriesId,
|
|
95
|
-
populate: [
|
|
96
|
-
"products",
|
|
97
|
-
"category",
|
|
98
|
-
"creator",
|
|
99
|
-
"media",
|
|
100
|
-
"coverImage",
|
|
101
|
-
"seo"
|
|
102
|
-
]
|
|
103
|
-
});
|
|
104
|
-
if (!series) {
|
|
105
|
-
throw new Error("Series not found");
|
|
106
|
-
}
|
|
107
|
-
return series;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
export { productSeriesService };
|
|
111
|
-
//# sourceMappingURL=product-series.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"product-series.mjs","sources":["../../../server/src/services/product-series.ts"],"sourcesContent":["import type { Core } from \"@strapi/strapi\";\r\n\r\ninterface Series {\r\n name: string;\r\n slug: string;\r\n products?: Array<{ documentId: string }>;\r\n category?: { documentId: string };\r\n creator?: { documentId: string };\r\n description: unknown;\r\n shortDescription: string;\r\n media: unknown;\r\n coverImage: unknown;\r\n seo: unknown;\r\n totalCost: number;\r\n wholesalePrice: number;\r\n retailPrice: number;\r\n}\r\n\r\ninterface ProductData {\r\n name: string;\r\n slug: string;\r\n series: { set: string };\r\n seriesIndex: number;\r\n category: { set: string };\r\n creator: { set: string };\r\n publishedAt: undefined;\r\n description: unknown;\r\n shortDescription: string;\r\n media: unknown;\r\n coverImage: unknown;\r\n seo: unknown;\r\n totalCost: number;\r\n wholesalePrice: number;\r\n retailPrice: number;\r\n}\r\n\r\nexport const productSeriesService = ({ strapi }: { strapi: Core.Strapi }) => ({\r\n async createProductsFromSeries(seriesId: string, count = 1) {\r\n const series = await getSeries(strapi, seriesId);\r\n\r\n const products: unknown[] = [];\r\n const startIndex = series.products?.length || 0;\r\n\r\n for (let i = 0; i < count; i++) {\r\n const index = startIndex + i;\r\n\r\n // Create product with series data\r\n const product = await strapi.documents(\"api::product.product\").create({\r\n data: {\r\n name: `${series.name} #${index + 1}`,\r\n slug: `${series.slug}-${index + 1}`,\r\n series: {\r\n set: seriesId,\r\n },\r\n seriesIndex: index,\r\n category: series.category\r\n ? {\r\n set: series.category.documentId,\r\n }\r\n : null,\r\n creator: series.creator\r\n ? {\r\n set: series.creator?.documentId,\r\n }\r\n : null,\r\n publishedAt: undefined,\r\n // Copy all required fields from series\r\n description: series.description,\r\n shortDescription: series.shortDescription,\r\n media: series.media,\r\n coverImage: series.coverImage,\r\n seo: series.seo,\r\n totalCost: series.totalCost,\r\n wholesalePrice: series.wholesalePrice,\r\n retailPrice: series.retailPrice,\r\n } as ProductData,\r\n });\r\n products.push(product);\r\n }\r\n\r\n return products;\r\n },\r\n\r\n async updateSeriesProducts(seriesId: string, fieldsToUpdate: string[]) {\r\n const series = await getSeries(strapi, seriesId);\r\n\r\n const dataToUpdate: Record<string, unknown> = {};\r\n\r\n if (fieldsToUpdate.includes(\"description\")) {\r\n dataToUpdate.description = series.description;\r\n }\r\n\r\n if (fieldsToUpdate.includes(\"shortDescription\")) {\r\n dataToUpdate.shortDescription = series.shortDescription;\r\n }\r\n\r\n if (fieldsToUpdate.includes(\"media\")) {\r\n dataToUpdate.media = series.media;\r\n }\r\n\r\n if (fieldsToUpdate.includes(\"coverImage\")) {\r\n dataToUpdate.coverImage = series.coverImage;\r\n }\r\n\r\n if (fieldsToUpdate.includes(\"seo\")) {\r\n dataToUpdate.seo = series.seo;\r\n }\r\n\r\n if (fieldsToUpdate.includes(\"totalCost\")) {\r\n dataToUpdate.totalCost = series.totalCost;\r\n }\r\n\r\n if (fieldsToUpdate.includes(\"wholesalePrice\")) {\r\n dataToUpdate.wholesalePrice = series.wholesalePrice;\r\n }\r\n\r\n if (fieldsToUpdate.includes(\"retailPrice\")) {\r\n dataToUpdate.retailPrice = series.retailPrice;\r\n }\r\n\r\n if (fieldsToUpdate.includes(\"category\")) {\r\n dataToUpdate.category = {\r\n set: [series.category?.documentId],\r\n };\r\n }\r\n\r\n if (fieldsToUpdate.includes(\"creator\")) {\r\n dataToUpdate.creator = {\r\n set: [series.creator?.documentId],\r\n };\r\n }\r\n\r\n const updatePromises = series.products?.map((product) =>\r\n strapi.documents(\"api::product.product\").update({\r\n documentId: product.documentId,\r\n data: {\r\n ...dataToUpdate,\r\n },\r\n }),\r\n );\r\n\r\n if (updatePromises) {\r\n await Promise.all(updatePromises);\r\n }\r\n return true;\r\n },\r\n});\r\n\r\nasync function getSeries(\r\n strapi: Core.Strapi,\r\n seriesId: string,\r\n): Promise<Series> {\r\n const series = await strapi\r\n .documents(\"api::product-series.product-series\")\r\n .findOne({\r\n documentId: seriesId,\r\n populate: [\r\n \"products\",\r\n \"category\",\r\n \"creator\",\r\n \"media\",\r\n \"coverImage\",\r\n \"seo\",\r\n ],\r\n });\r\n\r\n if (!series) {\r\n throw new Error(\"Series not found\");\r\n }\r\n return series as unknown as Series;\r\n}\r\n"],"names":["productSeriesService","strapi","createProductsFromSeries","seriesId","count","series","getSeries","products","startIndex","length","i","index","product","documents","create","data","name","slug","set","seriesIndex","category","documentId","creator","publishedAt","undefined","description","shortDescription","media","coverImage","seo","totalCost","wholesalePrice","retailPrice","push","updateSeriesProducts","fieldsToUpdate","dataToUpdate","includes","updatePromises","map","update","Promise","all","findOne","populate","Error"],"mappings":"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"}
|