pim-import 5.0.1 → 5.0.2
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/algolia/clean.js +0 -1
- package/dist/algolia/config.js +0 -1
- package/dist/algolia/downloads.js +0 -1
- package/dist/algolia/families.js +0 -1
- package/dist/algolia/inspirations.js +0 -1
- package/dist/algolia/models.js +0 -1
- package/dist/algolia/news.js +0 -1
- package/dist/algolia/pressRelease.js +0 -1
- package/dist/algolia/pressReview.js +0 -1
- package/dist/algolia/products.js +0 -1
- package/dist/algolia/projects.js +0 -1
- package/dist/algolia/stories.js +0 -1
- package/dist/algolia/subFamilies.js +0 -1
- package/dist/algolia/subModels.js +0 -1
- package/dist/browser.js +0 -1
- package/dist/downloads/classes/manageEntry.js +0 -1
- package/dist/downloads/import.js +0 -1
- package/dist/index.js +0 -1
- package/dist/libs/contentful-cda.js +0 -1
- package/dist/libs/contentful.js +0 -1
- package/dist/libs/imgix.js +0 -1
- package/dist/libs/logs.js +0 -1
- package/dist/libs/netlify.js +0 -1
- package/dist/libs/notifications.js +0 -1
- package/dist/libs/pdf.js +0 -1
- package/dist/libs/s3.js +0 -1
- package/dist/libs/sentry.js +0 -1
- package/dist/pim/config.js +0 -1
- package/dist/pim/endpoints.js +0 -1
- package/dist/pim/methods/bulkPublish.js +0 -1
- package/dist/pim/methods/catalogs.js +0 -1
- package/dist/pim/methods/checkTopicDraftAndPagePublished.js +0 -1
- package/dist/pim/methods/designers.js +0 -1
- package/dist/pim/methods/dictionary.js +0 -1
- package/dist/pim/methods/families.js +0 -1
- package/dist/pim/methods/latestProducts.js +0 -1
- package/dist/pim/methods/migrateEntryFields.js +0 -1
- package/dist/pim/methods/models.js +0 -1
- package/dist/pim/methods/pages/catalogs.js +0 -1
- package/dist/pim/methods/pages/families.js +0 -1
- package/dist/pim/methods/pages/subfamilies.js +0 -1
- package/dist/pim/methods/products.js +0 -1
- package/dist/pim/methods/subfamilies.js +0 -1
- package/dist/pim/methods/submodels.js +0 -1
- package/dist/pim/request.js +0 -1
- package/dist/resources/AllProducts.js +0 -1
- package/dist/resources/Audit.js +0 -1
- package/dist/resources/CatalogDetails.js +0 -1
- package/dist/resources/CollectionModels.js +0 -1
- package/dist/resources/CollectionSubFamilies.js +0 -1
- package/dist/resources/CollectionSubModels.js +0 -1
- package/dist/resources/DProductSubLine.js +0 -1
- package/dist/resources/FamilyDetails.js +0 -1
- package/dist/resources/ProductDetails.js +0 -1
- package/dist/resources/ProductRelation.js +0 -1
- package/dist/resources/cfFields.js +0 -1
- package/dist/types.js +0 -1
- package/dist/utils.js +0 -1
- package/package.json +7 -2
- package/.env.example +0 -45
- package/.nvmrc +0 -1
- package/.vscode/settings.json +0 -21
- package/dist/algolia/clean.js.map +0 -1
- package/dist/algolia/config.js.map +0 -1
- package/dist/algolia/downloads.js.map +0 -1
- package/dist/algolia/families.js.map +0 -1
- package/dist/algolia/inspirations.js.map +0 -1
- package/dist/algolia/models.js.map +0 -1
- package/dist/algolia/news.js.map +0 -1
- package/dist/algolia/pressRelease.js.map +0 -1
- package/dist/algolia/pressReview.js.map +0 -1
- package/dist/algolia/products.js.map +0 -1
- package/dist/algolia/projects.js.map +0 -1
- package/dist/algolia/stories.js.map +0 -1
- package/dist/algolia/subFamilies.js.map +0 -1
- package/dist/algolia/subModels.js.map +0 -1
- package/dist/browser.js.map +0 -1
- package/dist/downloads/classes/manageEntry.js.map +0 -1
- package/dist/downloads/import.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/libs/contentful-cda.js.map +0 -1
- package/dist/libs/contentful.js.map +0 -1
- package/dist/libs/imgix.js.map +0 -1
- package/dist/libs/logs.js.map +0 -1
- package/dist/libs/netlify.js.map +0 -1
- package/dist/libs/notifications.js.map +0 -1
- package/dist/libs/pdf.js.map +0 -1
- package/dist/libs/s3.js.map +0 -1
- package/dist/libs/sentry.js.map +0 -1
- package/dist/pim/config.js.map +0 -1
- package/dist/pim/endpoints.js.map +0 -1
- package/dist/pim/methods/bulkPublish.js.map +0 -1
- package/dist/pim/methods/catalogs.js.map +0 -1
- package/dist/pim/methods/checkTopicDraftAndPagePublished.js.map +0 -1
- package/dist/pim/methods/designers.js.map +0 -1
- package/dist/pim/methods/dictionary.js.map +0 -1
- package/dist/pim/methods/families.js.map +0 -1
- package/dist/pim/methods/latestProducts.js.map +0 -1
- package/dist/pim/methods/migrateEntryFields.js.map +0 -1
- package/dist/pim/methods/models.js.map +0 -1
- package/dist/pim/methods/pages/catalogs.js.map +0 -1
- package/dist/pim/methods/pages/families.js.map +0 -1
- package/dist/pim/methods/pages/subfamilies.js.map +0 -1
- package/dist/pim/methods/products.js.map +0 -1
- package/dist/pim/methods/subfamilies.js.map +0 -1
- package/dist/pim/methods/submodels.js.map +0 -1
- package/dist/pim/request.js.map +0 -1
- package/dist/resources/AllProducts.js.map +0 -1
- package/dist/resources/Audit.js.map +0 -1
- package/dist/resources/CatalogDetails.js.map +0 -1
- package/dist/resources/CollectionModels.js.map +0 -1
- package/dist/resources/CollectionSubFamilies.js.map +0 -1
- package/dist/resources/CollectionSubModels.js.map +0 -1
- package/dist/resources/DProductSubLine.js.map +0 -1
- package/dist/resources/FamilyDetails.js.map +0 -1
- package/dist/resources/ProductDetails.js.map +0 -1
- package/dist/resources/ProductRelation.js.map +0 -1
- package/dist/resources/cfFields.js.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/utils.js.map +0 -1
- package/docs/import-data-from-the-dictionary.md +0 -83
- package/docs/import-products.md +0 -61
- package/docs/import-taxonomies-from-the-catalog.md +0 -60
- package/docs/settings.md +0 -47
- package/jest.config.js +0 -16
- package/local-fn/reindex.js +0 -182
- package/src/algolia/clean.ts +0 -164
- package/src/algolia/config.ts +0 -390
- package/src/algolia/downloads.ts +0 -346
- package/src/algolia/families.ts +0 -652
- package/src/algolia/inspirations.ts +0 -315
- package/src/algolia/models.ts +0 -589
- package/src/algolia/news.ts +0 -258
- package/src/algolia/pressRelease.ts +0 -255
- package/src/algolia/pressReview.ts +0 -247
- package/src/algolia/products.ts +0 -731
- package/src/algolia/projects.ts +0 -339
- package/src/algolia/stories.ts +0 -347
- package/src/algolia/subFamilies.ts +0 -709
- package/src/algolia/subModels.ts +0 -359
- package/src/browser.ts +0 -122
- package/src/downloads/classes/manageEntry.ts +0 -99
- package/src/downloads/csv/legal.csv +0 -5
- package/src/downloads/csv/products.csv +0 -373
- package/src/downloads/import.ts +0 -381
- package/src/index.ts +0 -140
- package/src/libs/contentful-cda.ts +0 -543
- package/src/libs/contentful.ts +0 -1453
- package/src/libs/imgix.ts +0 -297
- package/src/libs/logs.ts +0 -121
- package/src/libs/netlify.ts +0 -37
- package/src/libs/notifications.ts +0 -104
- package/src/libs/pdf.ts +0 -107
- package/src/libs/s3.ts +0 -305
- package/src/libs/sentry.ts +0 -33
- package/src/pim/config.ts +0 -84
- package/src/pim/data/productFields.json +0 -1178
- package/src/pim/endpoints.ts +0 -364
- package/src/pim/methods/bulkPublish.ts +0 -266
- package/src/pim/methods/catalogs.ts +0 -586
- package/src/pim/methods/checkTopicDraftAndPagePublished.ts +0 -70
- package/src/pim/methods/designers.ts +0 -128
- package/src/pim/methods/dictionary.ts +0 -611
- package/src/pim/methods/families.ts +0 -345
- package/src/pim/methods/latestProducts.ts +0 -70
- package/src/pim/methods/migrateEntryFields.ts +0 -99
- package/src/pim/methods/models.ts +0 -349
- package/src/pim/methods/pages/catalogs.ts +0 -28
- package/src/pim/methods/pages/families.ts +0 -50
- package/src/pim/methods/pages/subfamilies.ts +0 -98
- package/src/pim/methods/products.ts +0 -3297
- package/src/pim/methods/subfamilies.ts +0 -706
- package/src/pim/methods/submodels.ts +0 -262
- package/src/pim/request.ts +0 -61
- package/src/resources/AllProducts.ts +0 -41
- package/src/resources/Audit.ts +0 -24
- package/src/resources/CatalogDetails.ts +0 -51
- package/src/resources/CollectionModels.ts +0 -42
- package/src/resources/CollectionSubFamilies.ts +0 -45
- package/src/resources/CollectionSubModels.ts +0 -36
- package/src/resources/DProductSubLine.ts +0 -34
- package/src/resources/FamilyDetails.ts +0 -31
- package/src/resources/ProductDetails.ts +0 -352
- package/src/resources/ProductRelation.ts +0 -24
- package/src/resources/cfFields.ts +0 -8
- package/src/types.ts +0 -268
- package/src/utils.ts +0 -553
- package/tsconfig.json +0 -93
- package/tslint.json +0 -22
- package/types/libs/puppeteer.d.ts +0 -17
- package/types/pim/methods/checkIp.d.ts +0 -1
- /package/{types → dist}/algolia/clean.d.ts +0 -0
- /package/{types → dist}/algolia/config.d.ts +0 -0
- /package/{types → dist}/algolia/downloads.d.ts +0 -0
- /package/{types → dist}/algolia/families.d.ts +0 -0
- /package/{types → dist}/algolia/inspirations.d.ts +0 -0
- /package/{types → dist}/algolia/models.d.ts +0 -0
- /package/{types → dist}/algolia/news.d.ts +0 -0
- /package/{types → dist}/algolia/pressRelease.d.ts +0 -0
- /package/{types → dist}/algolia/pressReview.d.ts +0 -0
- /package/{types → dist}/algolia/products.d.ts +0 -0
- /package/{types → dist}/algolia/projects.d.ts +0 -0
- /package/{types → dist}/algolia/stories.d.ts +0 -0
- /package/{types → dist}/algolia/subFamilies.d.ts +0 -0
- /package/{types → dist}/algolia/subModels.d.ts +0 -0
- /package/{types → dist}/browser.d.ts +0 -0
- /package/{types → dist}/downloads/classes/manageEntry.d.ts +0 -0
- /package/{types → dist}/downloads/import.d.ts +0 -0
- /package/{types → dist}/index.d.ts +0 -0
- /package/{types → dist}/libs/contentful-cda.d.ts +0 -0
- /package/{types → dist}/libs/contentful.d.ts +0 -0
- /package/{types → dist}/libs/imgix.d.ts +0 -0
- /package/{types → dist}/libs/logs.d.ts +0 -0
- /package/{types → dist}/libs/netlify.d.ts +0 -0
- /package/{types → dist}/libs/notifications.d.ts +0 -0
- /package/{types → dist}/libs/pdf.d.ts +0 -0
- /package/{types → dist}/libs/s3.d.ts +0 -0
- /package/{types → dist}/libs/sentry.d.ts +0 -0
- /package/{types → dist}/pim/config.d.ts +0 -0
- /package/{types → dist}/pim/endpoints.d.ts +0 -0
- /package/{types → dist}/pim/methods/bulkPublish.d.ts +0 -0
- /package/{types → dist}/pim/methods/catalogs.d.ts +0 -0
- /package/{types → dist}/pim/methods/checkTopicDraftAndPagePublished.d.ts +0 -0
- /package/{types → dist}/pim/methods/designers.d.ts +0 -0
- /package/{types → dist}/pim/methods/dictionary.d.ts +0 -0
- /package/{types → dist}/pim/methods/families.d.ts +0 -0
- /package/{types → dist}/pim/methods/latestProducts.d.ts +0 -0
- /package/{types → dist}/pim/methods/migrateEntryFields.d.ts +0 -0
- /package/{types → dist}/pim/methods/models.d.ts +0 -0
- /package/{types → dist}/pim/methods/pages/catalogs.d.ts +0 -0
- /package/{types → dist}/pim/methods/pages/families.d.ts +0 -0
- /package/{types → dist}/pim/methods/pages/subfamilies.d.ts +0 -0
- /package/{types → dist}/pim/methods/products.d.ts +0 -0
- /package/{types → dist}/pim/methods/subfamilies.d.ts +0 -0
- /package/{types → dist}/pim/methods/submodels.d.ts +0 -0
- /package/{types → dist}/pim/request.d.ts +0 -0
- /package/{types → dist}/resources/AllProducts.d.ts +0 -0
- /package/{types → dist}/resources/Audit.d.ts +0 -0
- /package/{types → dist}/resources/CatalogDetails.d.ts +0 -0
- /package/{types → dist}/resources/CollectionModels.d.ts +0 -0
- /package/{types → dist}/resources/CollectionSubFamilies.d.ts +0 -0
- /package/{types → dist}/resources/CollectionSubModels.d.ts +0 -0
- /package/{types → dist}/resources/DProductSubLine.d.ts +0 -0
- /package/{types → dist}/resources/FamilyDetails.d.ts +0 -0
- /package/{types → dist}/resources/ProductDetails.d.ts +0 -0
- /package/{types → dist}/resources/ProductRelation.d.ts +0 -0
- /package/{types → dist}/resources/cfFields.d.ts +0 -0
- /package/{types → dist}/types.d.ts +0 -0
- /package/{types → dist}/utils.d.ts +0 -0
|
@@ -1,349 +0,0 @@
|
|
|
1
|
-
import { getOtherCatalogData } from "../endpoints";
|
|
2
|
-
import {
|
|
3
|
-
updateEntry,
|
|
4
|
-
createEntryWithId,
|
|
5
|
-
getEnvironmentDefaultLocaleCode,
|
|
6
|
-
getEntryByID,
|
|
7
|
-
getEntryByCode,
|
|
8
|
-
cfLocales,
|
|
9
|
-
addFieldValue,
|
|
10
|
-
addToRelationFields,
|
|
11
|
-
} from "../../libs/contentful";
|
|
12
|
-
import { log, serverUtils } from "../../libs/logs";
|
|
13
|
-
import type {
|
|
14
|
-
Entry,
|
|
15
|
-
CreateEntryProps,
|
|
16
|
-
} from "contentful-management/dist/typings/entities/entry";
|
|
17
|
-
import {
|
|
18
|
-
CollectionModels,
|
|
19
|
-
PagedCollectionEntity,
|
|
20
|
-
} from "../../resources/CollectionModels";
|
|
21
|
-
import {
|
|
22
|
-
sleep,
|
|
23
|
-
getPimTranslations,
|
|
24
|
-
stringToSlug,
|
|
25
|
-
getLocalISOTime,
|
|
26
|
-
} from "../../utils";
|
|
27
|
-
import { PaginationResults, CfLocalizedEntryField } from "../../types";
|
|
28
|
-
import { updateComponentModelPagesToSubFamilyPage } from "./subfamilies";
|
|
29
|
-
import { setHideInRegionField } from "./products";
|
|
30
|
-
|
|
31
|
-
const getModelPageData = async (
|
|
32
|
-
names: CfLocalizedEntryField,
|
|
33
|
-
slugs: CfLocalizedEntryField,
|
|
34
|
-
pageId: string,
|
|
35
|
-
modelEntry: Entry,
|
|
36
|
-
modelPageEntry: Entry
|
|
37
|
-
): Promise<CreateEntryProps> => {
|
|
38
|
-
const defEnvLocaleCode = await getEnvironmentDefaultLocaleCode();
|
|
39
|
-
const pageData: CreateEntryProps = {
|
|
40
|
-
fields: modelPageEntry?.fields || {},
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
pageData.fields.title = names;
|
|
44
|
-
pageData.fields.slug = slugs;
|
|
45
|
-
|
|
46
|
-
pageData.fields = await addFieldValue(pageData, "internalName", pageId);
|
|
47
|
-
pageData.fields = await addFieldValue(pageData, "type", "CatalogModel");
|
|
48
|
-
|
|
49
|
-
// Topic
|
|
50
|
-
pageData.fields = await addToRelationFields(
|
|
51
|
-
pageData,
|
|
52
|
-
"topic",
|
|
53
|
-
modelEntry.sys.id
|
|
54
|
-
);
|
|
55
|
-
|
|
56
|
-
const destinations =
|
|
57
|
-
modelEntry?.fields?.destinations?.[defEnvLocaleCode] || [];
|
|
58
|
-
pageData.fields = await setHideInRegionField(destinations, pageData);
|
|
59
|
-
|
|
60
|
-
return pageData;
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Create or update model page
|
|
65
|
-
*
|
|
66
|
-
* @param modelEntry
|
|
67
|
-
* @returns
|
|
68
|
-
*/
|
|
69
|
-
const createOrUpdatePage = async (modelEntry: Entry): Promise<Entry> => {
|
|
70
|
-
const defaultEnvironmentLocaleCode = await getEnvironmentDefaultLocaleCode();
|
|
71
|
-
const pageId = `${modelEntry.sys.id}_PAGE`;
|
|
72
|
-
const names: CfLocalizedEntryField = {};
|
|
73
|
-
const slugs: CfLocalizedEntryField = {};
|
|
74
|
-
|
|
75
|
-
for (const locale of cfLocales) {
|
|
76
|
-
names[locale] =
|
|
77
|
-
modelEntry.fields.name[locale] ||
|
|
78
|
-
modelEntry.fields.name[defaultEnvironmentLocaleCode];
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
for (const locale of cfLocales) {
|
|
82
|
-
slugs[locale] = stringToSlug(
|
|
83
|
-
`${
|
|
84
|
-
modelEntry.fields.name[locale] ||
|
|
85
|
-
modelEntry.fields.name[defaultEnvironmentLocaleCode]
|
|
86
|
-
}-${modelEntry.fields.code[defaultEnvironmentLocaleCode]}`.toLowerCase()
|
|
87
|
-
);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
// PAGE
|
|
91
|
-
let modelPageEntry: Entry = await getEntryByID(pageId, "page");
|
|
92
|
-
const pageData: CreateEntryProps = await getModelPageData(
|
|
93
|
-
names,
|
|
94
|
-
slugs,
|
|
95
|
-
pageId,
|
|
96
|
-
modelEntry,
|
|
97
|
-
modelPageEntry
|
|
98
|
-
);
|
|
99
|
-
if (modelPageEntry) {
|
|
100
|
-
log(`Model page ${pageId} already exists. Updating...`);
|
|
101
|
-
modelPageEntry = await updateEntry(
|
|
102
|
-
modelPageEntry,
|
|
103
|
-
pageData,
|
|
104
|
-
modelPageEntry.isPublished()
|
|
105
|
-
);
|
|
106
|
-
} else {
|
|
107
|
-
log(`Model page ${pageId} not exists. Create new entry with data`);
|
|
108
|
-
modelPageEntry = await createEntryWithId("page", pageId, pageData);
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
return modelPageEntry;
|
|
112
|
-
};
|
|
113
|
-
|
|
114
|
-
const getTopicModelData = async (
|
|
115
|
-
model: PagedCollectionEntity,
|
|
116
|
-
topicModel: Entry
|
|
117
|
-
) => {
|
|
118
|
-
const defaultEnvironmentLocaleCode = await getEnvironmentDefaultLocaleCode();
|
|
119
|
-
|
|
120
|
-
const data: CreateEntryProps = {
|
|
121
|
-
fields: topicModel?.fields || {},
|
|
122
|
-
};
|
|
123
|
-
data.fields.name = getPimTranslations(model.data);
|
|
124
|
-
data.fields = await addFieldValue(data, "code", model.code);
|
|
125
|
-
data.fields = await addFieldValue(data, "priority", model.priority);
|
|
126
|
-
data.fields.description = getPimTranslations(model, "description1");
|
|
127
|
-
|
|
128
|
-
// Related subFamily
|
|
129
|
-
if (model.subFamilyCode) {
|
|
130
|
-
const subFamilyEntry = await getEntryByCode(
|
|
131
|
-
model.subFamilyCode,
|
|
132
|
-
"topicSubFamily",
|
|
133
|
-
"sys,fields.code,fields.catalog"
|
|
134
|
-
);
|
|
135
|
-
if (subFamilyEntry) {
|
|
136
|
-
data.fields = await addToRelationFields(
|
|
137
|
-
data,
|
|
138
|
-
"subFamily",
|
|
139
|
-
subFamilyEntry.sys.id
|
|
140
|
-
);
|
|
141
|
-
|
|
142
|
-
// Catalog
|
|
143
|
-
data.fields = await addToRelationFields(
|
|
144
|
-
data,
|
|
145
|
-
"catalog",
|
|
146
|
-
subFamilyEntry.fields.catalog[defaultEnvironmentLocaleCode].sys.id
|
|
147
|
-
);
|
|
148
|
-
} else {
|
|
149
|
-
log(
|
|
150
|
-
`topicSubFamily with code ${model.subFamilyCode} not found so it is not possible to set subFamily and the catalog fields`,
|
|
151
|
-
"WARN"
|
|
152
|
-
);
|
|
153
|
-
}
|
|
154
|
-
} else {
|
|
155
|
-
log(
|
|
156
|
-
`subFamily not set so it is not possible to set it and the catalog fields`,
|
|
157
|
-
"WARN"
|
|
158
|
-
);
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
// Related productLine
|
|
162
|
-
if (model.productLineCode) {
|
|
163
|
-
const productLineEntry = await getEntryByCode(
|
|
164
|
-
model.productLineCode,
|
|
165
|
-
"topicProductLine",
|
|
166
|
-
"sys,fields.code"
|
|
167
|
-
);
|
|
168
|
-
if (productLineEntry) {
|
|
169
|
-
data.fields = await addToRelationFields(
|
|
170
|
-
data,
|
|
171
|
-
"productLine",
|
|
172
|
-
productLineEntry.sys.id
|
|
173
|
-
);
|
|
174
|
-
} else {
|
|
175
|
-
log(
|
|
176
|
-
`topicProductLine with code ${model.productLineCode} not found`,
|
|
177
|
-
"WARN"
|
|
178
|
-
);
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
// Related productLine
|
|
183
|
-
if (model.productLineCode) {
|
|
184
|
-
const productLineEntry = await getEntryByCode(
|
|
185
|
-
model.productLineCode,
|
|
186
|
-
"topicProductLine",
|
|
187
|
-
"sys,fields.code"
|
|
188
|
-
);
|
|
189
|
-
if (productLineEntry) {
|
|
190
|
-
data.fields = await addToRelationFields(
|
|
191
|
-
data,
|
|
192
|
-
"productLine",
|
|
193
|
-
productLineEntry.sys.id
|
|
194
|
-
);
|
|
195
|
-
} else {
|
|
196
|
-
log(
|
|
197
|
-
`topicProductLine with code ${model.productLineCode} not found`,
|
|
198
|
-
"WARN"
|
|
199
|
-
);
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
// Related designer
|
|
204
|
-
if (model.designers.length) {
|
|
205
|
-
const designerCode = model.designers[0].code;
|
|
206
|
-
const designerEntry = await getEntryByCode(
|
|
207
|
-
designerCode,
|
|
208
|
-
"topicDesigner",
|
|
209
|
-
"sys,fields.code"
|
|
210
|
-
);
|
|
211
|
-
if (designerEntry) {
|
|
212
|
-
data.fields = await addToRelationFields(
|
|
213
|
-
data,
|
|
214
|
-
"designer",
|
|
215
|
-
designerEntry.sys.id
|
|
216
|
-
);
|
|
217
|
-
} else {
|
|
218
|
-
log(`topicDesigner with code ${designerCode} not found`, "WARN");
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
// Destinations
|
|
223
|
-
if (model?.destinations?.length) {
|
|
224
|
-
log(`set destinations`);
|
|
225
|
-
data.fields = await addFieldValue(data, "destinations", model.destinations);
|
|
226
|
-
} else {
|
|
227
|
-
log(`destinations not found`, "WARN");
|
|
228
|
-
}
|
|
229
|
-
|
|
230
|
-
// lastPimSyncDate
|
|
231
|
-
data.fields = await addFieldValue(data, "lastPimSyncDate", getLocalISOTime());
|
|
232
|
-
|
|
233
|
-
return data;
|
|
234
|
-
};
|
|
235
|
-
|
|
236
|
-
const updateComponentModelOfSubFamilyPages = async (topicModel: Entry) => {
|
|
237
|
-
const defaultEnvironmentLocaleCode = await getEnvironmentDefaultLocaleCode();
|
|
238
|
-
const subFamilyId =
|
|
239
|
-
topicModel?.fields?.subFamily?.[defaultEnvironmentLocaleCode]?.sys?.id;
|
|
240
|
-
if (subFamilyId) {
|
|
241
|
-
const subFamilyEntry = await getEntryByID(subFamilyId, "topicSubFamily");
|
|
242
|
-
if (subFamilyEntry) {
|
|
243
|
-
log(
|
|
244
|
-
`Add ${topicModel?.sys?.id} to componentModelPages of the ${subFamilyEntry.sys.id} subFamily page`
|
|
245
|
-
);
|
|
246
|
-
const subFamilyPageEntry = await updateComponentModelPagesToSubFamilyPage(
|
|
247
|
-
subFamilyEntry
|
|
248
|
-
);
|
|
249
|
-
log(`${subFamilyPageEntry?.sys?.id} subFamilyPage updated`);
|
|
250
|
-
} else {
|
|
251
|
-
log(
|
|
252
|
-
`subFamily entry with id ${subFamilyId} not found, I cannot add the relationship with the ${topicModel?.sys?.id} model to the componentModelPages contained in the subfamily page`,
|
|
253
|
-
"WARN"
|
|
254
|
-
);
|
|
255
|
-
}
|
|
256
|
-
} else {
|
|
257
|
-
log(
|
|
258
|
-
`subFamilyId not found to model ${topicModel?.sys?.id}, I cannot add the relationship to the componentModelPages contained in the subfamily page`,
|
|
259
|
-
"WARN"
|
|
260
|
-
);
|
|
261
|
-
}
|
|
262
|
-
};
|
|
263
|
-
|
|
264
|
-
/**
|
|
265
|
-
* Import model
|
|
266
|
-
*
|
|
267
|
-
* @param model
|
|
268
|
-
* @returns
|
|
269
|
-
*/
|
|
270
|
-
const importModel = async (model: PagedCollectionEntity): Promise<Entry> => {
|
|
271
|
-
const code = `${model.code}`;
|
|
272
|
-
let topicModel: Entry = await getEntryByID(code, "topicModel");
|
|
273
|
-
|
|
274
|
-
const topicModelData: CreateEntryProps = await getTopicModelData(
|
|
275
|
-
model,
|
|
276
|
-
topicModel
|
|
277
|
-
);
|
|
278
|
-
if (topicModel) {
|
|
279
|
-
log(`The topicModel ${code} already exists. Updating...`);
|
|
280
|
-
topicModel = await updateEntry(
|
|
281
|
-
topicModel,
|
|
282
|
-
topicModelData,
|
|
283
|
-
topicModel.isPublished()
|
|
284
|
-
);
|
|
285
|
-
} else {
|
|
286
|
-
log(`The topicModel ${code} not exists. Creating...`);
|
|
287
|
-
topicModel = await createEntryWithId("topicModel", code, topicModelData);
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
return topicModel;
|
|
291
|
-
};
|
|
292
|
-
|
|
293
|
-
/**
|
|
294
|
-
* Import Models
|
|
295
|
-
*
|
|
296
|
-
* @param {number} offset Default 0
|
|
297
|
-
* @param {number} limit Range 0-40. Default 40
|
|
298
|
-
* @returns {object}
|
|
299
|
-
*/
|
|
300
|
-
export const importModels = async (
|
|
301
|
-
offset: number = 0,
|
|
302
|
-
limit: number = 40
|
|
303
|
-
): Promise<PaginationResults> => {
|
|
304
|
-
log(`importModels - offset: ${offset}, limit: ${limit}`, "INFO");
|
|
305
|
-
const models = await getOtherCatalogData<CollectionModels>(
|
|
306
|
-
"models",
|
|
307
|
-
offset,
|
|
308
|
-
limit
|
|
309
|
-
);
|
|
310
|
-
const total = models?.pagedCollection?.length || 0;
|
|
311
|
-
|
|
312
|
-
if (models?.pagedCollection?.length) {
|
|
313
|
-
log(`Founded ${total} models`);
|
|
314
|
-
let count = offset;
|
|
315
|
-
let current: number = 0;
|
|
316
|
-
for (const model of models.pagedCollection) {
|
|
317
|
-
log(`${++count} of ${models.totalCount}`);
|
|
318
|
-
|
|
319
|
-
const topicModel = await importModel(model);
|
|
320
|
-
|
|
321
|
-
await createOrUpdatePage(topicModel);
|
|
322
|
-
await updateComponentModelOfSubFamilyPages(topicModel);
|
|
323
|
-
|
|
324
|
-
if (serverUtils) {
|
|
325
|
-
serverUtils.log(model.code);
|
|
326
|
-
const progress = Math.floor(
|
|
327
|
-
(++current / models.pagedCollection.length) * 100
|
|
328
|
-
);
|
|
329
|
-
serverUtils.updateProgress(progress);
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
// Max 7 calls per seconds
|
|
333
|
-
if (count % 2 === 0 && count < models.totalCount) {
|
|
334
|
-
await sleep(1000);
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
} else {
|
|
338
|
-
log(`No models found`);
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
const nextOffset = Number(offset) + Number(limit);
|
|
342
|
-
|
|
343
|
-
return {
|
|
344
|
-
offset: nextOffset,
|
|
345
|
-
limit: Number(limit),
|
|
346
|
-
completed: nextOffset >= models.totalCount,
|
|
347
|
-
total: models.totalCount,
|
|
348
|
-
};
|
|
349
|
-
};
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { getAllEntries, getEntryByID } from "../../../libs/contentful";
|
|
2
|
-
import { importCatalogPage } from "../catalogs";
|
|
3
|
-
import { AvailableCatalogs } from "../../../types";
|
|
4
|
-
import { log } from "../../../libs/logs";
|
|
5
|
-
|
|
6
|
-
export const createOrUpdateCatalogPages = async () => {
|
|
7
|
-
const allTopicCatalgs = await getAllEntries("topicCatalog");
|
|
8
|
-
|
|
9
|
-
if (allTopicCatalgs) {
|
|
10
|
-
for (const topicCatalog of allTopicCatalgs) {
|
|
11
|
-
await importCatalogPage(topicCatalog);
|
|
12
|
-
}
|
|
13
|
-
} else {
|
|
14
|
-
log(`No topicCatalog not found`, "WARN");
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
export const createOrUpdateCatalogPageByCode = async (
|
|
19
|
-
catalogCode: AvailableCatalogs
|
|
20
|
-
) => {
|
|
21
|
-
const topicCatalog = await getEntryByID(catalogCode, "topicCatalog");
|
|
22
|
-
|
|
23
|
-
if (topicCatalog) {
|
|
24
|
-
await importCatalogPage(topicCatalog);
|
|
25
|
-
} else {
|
|
26
|
-
log(`topicCatalog ${catalogCode} not found`, "WARN");
|
|
27
|
-
}
|
|
28
|
-
};
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { getAllEntries, getEntryByID } from "../../../libs/contentful";
|
|
2
|
-
import { createOrUpdatePage } from "../families";
|
|
3
|
-
import { log } from "../../../libs/logs";
|
|
4
|
-
|
|
5
|
-
export const createOrUpdateFamilyPages = async (
|
|
6
|
-
offset: number,
|
|
7
|
-
limit: number = 10
|
|
8
|
-
) => {
|
|
9
|
-
const allTopics = await getAllEntries("topicFamily");
|
|
10
|
-
|
|
11
|
-
if (allTopics) {
|
|
12
|
-
let count: number = 0;
|
|
13
|
-
const total = allTopics.length;
|
|
14
|
-
for (const topic of allTopics) {
|
|
15
|
-
if (offset <= count || limit === -1) {
|
|
16
|
-
log(`${count + 1} of ${total}`);
|
|
17
|
-
await createOrUpdatePage(topic);
|
|
18
|
-
if (limit !== -1 && count + 1 - offset >= limit) {
|
|
19
|
-
break;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
count++;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
const nextOffset = Number(offset) + Number(limit);
|
|
26
|
-
|
|
27
|
-
return {
|
|
28
|
-
offset: nextOffset,
|
|
29
|
-
limit: Number(limit),
|
|
30
|
-
completed: nextOffset >= total,
|
|
31
|
-
};
|
|
32
|
-
} else {
|
|
33
|
-
log(`No topicFamily not found`, "WARN");
|
|
34
|
-
return {
|
|
35
|
-
offset: Number(offset),
|
|
36
|
-
limit: Number(limit),
|
|
37
|
-
completed: true,
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
export const createOrUpdateFamilyPageByCode = async (familyCode: string) => {
|
|
43
|
-
const topic = await getEntryByID(familyCode, "topicFamily");
|
|
44
|
-
|
|
45
|
-
if (topic) {
|
|
46
|
-
await createOrUpdatePage(topic);
|
|
47
|
-
} else {
|
|
48
|
-
log(`topicFamily ${familyCode} not found`, "WARN");
|
|
49
|
-
}
|
|
50
|
-
};
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import { getAllEntries, getEntryByID } from "../../../libs/contentful";
|
|
2
|
-
import { createOrUpdatePage } from "../subfamilies";
|
|
3
|
-
import { AvailableCatalogs } from "../../../types";
|
|
4
|
-
import { log } from "../../../libs/logs";
|
|
5
|
-
|
|
6
|
-
export const createOrUpdateSubFamilyPages = async (
|
|
7
|
-
offset: number,
|
|
8
|
-
limit: number = 10
|
|
9
|
-
) => {
|
|
10
|
-
const allTopics = await getAllEntries("topicSubFamily");
|
|
11
|
-
|
|
12
|
-
if (allTopics) {
|
|
13
|
-
let count: number = 0;
|
|
14
|
-
const total = allTopics.length;
|
|
15
|
-
for (const topic of allTopics) {
|
|
16
|
-
if (offset <= count || limit === -1) {
|
|
17
|
-
log(`${count + 1} of ${total}`);
|
|
18
|
-
await createOrUpdatePage(topic);
|
|
19
|
-
if (limit !== -1 && count + 1 - offset >= limit) {
|
|
20
|
-
break;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
count++;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
const nextOffset = Number(offset) + Number(limit);
|
|
27
|
-
|
|
28
|
-
return {
|
|
29
|
-
offset: nextOffset,
|
|
30
|
-
limit: Number(limit),
|
|
31
|
-
completed: nextOffset >= total,
|
|
32
|
-
};
|
|
33
|
-
} else {
|
|
34
|
-
log(`No topicSubFamily not found`, "WARN");
|
|
35
|
-
return {
|
|
36
|
-
offset: Number(offset),
|
|
37
|
-
limit: Number(limit),
|
|
38
|
-
completed: true,
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
export const createOrUpdateSubFamilyPageByCode = async (
|
|
44
|
-
subfamilyCode: string
|
|
45
|
-
) => {
|
|
46
|
-
const topic = await getEntryByID(subfamilyCode, "topicSubFamily");
|
|
47
|
-
|
|
48
|
-
if (topic) {
|
|
49
|
-
await createOrUpdatePage(topic);
|
|
50
|
-
} else {
|
|
51
|
-
log(`topicSubFamily ${subfamilyCode} not found`, "WARN");
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
export const createOrUpdateSubFamilyPagesByCatalog = async (
|
|
56
|
-
catalogCode: AvailableCatalogs,
|
|
57
|
-
offset: number,
|
|
58
|
-
limit: number = 10
|
|
59
|
-
) => {
|
|
60
|
-
const allTopics = await getAllEntries(
|
|
61
|
-
"topicSubFamily",
|
|
62
|
-
"",
|
|
63
|
-
"fields.catalog.sys.id",
|
|
64
|
-
catalogCode
|
|
65
|
-
);
|
|
66
|
-
|
|
67
|
-
if (allTopics) {
|
|
68
|
-
let count: number = 0;
|
|
69
|
-
const total = allTopics.length;
|
|
70
|
-
for (const topic of allTopics) {
|
|
71
|
-
if (offset <= count || limit === -1) {
|
|
72
|
-
log(`${count + 1} of ${total}`);
|
|
73
|
-
await createOrUpdatePage(topic);
|
|
74
|
-
|
|
75
|
-
if (limit !== -1 && count + 1 - offset >= limit) {
|
|
76
|
-
break;
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
count++;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
const nextOffset = Number(offset) + Number(limit);
|
|
83
|
-
|
|
84
|
-
return {
|
|
85
|
-
offset: nextOffset,
|
|
86
|
-
limit: Number(limit),
|
|
87
|
-
completed: nextOffset >= total,
|
|
88
|
-
};
|
|
89
|
-
} else {
|
|
90
|
-
log(`No topicSubFamily not found on catalog ${catalogCode}`, "WARN");
|
|
91
|
-
|
|
92
|
-
return {
|
|
93
|
-
offset: Number(offset),
|
|
94
|
-
limit: Number(limit),
|
|
95
|
-
completed: true,
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
};
|