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,709 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SubFamilies index
|
|
3
|
-
*/
|
|
4
|
-
import {
|
|
5
|
-
getClient,
|
|
6
|
-
getEnvironmentDefaultLocaleCode,
|
|
7
|
-
getEntryByID,
|
|
8
|
-
getAllEntries,
|
|
9
|
-
getTopicDetails,
|
|
10
|
-
} from "../libs/contentful-cda";
|
|
11
|
-
import { AlgoliaPaginateRecords, AvailableCatalogs } from "../types";
|
|
12
|
-
import type { Entry } from "contentful-management/dist/typings/entities/entry";
|
|
13
|
-
import { log, serverUtils } from "../libs/logs";
|
|
14
|
-
import { getIndex, AvailableIndicesKey, removeIndexObject } from "./config";
|
|
15
|
-
import {
|
|
16
|
-
getLocalISOTime,
|
|
17
|
-
sanitizeValue,
|
|
18
|
-
secondBetweenTwoDate,
|
|
19
|
-
addProductFieldValueCodesByPimDetails,
|
|
20
|
-
getCertificationFilters,
|
|
21
|
-
capitalizeFirstLetter,
|
|
22
|
-
getAllTranslations,
|
|
23
|
-
} from "../utils";
|
|
24
|
-
import { getWrapperImgixFields } from "../libs/imgix";
|
|
25
|
-
import { AlgoliaFamilyRecord, pageResponse } from "./families";
|
|
26
|
-
import { getSubFamilyPageSlugWithDetails } from "../pim/methods/subfamilies";
|
|
27
|
-
// import fs from "fs";
|
|
28
|
-
|
|
29
|
-
const indexKey: AvailableIndicesKey = "subFamilies";
|
|
30
|
-
|
|
31
|
-
const getSubFamilyPage = async (
|
|
32
|
-
topicSubFamily: Entry
|
|
33
|
-
): Promise<pageResponse> => {
|
|
34
|
-
const defaultEnvironmentLocaleCode = await getEnvironmentDefaultLocaleCode();
|
|
35
|
-
const subFamilyPage = await getEntryByID(
|
|
36
|
-
`${topicSubFamily.sys.id}_PAGE`,
|
|
37
|
-
"page"
|
|
38
|
-
);
|
|
39
|
-
if (!subFamilyPage) {
|
|
40
|
-
log(`${topicSubFamily.sys.id}_PAGE not found`, "WARN");
|
|
41
|
-
return {
|
|
42
|
-
slugs: {},
|
|
43
|
-
type: "",
|
|
44
|
-
// details: {},
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
const subFamilyPageId = subFamilyPage.sys.id;
|
|
49
|
-
|
|
50
|
-
// check if subFamily has many relations with model
|
|
51
|
-
log(`check if subFamily has many relations with model`);
|
|
52
|
-
const client = await getClient();
|
|
53
|
-
const { items: modelEntries } = await client.withAllLocales.getEntries({
|
|
54
|
-
content_type: "topicModel",
|
|
55
|
-
"fields.subFamily.sys.id": subFamilyPageId.replace("_PAGE", ""),
|
|
56
|
-
limit: 2,
|
|
57
|
-
select: "sys,fields.catalog,fields.subFamily",
|
|
58
|
-
});
|
|
59
|
-
|
|
60
|
-
if (modelEntries?.length === 1) {
|
|
61
|
-
log(`Return model page slug`);
|
|
62
|
-
// Return model page slug
|
|
63
|
-
const modelEntry = modelEntries[0];
|
|
64
|
-
const modelPageId = `${modelEntry.sys.id}_PAGE`;
|
|
65
|
-
const modelPage = await getEntryByID(
|
|
66
|
-
modelPageId,
|
|
67
|
-
"page",
|
|
68
|
-
"fields.slug,fields.type"
|
|
69
|
-
);
|
|
70
|
-
|
|
71
|
-
// const catalogEntryId =
|
|
72
|
-
// modelEntry?.fields?.catalog?.[defaultEnvironmentLocaleCode]?.sys?.id;
|
|
73
|
-
// const modelCatalogPage: any = catalogEntryId
|
|
74
|
-
// ? await getEntryByID(`${catalogEntryId}_PAGE`, "page", "fields.slug")
|
|
75
|
-
// : {};
|
|
76
|
-
// const subFamilyEntryId =
|
|
77
|
-
// modelEntry?.fields?.subFamily?.[defaultEnvironmentLocaleCode]?.sys?.id;
|
|
78
|
-
// const modelCatalogSubFamilyPage: any = subFamilyEntryId
|
|
79
|
-
// ? await getEntryByID(`${subFamilyEntryId}_PAGE`, "page", "fields.slug")
|
|
80
|
-
// : {};
|
|
81
|
-
if (modelPage) {
|
|
82
|
-
return {
|
|
83
|
-
slugs: modelPage?.fields?.slug,
|
|
84
|
-
type: modelPage?.fields?.type?.[defaultEnvironmentLocaleCode],
|
|
85
|
-
// details: {
|
|
86
|
-
// catalogPageSlugs:
|
|
87
|
-
// keysToLowerCase(modelCatalogPage?.fields?.slug) || {},
|
|
88
|
-
// subFamilyPageSlugs:
|
|
89
|
-
// keysToLowerCase(modelCatalogSubFamilyPage?.fields?.slug) || {},
|
|
90
|
-
// },
|
|
91
|
-
};
|
|
92
|
-
} else {
|
|
93
|
-
log(`The modelPage with id "${modelPageId}" not found`, "WARN");
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
// Return SubFamily page slug
|
|
98
|
-
if (subFamilyPage) {
|
|
99
|
-
log(`Return SubFamily page slug`);
|
|
100
|
-
return getSubFamilyPageSlugWithDetails(topicSubFamily);
|
|
101
|
-
} else {
|
|
102
|
-
log(
|
|
103
|
-
`The subFamilyPage with id "${topicSubFamily.sys.id}_PAGE" not found`,
|
|
104
|
-
"WARN"
|
|
105
|
-
);
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
// if it doesn't find any slugs
|
|
109
|
-
log(`slug not found`, "WARN");
|
|
110
|
-
return null;
|
|
111
|
-
};
|
|
112
|
-
|
|
113
|
-
const getProductFields = async (
|
|
114
|
-
topicSubFamily: Entry,
|
|
115
|
-
destination: "PROFESSIONAL_GLOBAL" | "PROFESSIONAL_US" = "PROFESSIONAL_GLOBAL"
|
|
116
|
-
): Promise<any> => {
|
|
117
|
-
const defaultEnvironmentLocaleCode = await getEnvironmentDefaultLocaleCode();
|
|
118
|
-
const catalogName = capitalizeFirstLetter(
|
|
119
|
-
(
|
|
120
|
-
topicSubFamily.fields.catalog?.[defaultEnvironmentLocaleCode]?.sys.id ||
|
|
121
|
-
""
|
|
122
|
-
).toLowerCase()
|
|
123
|
-
);
|
|
124
|
-
if (!catalogName) {
|
|
125
|
-
log(`Cannot find catalog name`, "WARN");
|
|
126
|
-
return {};
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
const fieldName = `subFamilies${catalogName}`;
|
|
130
|
-
|
|
131
|
-
const topicProductEntries = await getAllEntries(
|
|
132
|
-
"topicProduct",
|
|
133
|
-
"sys,fields.productFields",
|
|
134
|
-
`fields.${fieldName}.sys.id[in]`,
|
|
135
|
-
`${topicSubFamily.sys.id}`,
|
|
136
|
-
50,
|
|
137
|
-
[{ key: "fields.destinations[in]", value: destination }]
|
|
138
|
-
);
|
|
139
|
-
if (!topicProductEntries?.length) {
|
|
140
|
-
log(`No products founded for subFamily ${topicSubFamily.sys.id}`, "WARN");
|
|
141
|
-
return false;
|
|
142
|
-
} else {
|
|
143
|
-
log(`${topicProductEntries?.length} products founded`);
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
let productFields: any = {};
|
|
147
|
-
productFields.availableTo = [];
|
|
148
|
-
const allDestinations =
|
|
149
|
-
topicSubFamily?.fields?.destinations?.[defaultEnvironmentLocaleCode] || [];
|
|
150
|
-
productFields.totalProducts = {};
|
|
151
|
-
for (const destination of allDestinations) {
|
|
152
|
-
productFields.totalProducts[destination] = topicProductEntries.filter(
|
|
153
|
-
(topicProductEntry) =>
|
|
154
|
-
topicProductEntry?.fields?.productFields?.[
|
|
155
|
-
defaultEnvironmentLocaleCode
|
|
156
|
-
]?.destinations?.find(
|
|
157
|
-
(productDestination: any) => productDestination.code === destination
|
|
158
|
-
)
|
|
159
|
-
).length;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
for (const topicProduct of topicProductEntries) {
|
|
163
|
-
if (topicProduct?.fields?.productFields?.[defaultEnvironmentLocaleCode]) {
|
|
164
|
-
const pimDetails =
|
|
165
|
-
topicProduct?.fields?.productFields?.[defaultEnvironmentLocaleCode];
|
|
166
|
-
|
|
167
|
-
// AVAILABLE TO
|
|
168
|
-
if (
|
|
169
|
-
pimDetails.visibleToShop &&
|
|
170
|
-
!productFields.availableTo.includes("visibleToShop")
|
|
171
|
-
) {
|
|
172
|
-
productFields.availableTo.push("visibleToShop");
|
|
173
|
-
}
|
|
174
|
-
if (
|
|
175
|
-
pimDetails.quickDelivery &&
|
|
176
|
-
!productFields.availableTo.includes("quickDelivery")
|
|
177
|
-
) {
|
|
178
|
-
productFields.availableTo.push("quickDelivery");
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
if (!productFields?.certification) {
|
|
182
|
-
productFields.certification = [];
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
// CERTIFICATION - ENEC | PIM certification->enec
|
|
186
|
-
if (
|
|
187
|
-
pimDetails?.certification?.enec?.code &&
|
|
188
|
-
sanitizeValue(pimDetails.certification.enec.code) &&
|
|
189
|
-
productFields?.certification.indexOf("ENEC") === -1
|
|
190
|
-
) {
|
|
191
|
-
productFields.certification.push("ENEC");
|
|
192
|
-
}
|
|
193
|
-
// CERTIFICATION - UL | PIM certification->ul
|
|
194
|
-
if (
|
|
195
|
-
pimDetails?.certification?.ul?.code &&
|
|
196
|
-
sanitizeValue(pimDetails.certification.ul.code) &&
|
|
197
|
-
productFields?.certification.indexOf("UL") === -1
|
|
198
|
-
) {
|
|
199
|
-
productFields.certification.push("UL");
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
// MOUNTINGS [Has many]
|
|
203
|
-
productFields = addProductFieldValueCodesByPimDetails(
|
|
204
|
-
pimDetails,
|
|
205
|
-
productFields,
|
|
206
|
-
"mountings"
|
|
207
|
-
);
|
|
208
|
-
|
|
209
|
-
// LOCATIONS [Has many]
|
|
210
|
-
productFields = addProductFieldValueCodesByPimDetails(
|
|
211
|
-
pimDetails,
|
|
212
|
-
productFields,
|
|
213
|
-
"locations"
|
|
214
|
-
);
|
|
215
|
-
|
|
216
|
-
// ORINTATIONS [Has many]
|
|
217
|
-
productFields = addProductFieldValueCodesByPimDetails(
|
|
218
|
-
pimDetails,
|
|
219
|
-
productFields,
|
|
220
|
-
"orientations",
|
|
221
|
-
"physical"
|
|
222
|
-
);
|
|
223
|
-
|
|
224
|
-
// LENGTH (MM)
|
|
225
|
-
productFields = addProductFieldValueCodesByPimDetails(
|
|
226
|
-
pimDetails,
|
|
227
|
-
productFields,
|
|
228
|
-
"length",
|
|
229
|
-
"physical"
|
|
230
|
-
);
|
|
231
|
-
|
|
232
|
-
// LENGTH (IN)
|
|
233
|
-
productFields = addProductFieldValueCodesByPimDetails(
|
|
234
|
-
pimDetails,
|
|
235
|
-
productFields,
|
|
236
|
-
"length_us",
|
|
237
|
-
"physical"
|
|
238
|
-
);
|
|
239
|
-
|
|
240
|
-
// SHAPE
|
|
241
|
-
productFields = addProductFieldValueCodesByPimDetails(
|
|
242
|
-
pimDetails,
|
|
243
|
-
productFields,
|
|
244
|
-
"shapes",
|
|
245
|
-
"physical"
|
|
246
|
-
);
|
|
247
|
-
|
|
248
|
-
// POWER (W) | PIM wPower
|
|
249
|
-
productFields = addProductFieldValueCodesByPimDetails(
|
|
250
|
-
pimDetails,
|
|
251
|
-
productFields,
|
|
252
|
-
"wPower",
|
|
253
|
-
"electrical"
|
|
254
|
-
);
|
|
255
|
-
|
|
256
|
-
// System flux (lm) | PIM realNetFlow
|
|
257
|
-
productFields = addProductFieldValueCodesByPimDetails(
|
|
258
|
-
pimDetails,
|
|
259
|
-
productFields,
|
|
260
|
-
"realNetFlow",
|
|
261
|
-
"photometric"
|
|
262
|
-
);
|
|
263
|
-
|
|
264
|
-
// CCT (K) [Only one] | PIM temperatureColor
|
|
265
|
-
productFields = addProductFieldValueCodesByPimDetails(
|
|
266
|
-
pimDetails,
|
|
267
|
-
productFields,
|
|
268
|
-
"temperatureColor",
|
|
269
|
-
"photometric"
|
|
270
|
-
);
|
|
271
|
-
|
|
272
|
-
// CRI> [Only one]
|
|
273
|
-
productFields = addProductFieldValueCodesByPimDetails(
|
|
274
|
-
pimDetails,
|
|
275
|
-
productFields,
|
|
276
|
-
"cri",
|
|
277
|
-
"photometric"
|
|
278
|
-
);
|
|
279
|
-
|
|
280
|
-
// Dimmable| PIM dimming [Has many]
|
|
281
|
-
productFields = addProductFieldValueCodesByPimDetails(
|
|
282
|
-
pimDetails,
|
|
283
|
-
productFields,
|
|
284
|
-
"dimming",
|
|
285
|
-
"electrical"
|
|
286
|
-
);
|
|
287
|
-
|
|
288
|
-
// | PIM bucketColours [Has many]
|
|
289
|
-
productFields = addProductFieldValueCodesByPimDetails(
|
|
290
|
-
pimDetails,
|
|
291
|
-
productFields,
|
|
292
|
-
"bucketColours"
|
|
293
|
-
);
|
|
294
|
-
|
|
295
|
-
// DRIVER TYPE | PIM powerSupplyType [Has many]
|
|
296
|
-
productFields = addProductFieldValueCodesByPimDetails(
|
|
297
|
-
pimDetails,
|
|
298
|
-
productFields,
|
|
299
|
-
"powerSupplyType",
|
|
300
|
-
"electrical"
|
|
301
|
-
);
|
|
302
|
-
|
|
303
|
-
// LIGHTING DISTRIBUTIONS | PIM powerSupplyType [Has many]
|
|
304
|
-
productFields = addProductFieldValueCodesByPimDetails(
|
|
305
|
-
pimDetails,
|
|
306
|
-
productFields,
|
|
307
|
-
"lightingDistributions",
|
|
308
|
-
"optical"
|
|
309
|
-
);
|
|
310
|
-
|
|
311
|
-
// OPTICAL TYPE [Only one]
|
|
312
|
-
productFields = addProductFieldValueCodesByPimDetails(
|
|
313
|
-
pimDetails,
|
|
314
|
-
productFields,
|
|
315
|
-
"opticalType",
|
|
316
|
-
"optical"
|
|
317
|
-
);
|
|
318
|
-
|
|
319
|
-
// MARKETS [Has many]
|
|
320
|
-
productFields = addProductFieldValueCodesByPimDetails(
|
|
321
|
-
pimDetails,
|
|
322
|
-
productFields,
|
|
323
|
-
"markets"
|
|
324
|
-
);
|
|
325
|
-
|
|
326
|
-
// UPGRADE
|
|
327
|
-
productFields = addProductFieldValueCodesByPimDetails(
|
|
328
|
-
pimDetails,
|
|
329
|
-
productFields,
|
|
330
|
-
"upgrade"
|
|
331
|
-
);
|
|
332
|
-
|
|
333
|
-
// CERTIFICATIONS;
|
|
334
|
-
productFields = addProductFieldValueCodesByPimDetails(
|
|
335
|
-
pimDetails,
|
|
336
|
-
productFields,
|
|
337
|
-
"certifications"
|
|
338
|
-
);
|
|
339
|
-
|
|
340
|
-
// EXTERNAL IP
|
|
341
|
-
productFields = addProductFieldValueCodesByPimDetails(
|
|
342
|
-
pimDetails,
|
|
343
|
-
productFields,
|
|
344
|
-
"externalIp",
|
|
345
|
-
"marking"
|
|
346
|
-
);
|
|
347
|
-
|
|
348
|
-
// INTERNAL IP
|
|
349
|
-
productFields = addProductFieldValueCodesByPimDetails(
|
|
350
|
-
pimDetails,
|
|
351
|
-
productFields,
|
|
352
|
-
"ipCategory",
|
|
353
|
-
"marking"
|
|
354
|
-
);
|
|
355
|
-
|
|
356
|
-
// IP
|
|
357
|
-
productFields = addProductFieldValueCodesByPimDetails(
|
|
358
|
-
pimDetails,
|
|
359
|
-
productFields,
|
|
360
|
-
"ipRating",
|
|
361
|
-
"marking"
|
|
362
|
-
);
|
|
363
|
-
|
|
364
|
-
// MARKINGS
|
|
365
|
-
productFields = addProductFieldValueCodesByPimDetails(
|
|
366
|
-
pimDetails,
|
|
367
|
-
productFields,
|
|
368
|
-
"markings",
|
|
369
|
-
"marking"
|
|
370
|
-
);
|
|
371
|
-
|
|
372
|
-
// log(`Get certificationFilters details...`);
|
|
373
|
-
productFields.certificationFilters = getCertificationFilters(pimDetails);
|
|
374
|
-
|
|
375
|
-
// log(`Get filterableCertifications details...`);
|
|
376
|
-
const filterableCertificationsFields = ["enec", "ul", "certificates"];
|
|
377
|
-
for (const filterableCertificationsField of filterableCertificationsFields) {
|
|
378
|
-
productFields = addProductFieldValueCodesByPimDetails(
|
|
379
|
-
pimDetails,
|
|
380
|
-
productFields,
|
|
381
|
-
filterableCertificationsField,
|
|
382
|
-
"certification",
|
|
383
|
-
"filterableCertifications",
|
|
384
|
-
false,
|
|
385
|
-
true
|
|
386
|
-
);
|
|
387
|
-
}
|
|
388
|
-
|
|
389
|
-
if (!productFields?.certification) {
|
|
390
|
-
productFields.certification = {};
|
|
391
|
-
}
|
|
392
|
-
|
|
393
|
-
productFields.certification.enecCertified =
|
|
394
|
-
!!productFields.certification?.enecCertified;
|
|
395
|
-
|
|
396
|
-
// DESTINATIONS
|
|
397
|
-
productFields = addProductFieldValueCodesByPimDetails(
|
|
398
|
-
pimDetails,
|
|
399
|
-
productFields,
|
|
400
|
-
"destinations"
|
|
401
|
-
);
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
return productFields;
|
|
406
|
-
};
|
|
407
|
-
|
|
408
|
-
const isObjectToDelete = (
|
|
409
|
-
object: any,
|
|
410
|
-
defaultEnvironmentLocaleCode: string
|
|
411
|
-
) => {
|
|
412
|
-
return (
|
|
413
|
-
!object?.productFields || !object?.slugs?.[defaultEnvironmentLocaleCode]
|
|
414
|
-
);
|
|
415
|
-
};
|
|
416
|
-
|
|
417
|
-
const getObject = async (
|
|
418
|
-
topicSubFamily: Entry
|
|
419
|
-
): Promise<AlgoliaFamilyRecord> => {
|
|
420
|
-
const defaultEnvironmentLocaleCode = await getEnvironmentDefaultLocaleCode();
|
|
421
|
-
log(`Get details of the ${topicSubFamily.sys.id} topicSubFamily`);
|
|
422
|
-
const topicSubFamilyWithFields = await getEntryByID(
|
|
423
|
-
topicSubFamily.sys.id,
|
|
424
|
-
"topicSubFamily"
|
|
425
|
-
);
|
|
426
|
-
|
|
427
|
-
log(`Get page details...`);
|
|
428
|
-
const page = await getSubFamilyPage(topicSubFamilyWithFields);
|
|
429
|
-
log(`Slugs type: ${page?.type}`);
|
|
430
|
-
|
|
431
|
-
log(`Get catalogs details...`);
|
|
432
|
-
const catalogs = await getTopicDetails(
|
|
433
|
-
topicSubFamilyWithFields,
|
|
434
|
-
"catalog",
|
|
435
|
-
"topicCatalog"
|
|
436
|
-
);
|
|
437
|
-
log(`${catalogs?.length} catalogs founded`);
|
|
438
|
-
|
|
439
|
-
log(`Get categories details...`);
|
|
440
|
-
const categories = await getTopicDetails(
|
|
441
|
-
topicSubFamilyWithFields,
|
|
442
|
-
"category",
|
|
443
|
-
"topicCategory"
|
|
444
|
-
);
|
|
445
|
-
log(`${categories?.length} categories founded`);
|
|
446
|
-
|
|
447
|
-
log(`Get family details...`);
|
|
448
|
-
const families = await getTopicDetails(
|
|
449
|
-
topicSubFamilyWithFields,
|
|
450
|
-
"parentFamily",
|
|
451
|
-
"topicFamily"
|
|
452
|
-
);
|
|
453
|
-
const parentFamily = families?.[0];
|
|
454
|
-
log(`${parentFamily?.code} family founded`);
|
|
455
|
-
|
|
456
|
-
log(`Get productFields details...`);
|
|
457
|
-
const productFields = await getProductFields(topicSubFamilyWithFields);
|
|
458
|
-
log(`Get productFieldsUs details...`);
|
|
459
|
-
const productFieldsUs = await getProductFields(
|
|
460
|
-
topicSubFamilyWithFields,
|
|
461
|
-
"PROFESSIONAL_US"
|
|
462
|
-
);
|
|
463
|
-
|
|
464
|
-
const isNew: boolean =
|
|
465
|
-
topicSubFamilyWithFields?.fields?.isNew?.[defaultEnvironmentLocaleCode] ||
|
|
466
|
-
false;
|
|
467
|
-
|
|
468
|
-
log(`Get thumbnail imgix details...`);
|
|
469
|
-
let thumbnailImgix = {};
|
|
470
|
-
const thumbnailImgixWrapperImgixID =
|
|
471
|
-
topicSubFamilyWithFields?.fields?.thumbnailImgix?.[
|
|
472
|
-
defaultEnvironmentLocaleCode
|
|
473
|
-
]?.sys.id;
|
|
474
|
-
if (thumbnailImgixWrapperImgixID) {
|
|
475
|
-
thumbnailImgix = await getWrapperImgixFields(thumbnailImgixWrapperImgixID);
|
|
476
|
-
} else {
|
|
477
|
-
log(`No thumbnail imgix found`, "WARN");
|
|
478
|
-
}
|
|
479
|
-
|
|
480
|
-
log(`Get thumbnail imgix portrait details...`);
|
|
481
|
-
let thumbnailImgixPortrait = {};
|
|
482
|
-
const thumbnailImgixPortraitWrapperImgixID =
|
|
483
|
-
topicSubFamilyWithFields?.fields?.thumbnailImgixPortrait?.[
|
|
484
|
-
defaultEnvironmentLocaleCode
|
|
485
|
-
]?.sys.id;
|
|
486
|
-
if (thumbnailImgixPortraitWrapperImgixID) {
|
|
487
|
-
thumbnailImgixPortrait = await getWrapperImgixFields(
|
|
488
|
-
thumbnailImgixPortraitWrapperImgixID
|
|
489
|
-
);
|
|
490
|
-
} else {
|
|
491
|
-
log(`No thumbnail imgix portrait found`, "WARN");
|
|
492
|
-
}
|
|
493
|
-
|
|
494
|
-
log(`Get thumbnail still life imgix details...`);
|
|
495
|
-
let thumbnailStillLifeImgix = {};
|
|
496
|
-
const thumbnailStillLifeImgixWrapperImgixID =
|
|
497
|
-
topicSubFamilyWithFields?.fields?.thumbnailStillLifeImgix?.[
|
|
498
|
-
defaultEnvironmentLocaleCode
|
|
499
|
-
]?.sys.id;
|
|
500
|
-
if (thumbnailStillLifeImgixWrapperImgixID) {
|
|
501
|
-
thumbnailStillLifeImgix = await getWrapperImgixFields(
|
|
502
|
-
thumbnailStillLifeImgixWrapperImgixID
|
|
503
|
-
);
|
|
504
|
-
} else {
|
|
505
|
-
log(`No thumbnail still life imgix found`, "WARN");
|
|
506
|
-
}
|
|
507
|
-
|
|
508
|
-
log(`Get thumbnail still life imgix portrait details...`);
|
|
509
|
-
let thumbnailStillLifeImgixPortrait = {};
|
|
510
|
-
const thumbnailStillLifeImgixPortraitWrapperImgixID =
|
|
511
|
-
topicSubFamilyWithFields?.fields?.thumbnailStillLifeImgixPortrait?.[
|
|
512
|
-
defaultEnvironmentLocaleCode
|
|
513
|
-
]?.sys.id;
|
|
514
|
-
if (thumbnailStillLifeImgixPortraitWrapperImgixID) {
|
|
515
|
-
thumbnailStillLifeImgixPortrait = await getWrapperImgixFields(
|
|
516
|
-
thumbnailStillLifeImgixPortraitWrapperImgixID
|
|
517
|
-
);
|
|
518
|
-
} else {
|
|
519
|
-
log(`No thumbnail still life imgix portrait found`, "WARN");
|
|
520
|
-
}
|
|
521
|
-
|
|
522
|
-
log(`Get full screen imgix details...`);
|
|
523
|
-
let fullScreenImageImgix = {};
|
|
524
|
-
const fullScreenImageImgixWrapperImgixID =
|
|
525
|
-
topicSubFamilyWithFields?.fields?.fullScreenImageImgix?.[
|
|
526
|
-
defaultEnvironmentLocaleCode
|
|
527
|
-
]?.sys.id;
|
|
528
|
-
if (fullScreenImageImgixWrapperImgixID) {
|
|
529
|
-
fullScreenImageImgix = await getWrapperImgixFields(
|
|
530
|
-
fullScreenImageImgixWrapperImgixID
|
|
531
|
-
);
|
|
532
|
-
} else {
|
|
533
|
-
log(`No full screen imgix found`, "WARN");
|
|
534
|
-
}
|
|
535
|
-
|
|
536
|
-
log(`Get priority details...`);
|
|
537
|
-
const priority =
|
|
538
|
-
topicSubFamilyWithFields?.fields?.priority?.[
|
|
539
|
-
defaultEnvironmentLocaleCode
|
|
540
|
-
] || 0;
|
|
541
|
-
|
|
542
|
-
// Single record
|
|
543
|
-
const record: AlgoliaFamilyRecord = {
|
|
544
|
-
objectID: topicSubFamilyWithFields.sys.id,
|
|
545
|
-
names: await getAllTranslations(
|
|
546
|
-
topicSubFamilyWithFields?.fields?.name || {}
|
|
547
|
-
),
|
|
548
|
-
code:
|
|
549
|
-
topicSubFamilyWithFields?.fields?.code?.[defaultEnvironmentLocaleCode] ||
|
|
550
|
-
"",
|
|
551
|
-
thumbnailImgix,
|
|
552
|
-
thumbnailImgixPortrait,
|
|
553
|
-
thumbnailStillLifeImgix,
|
|
554
|
-
thumbnailStillLifeImgixPortrait,
|
|
555
|
-
fullScreenImageImgix,
|
|
556
|
-
slugs: await getAllTranslations(page?.slugs || {}),
|
|
557
|
-
slugType: page?.type || "",
|
|
558
|
-
// slugDetails: await getAllTranslations(page?.details || {}),
|
|
559
|
-
catalogs,
|
|
560
|
-
categories,
|
|
561
|
-
parentFamily,
|
|
562
|
-
productFields,
|
|
563
|
-
productFieldsUs,
|
|
564
|
-
priority,
|
|
565
|
-
isNew,
|
|
566
|
-
destinations:
|
|
567
|
-
topicSubFamilyWithFields?.fields?.destinations?.[
|
|
568
|
-
defaultEnvironmentLocaleCode
|
|
569
|
-
] || [],
|
|
570
|
-
lastSyncDate: getLocalISOTime(),
|
|
571
|
-
};
|
|
572
|
-
|
|
573
|
-
return record;
|
|
574
|
-
};
|
|
575
|
-
|
|
576
|
-
const getObjects = async (
|
|
577
|
-
offset: number,
|
|
578
|
-
limit: number,
|
|
579
|
-
catalogCode?: AvailableCatalogs
|
|
580
|
-
): Promise<AlgoliaPaginateRecords> => {
|
|
581
|
-
const client = await getClient();
|
|
582
|
-
|
|
583
|
-
const opts: any = {
|
|
584
|
-
content_type: "topicSubFamily",
|
|
585
|
-
limit,
|
|
586
|
-
skip: offset,
|
|
587
|
-
select: "sys",
|
|
588
|
-
};
|
|
589
|
-
if (catalogCode) {
|
|
590
|
-
opts["fields.catalog.sys.id"] = catalogCode;
|
|
591
|
-
}
|
|
592
|
-
const { items, total } = await client.withAllLocales.getEntries(opts);
|
|
593
|
-
|
|
594
|
-
const objects: AlgoliaFamilyRecord[] = [];
|
|
595
|
-
let count: number = Number(offset);
|
|
596
|
-
let current: number = 0;
|
|
597
|
-
for (const topicSubFamily of items) {
|
|
598
|
-
log(`${++count} of ${total}`, "INFO");
|
|
599
|
-
const timeStart = new Date();
|
|
600
|
-
const record = await getObject(topicSubFamily);
|
|
601
|
-
const timeEnd = new Date();
|
|
602
|
-
const seconds = secondBetweenTwoDate(timeStart, timeEnd);
|
|
603
|
-
log(`Execution time: ${seconds} seconds`);
|
|
604
|
-
objects.push(record);
|
|
605
|
-
if (serverUtils) {
|
|
606
|
-
serverUtils.log(topicSubFamily.sys.id);
|
|
607
|
-
const progress = Math.floor((++current / items.length) * 100);
|
|
608
|
-
serverUtils.updateProgress(progress);
|
|
609
|
-
}
|
|
610
|
-
}
|
|
611
|
-
|
|
612
|
-
return {
|
|
613
|
-
objects,
|
|
614
|
-
offset: Number(offset) + Number(limit),
|
|
615
|
-
limit: Number(limit),
|
|
616
|
-
completed: count >= total, // if is true the import is completed
|
|
617
|
-
total,
|
|
618
|
-
};
|
|
619
|
-
};
|
|
620
|
-
|
|
621
|
-
export const reindexSubFamilies = async (
|
|
622
|
-
offset: number = 0,
|
|
623
|
-
limit: number = 50,
|
|
624
|
-
catalogCode?: AvailableCatalogs
|
|
625
|
-
) => {
|
|
626
|
-
const timeStart = new Date();
|
|
627
|
-
log(
|
|
628
|
-
`reindexSubFamilies - offset: ${offset} limit: ${limit} catalog: ${catalogCode}`
|
|
629
|
-
);
|
|
630
|
-
|
|
631
|
-
const defaultEnvironmentLocaleCode = await getEnvironmentDefaultLocaleCode();
|
|
632
|
-
const records = await getObjects(offset, limit, catalogCode);
|
|
633
|
-
const objectsToSave = records.objects.filter(
|
|
634
|
-
(object) => !isObjectToDelete(object, defaultEnvironmentLocaleCode)
|
|
635
|
-
);
|
|
636
|
-
const objectIdsToDelete = records.objects
|
|
637
|
-
.filter((object) => isObjectToDelete(object, defaultEnvironmentLocaleCode))
|
|
638
|
-
.map((object) => object.objectID);
|
|
639
|
-
|
|
640
|
-
// Save records to Algolia
|
|
641
|
-
const index = getIndex(indexKey);
|
|
642
|
-
log(`Save ${objectsToSave.length} objects to ${index.indexName} index`);
|
|
643
|
-
const savedObjectIDs = await index.saveObjects(objectsToSave);
|
|
644
|
-
log(
|
|
645
|
-
`Delete ${objectIdsToDelete.length} objects from ${index.indexName} index`
|
|
646
|
-
);
|
|
647
|
-
const deletedObjectIDs = await index.deleteObjects(objectIdsToDelete);
|
|
648
|
-
|
|
649
|
-
const timeEnd = new Date();
|
|
650
|
-
const seconds = secondBetweenTwoDate(timeStart, timeEnd);
|
|
651
|
-
log(`Execution time: ${seconds} seconds`);
|
|
652
|
-
|
|
653
|
-
return {
|
|
654
|
-
...records,
|
|
655
|
-
savedObjectIDs: savedObjectIDs.objectIDs,
|
|
656
|
-
deletedObjectIDs: deletedObjectIDs.objectIDs,
|
|
657
|
-
};
|
|
658
|
-
};
|
|
659
|
-
|
|
660
|
-
export const reindexSubFamily = async (topicSubFamilyEntryId: string) => {
|
|
661
|
-
const timeStart = new Date();
|
|
662
|
-
|
|
663
|
-
log(`reindexSubFamily - entryId: ${topicSubFamilyEntryId} `);
|
|
664
|
-
|
|
665
|
-
// Get single object data
|
|
666
|
-
const topicSubFamily = await getEntryByID(
|
|
667
|
-
topicSubFamilyEntryId,
|
|
668
|
-
"topicSubFamily"
|
|
669
|
-
);
|
|
670
|
-
|
|
671
|
-
const index = getIndex(indexKey);
|
|
672
|
-
let record = null;
|
|
673
|
-
if (!topicSubFamily?.sys?.id) {
|
|
674
|
-
log(
|
|
675
|
-
`No topicSubFamily with id ${topicSubFamilyEntryId} found. Delete object if exists`,
|
|
676
|
-
"WARN"
|
|
677
|
-
);
|
|
678
|
-
record = await index.deleteObject(topicSubFamilyEntryId);
|
|
679
|
-
return { ...record };
|
|
680
|
-
}
|
|
681
|
-
|
|
682
|
-
const object = await getObject(topicSubFamily);
|
|
683
|
-
|
|
684
|
-
// @ts-ignore
|
|
685
|
-
// const jsonString = JSON.stringify(object, null, 2);
|
|
686
|
-
// fs.writeFile(`${topicSubFamily?.sys?.id}.json`, jsonString, (err: any) => {
|
|
687
|
-
// if (err) throw err;
|
|
688
|
-
// console.log("The file has been saved!");
|
|
689
|
-
// });
|
|
690
|
-
|
|
691
|
-
// Save record to Algolia
|
|
692
|
-
const defaultEnvironmentLocaleCode = await getEnvironmentDefaultLocaleCode();
|
|
693
|
-
if (!isObjectToDelete(object, defaultEnvironmentLocaleCode)) {
|
|
694
|
-
log(`Save object`);
|
|
695
|
-
record = await index.saveObject(object);
|
|
696
|
-
} else {
|
|
697
|
-
log(`Delete object`);
|
|
698
|
-
record = await index.deleteObject(object.objectID);
|
|
699
|
-
}
|
|
700
|
-
const timeEnd = new Date();
|
|
701
|
-
const seconds = secondBetweenTwoDate(timeStart, timeEnd);
|
|
702
|
-
log(`Execution time: ${seconds} seconds`);
|
|
703
|
-
|
|
704
|
-
return { ...record, ...object };
|
|
705
|
-
};
|
|
706
|
-
|
|
707
|
-
export const removeSubFamilyObject = async (objectId: string) => {
|
|
708
|
-
return removeIndexObject(objectId, indexKey);
|
|
709
|
-
};
|