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
package/src/algolia/downloads.ts
DELETED
|
@@ -1,346 +0,0 @@
|
|
|
1
|
-
import { log } from "../libs/logs";
|
|
2
|
-
import {
|
|
3
|
-
getClient,
|
|
4
|
-
getEnvironmentDefaultLocaleCode,
|
|
5
|
-
getEntryByID,
|
|
6
|
-
getTopicDetails,
|
|
7
|
-
getAllEntries,
|
|
8
|
-
getAssetDetails,
|
|
9
|
-
} from "../libs/contentful-cda";
|
|
10
|
-
import { cfLocales } from "../libs/contentful";
|
|
11
|
-
import { getIndex, AvailableIndicesKey, removeIndexObject } from "./config";
|
|
12
|
-
import { getLocalISOTime, secondBetweenTwoDate } from "../utils";
|
|
13
|
-
import type { Entry } from "contentful-management/dist/typings/entities/entry";
|
|
14
|
-
import {
|
|
15
|
-
CfLocalizedEntryField,
|
|
16
|
-
TopicDetailsResponse,
|
|
17
|
-
AlgoliaPaginateRecords,
|
|
18
|
-
CfSys,
|
|
19
|
-
WrapperImageFields,
|
|
20
|
-
} from "../types";
|
|
21
|
-
import { getWrapperImgixFields } from "../libs/imgix";
|
|
22
|
-
|
|
23
|
-
const indexKey: AvailableIndicesKey = "downloads";
|
|
24
|
-
|
|
25
|
-
export type AlgoliaDownloadRecord = {
|
|
26
|
-
objectID: string;
|
|
27
|
-
name?: CfLocalizedEntryField;
|
|
28
|
-
thumbnailImgix?: WrapperImageFields | {};
|
|
29
|
-
assets?: {};
|
|
30
|
-
catalogs?: TopicDetailsResponse[];
|
|
31
|
-
category?: TopicDetailsResponse;
|
|
32
|
-
brand?: string;
|
|
33
|
-
type?: string;
|
|
34
|
-
destinations?: string[];
|
|
35
|
-
lastSyncDate?: string;
|
|
36
|
-
visualizationDate?: string;
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
export const getAssetsByComponentAssetIds = async (
|
|
40
|
-
componentAssetIds: string[]
|
|
41
|
-
) => {
|
|
42
|
-
const defaultEnvironmentLocaleCode = await getEnvironmentDefaultLocaleCode();
|
|
43
|
-
const assets: any = [];
|
|
44
|
-
const componentDownloadAssetEntries = await getAllEntries(
|
|
45
|
-
"componentDownloadAsset",
|
|
46
|
-
"fields",
|
|
47
|
-
"sys.id[in]",
|
|
48
|
-
`${componentAssetIds.join(",")}`,
|
|
49
|
-
50
|
|
50
|
-
);
|
|
51
|
-
|
|
52
|
-
componentDownloadAssetEntries.sort((a, b) => {
|
|
53
|
-
const idA = a.sys.id;
|
|
54
|
-
const idB = b.sys.id;
|
|
55
|
-
|
|
56
|
-
const indexA = componentAssetIds.indexOf(idA);
|
|
57
|
-
const indexB = componentAssetIds.indexOf(idB);
|
|
58
|
-
|
|
59
|
-
return indexA - indexB;
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
for (const componentDownloadAssetEntry of componentDownloadAssetEntries) {
|
|
63
|
-
log(
|
|
64
|
-
`Get the ${componentDownloadAssetEntry.sys.id} componentDownloadAssetEntry details...`
|
|
65
|
-
);
|
|
66
|
-
const componentDownloadAssetEntryWithFields = await getEntryByID(
|
|
67
|
-
componentDownloadAssetEntry.sys.id,
|
|
68
|
-
"componentDownloadAsset"
|
|
69
|
-
);
|
|
70
|
-
const customType =
|
|
71
|
-
componentDownloadAssetEntryWithFields?.fields?.customType?.[
|
|
72
|
-
defaultEnvironmentLocaleCode
|
|
73
|
-
] || "";
|
|
74
|
-
const componentDownloadAssetData: any = {
|
|
75
|
-
type:
|
|
76
|
-
componentDownloadAssetEntryWithFields?.fields?.type?.[
|
|
77
|
-
defaultEnvironmentLocaleCode
|
|
78
|
-
] || "",
|
|
79
|
-
customType,
|
|
80
|
-
asset: {},
|
|
81
|
-
localizedAsset: {},
|
|
82
|
-
idIssuu:
|
|
83
|
-
componentDownloadAssetEntryWithFields?.fields?.idIssuu?.[
|
|
84
|
-
defaultEnvironmentLocaleCode
|
|
85
|
-
] || "",
|
|
86
|
-
};
|
|
87
|
-
|
|
88
|
-
const fileId =
|
|
89
|
-
componentDownloadAssetEntryWithFields?.fields?.asset?.[
|
|
90
|
-
defaultEnvironmentLocaleCode
|
|
91
|
-
]?.sys?.id;
|
|
92
|
-
componentDownloadAssetData.asset = fileId
|
|
93
|
-
? await getAssetDetails(fileId)
|
|
94
|
-
: {};
|
|
95
|
-
for (const locale of cfLocales) {
|
|
96
|
-
const fileId =
|
|
97
|
-
componentDownloadAssetEntryWithFields?.fields?.asset?.[locale]?.sys
|
|
98
|
-
?.id ??
|
|
99
|
-
componentDownloadAssetEntryWithFields?.fields?.asset?.[
|
|
100
|
-
defaultEnvironmentLocaleCode
|
|
101
|
-
]?.sys?.id;
|
|
102
|
-
console.log("locale", locale, "fileId", fileId);
|
|
103
|
-
|
|
104
|
-
componentDownloadAssetData.localizedAsset[locale] = fileId
|
|
105
|
-
? await getAssetDetails(fileId)
|
|
106
|
-
: {};
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
assets.push(componentDownloadAssetData);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
return assets;
|
|
113
|
-
};
|
|
114
|
-
|
|
115
|
-
const isObjectToDelete = (object: any) => {
|
|
116
|
-
return !object?.name;
|
|
117
|
-
};
|
|
118
|
-
|
|
119
|
-
// TODO: Capire se il brand deve essere un campo del topicDownload o del componentDawnloadAsset
|
|
120
|
-
const getObject = async (
|
|
121
|
-
topicDownload: Entry
|
|
122
|
-
): Promise<AlgoliaDownloadRecord> => {
|
|
123
|
-
const defaultEnvironmentLocaleCode = await getEnvironmentDefaultLocaleCode();
|
|
124
|
-
log(`Sync the ${topicDownload.sys.id} topicDownload...`);
|
|
125
|
-
let topicDownloadWithFields: Entry = topicDownload;
|
|
126
|
-
|
|
127
|
-
if (!topicDownloadWithFields?.fields) {
|
|
128
|
-
log(`Get the ${topicDownload.sys.id} topicDownload details...`);
|
|
129
|
-
topicDownloadWithFields = await getEntryByID(
|
|
130
|
-
topicDownload.sys.id,
|
|
131
|
-
"topicDownload"
|
|
132
|
-
);
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
if (!topicDownloadWithFields) {
|
|
136
|
-
log(`The topicDownload ${topicDownload.sys.id} not found`, "WARN");
|
|
137
|
-
|
|
138
|
-
const recordFail: AlgoliaDownloadRecord = {
|
|
139
|
-
objectID: topicDownload?.sys?.id,
|
|
140
|
-
};
|
|
141
|
-
|
|
142
|
-
return recordFail; // return objectID to delete the record if it exists
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
log(`Get catalogs details...`);
|
|
146
|
-
const catalogs = await getTopicDetails(
|
|
147
|
-
topicDownloadWithFields,
|
|
148
|
-
"catalogs",
|
|
149
|
-
"topicCatalog"
|
|
150
|
-
);
|
|
151
|
-
|
|
152
|
-
log(`Get category details...`);
|
|
153
|
-
const categories = await getTopicDetails(
|
|
154
|
-
topicDownloadWithFields,
|
|
155
|
-
"category",
|
|
156
|
-
"topicDownloadCategory",
|
|
157
|
-
false,
|
|
158
|
-
false
|
|
159
|
-
);
|
|
160
|
-
const category = categories?.[0];
|
|
161
|
-
|
|
162
|
-
log(`Get thumbnail imgix details...`);
|
|
163
|
-
let thumbnailImgix = {};
|
|
164
|
-
const thumbnailImgixWrapperImgixID =
|
|
165
|
-
topicDownloadWithFields?.fields?.thumbnailImgix?.[
|
|
166
|
-
defaultEnvironmentLocaleCode
|
|
167
|
-
]?.sys.id;
|
|
168
|
-
if (thumbnailImgixWrapperImgixID) {
|
|
169
|
-
thumbnailImgix = await getWrapperImgixFields(thumbnailImgixWrapperImgixID);
|
|
170
|
-
} else {
|
|
171
|
-
log(`No thumbnail imgix found`, "WARN");
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
log(`Get assets details...`);
|
|
175
|
-
let assets: any = [];
|
|
176
|
-
const componentAssets =
|
|
177
|
-
topicDownloadWithFields?.fields?.assets?.[defaultEnvironmentLocaleCode];
|
|
178
|
-
if (componentAssets) {
|
|
179
|
-
const componentAssetIds = componentAssets.map(
|
|
180
|
-
(item: CfSys) => item?.sys?.id
|
|
181
|
-
);
|
|
182
|
-
assets = await getAssetsByComponentAssetIds(componentAssetIds);
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
log(`Get destinations details...`);
|
|
186
|
-
const destinations =
|
|
187
|
-
topicDownloadWithFields?.fields?.destinations?.[
|
|
188
|
-
defaultEnvironmentLocaleCode
|
|
189
|
-
] || [];
|
|
190
|
-
|
|
191
|
-
log(`Get visualizationDate details...`);
|
|
192
|
-
const visualizationDate =
|
|
193
|
-
topicDownloadWithFields?.fields?.visualizationDate?.[
|
|
194
|
-
defaultEnvironmentLocaleCode
|
|
195
|
-
] || "";
|
|
196
|
-
|
|
197
|
-
// Single record
|
|
198
|
-
const record: AlgoliaDownloadRecord = {
|
|
199
|
-
objectID: topicDownloadWithFields.sys.id,
|
|
200
|
-
name:
|
|
201
|
-
topicDownloadWithFields?.fields?.name?.[defaultEnvironmentLocaleCode] ||
|
|
202
|
-
"",
|
|
203
|
-
thumbnailImgix,
|
|
204
|
-
catalogs,
|
|
205
|
-
category,
|
|
206
|
-
assets,
|
|
207
|
-
brand:
|
|
208
|
-
topicDownloadWithFields?.fields?.brand?.[defaultEnvironmentLocaleCode] ||
|
|
209
|
-
"",
|
|
210
|
-
type:
|
|
211
|
-
topicDownloadWithFields?.fields?.type?.[defaultEnvironmentLocaleCode] ||
|
|
212
|
-
"",
|
|
213
|
-
destinations,
|
|
214
|
-
lastSyncDate: getLocalISOTime(),
|
|
215
|
-
visualizationDate,
|
|
216
|
-
};
|
|
217
|
-
|
|
218
|
-
return record;
|
|
219
|
-
};
|
|
220
|
-
|
|
221
|
-
export const reindexDownload = async (topicDownloadId: string) => {
|
|
222
|
-
const timeStart = new Date();
|
|
223
|
-
|
|
224
|
-
log(`reindexDownload - entryId: ${topicDownloadId}`);
|
|
225
|
-
|
|
226
|
-
const topicDownload = await getEntryByID(topicDownloadId, "topicDownload");
|
|
227
|
-
|
|
228
|
-
let record = null;
|
|
229
|
-
const index = getIndex(indexKey);
|
|
230
|
-
|
|
231
|
-
if (!topicDownload) {
|
|
232
|
-
log(
|
|
233
|
-
`No topicDownload found with id ${topicDownloadId}. Delete object if exists`,
|
|
234
|
-
"WARN"
|
|
235
|
-
);
|
|
236
|
-
record = await index.deleteObject(topicDownloadId);
|
|
237
|
-
return { ...record };
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
const object = await getObject(topicDownload);
|
|
241
|
-
|
|
242
|
-
// Save record to Algolia
|
|
243
|
-
if (!isObjectToDelete(object)) {
|
|
244
|
-
log(`Save object`);
|
|
245
|
-
record = await index.saveObject(object);
|
|
246
|
-
} else {
|
|
247
|
-
log(`Delete object`);
|
|
248
|
-
record = await index.deleteObject(object.objectID);
|
|
249
|
-
}
|
|
250
|
-
const timeEnd = new Date();
|
|
251
|
-
const seconds = secondBetweenTwoDate(timeStart, timeEnd);
|
|
252
|
-
log(`Execution time: ${seconds} seconds`);
|
|
253
|
-
|
|
254
|
-
return { ...record, ...object };
|
|
255
|
-
};
|
|
256
|
-
|
|
257
|
-
/**
|
|
258
|
-
* Get Objects
|
|
259
|
-
*
|
|
260
|
-
* @param offset
|
|
261
|
-
* @param limit
|
|
262
|
-
* @param filterKey
|
|
263
|
-
* @param filterValue
|
|
264
|
-
* @returns
|
|
265
|
-
*/
|
|
266
|
-
const getObjects = async (
|
|
267
|
-
offset: number,
|
|
268
|
-
limit: number,
|
|
269
|
-
filterKey?: string,
|
|
270
|
-
filterValue?: string
|
|
271
|
-
): Promise<AlgoliaPaginateRecords> => {
|
|
272
|
-
const client = await getClient();
|
|
273
|
-
|
|
274
|
-
const opts: any = {
|
|
275
|
-
content_type: "topicDownload",
|
|
276
|
-
limit,
|
|
277
|
-
skip: offset,
|
|
278
|
-
// select: "",
|
|
279
|
-
};
|
|
280
|
-
if (filterKey && filterValue) {
|
|
281
|
-
opts[filterKey] = filterValue;
|
|
282
|
-
}
|
|
283
|
-
const { items, total } = await client.withAllLocales.getEntries(opts);
|
|
284
|
-
|
|
285
|
-
const objects: AlgoliaDownloadRecord[] = [];
|
|
286
|
-
let count: number = Number(offset);
|
|
287
|
-
for (const topicProduct of items) {
|
|
288
|
-
log(`${++count} of ${total}`, "INFO");
|
|
289
|
-
const timeStart = new Date();
|
|
290
|
-
const record = await getObject(topicProduct);
|
|
291
|
-
const timeEnd = new Date();
|
|
292
|
-
const seconds = secondBetweenTwoDate(timeStart, timeEnd);
|
|
293
|
-
log(`Execution time: ${seconds} seconds`);
|
|
294
|
-
objects.push(record);
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
return {
|
|
298
|
-
objects,
|
|
299
|
-
offset: Number(offset) + Number(limit),
|
|
300
|
-
limit: Number(limit),
|
|
301
|
-
completed: count >= total, // if is true the import is completed
|
|
302
|
-
};
|
|
303
|
-
};
|
|
304
|
-
|
|
305
|
-
export const reindexDownloads = async (
|
|
306
|
-
offset: number = 0,
|
|
307
|
-
limit: number = 50,
|
|
308
|
-
filterKey: string = "",
|
|
309
|
-
filterValue: string = ""
|
|
310
|
-
) => {
|
|
311
|
-
const timeStart = new Date();
|
|
312
|
-
log(
|
|
313
|
-
`reindexDownloads - filterKey: ${filterKey} filterValue: ${filterValue} offset: ${offset} limit: ${limit} `
|
|
314
|
-
);
|
|
315
|
-
|
|
316
|
-
const records = await getObjects(offset, limit, filterKey, filterValue);
|
|
317
|
-
const objectsToSave = records.objects.filter(
|
|
318
|
-
(object) => !isObjectToDelete(object)
|
|
319
|
-
);
|
|
320
|
-
const objectIdsToDelete = records.objects
|
|
321
|
-
.filter((object) => isObjectToDelete(object))
|
|
322
|
-
.map((object) => object.objectID);
|
|
323
|
-
|
|
324
|
-
// Save records to Algolia
|
|
325
|
-
const index = getIndex(indexKey);
|
|
326
|
-
log(`Save ${objectsToSave.length} objects to ${index.indexName} index`);
|
|
327
|
-
const savedObjectIDs = await index.saveObjects(objectsToSave);
|
|
328
|
-
log(
|
|
329
|
-
`Delete ${objectIdsToDelete.length} objects from ${index.indexName} index`
|
|
330
|
-
);
|
|
331
|
-
const deletedObjectIDs = await index.deleteObjects(objectIdsToDelete);
|
|
332
|
-
|
|
333
|
-
const timeEnd = new Date();
|
|
334
|
-
const seconds = secondBetweenTwoDate(timeStart, timeEnd);
|
|
335
|
-
log(`Execution time: ${seconds} seconds`);
|
|
336
|
-
|
|
337
|
-
return {
|
|
338
|
-
...records,
|
|
339
|
-
savedObjectIDs: savedObjectIDs.objectIDs,
|
|
340
|
-
deletedObjectIDs: deletedObjectIDs.objectIDs,
|
|
341
|
-
};
|
|
342
|
-
};
|
|
343
|
-
|
|
344
|
-
export const removeDownloadObject = async (objectId: string) => {
|
|
345
|
-
return removeIndexObject(objectId, indexKey);
|
|
346
|
-
};
|