pim-import 5.0.0 → 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.
Files changed (249) hide show
  1. package/dist/algolia/clean.js +0 -1
  2. package/dist/algolia/config.js +0 -1
  3. package/dist/algolia/downloads.js +0 -1
  4. package/dist/algolia/families.js +0 -1
  5. package/dist/algolia/inspirations.js +0 -1
  6. package/dist/algolia/models.js +0 -1
  7. package/dist/algolia/news.js +0 -1
  8. package/dist/algolia/pressRelease.js +0 -1
  9. package/dist/algolia/pressReview.js +0 -1
  10. package/dist/algolia/products.js +0 -1
  11. package/dist/algolia/projects.js +0 -1
  12. package/dist/algolia/stories.js +0 -1
  13. package/dist/algolia/subFamilies.js +0 -1
  14. package/dist/algolia/subModels.js +0 -1
  15. package/dist/browser.js +0 -1
  16. package/dist/downloads/classes/manageEntry.js +0 -1
  17. package/dist/downloads/import.js +0 -1
  18. package/dist/index.js +0 -1
  19. package/dist/libs/contentful-cda.js +0 -1
  20. package/dist/libs/contentful.js +0 -1
  21. package/dist/libs/imgix.js +0 -1
  22. package/dist/libs/logs.js +0 -1
  23. package/dist/libs/netlify.js +0 -1
  24. package/dist/libs/notifications.js +0 -1
  25. package/dist/libs/pdf.js +0 -1
  26. package/dist/libs/s3.js +0 -1
  27. package/dist/libs/sentry.js +0 -1
  28. package/dist/pim/config.js +0 -1
  29. package/dist/pim/endpoints.js +0 -1
  30. package/dist/pim/methods/bulkPublish.js +0 -1
  31. package/dist/pim/methods/catalogs.js +0 -1
  32. package/dist/pim/methods/checkTopicDraftAndPagePublished.js +0 -1
  33. package/dist/pim/methods/designers.js +0 -1
  34. package/dist/pim/methods/dictionary.js +0 -1
  35. package/dist/pim/methods/families.js +0 -1
  36. package/dist/pim/methods/latestProducts.js +0 -1
  37. package/dist/pim/methods/migrateEntryFields.js +0 -1
  38. package/dist/pim/methods/models.js +0 -1
  39. package/dist/pim/methods/pages/catalogs.js +0 -1
  40. package/dist/pim/methods/pages/families.js +0 -1
  41. package/dist/pim/methods/pages/subfamilies.js +0 -1
  42. package/dist/pim/methods/products.js +0 -1
  43. package/dist/pim/methods/subfamilies.js +0 -1
  44. package/dist/pim/methods/submodels.js +0 -1
  45. package/dist/pim/request.js +0 -1
  46. package/dist/resources/AllProducts.js +0 -1
  47. package/dist/resources/Audit.js +0 -1
  48. package/dist/resources/CatalogDetails.js +0 -1
  49. package/dist/resources/CollectionModels.js +0 -1
  50. package/dist/resources/CollectionSubFamilies.js +0 -1
  51. package/dist/resources/CollectionSubModels.js +0 -1
  52. package/dist/resources/DProductSubLine.js +0 -1
  53. package/dist/resources/FamilyDetails.js +0 -1
  54. package/dist/resources/ProductDetails.js +0 -1
  55. package/dist/resources/ProductRelation.js +0 -1
  56. package/dist/resources/cfFields.js +0 -1
  57. package/dist/types.js +0 -1
  58. package/dist/utils.js +0 -1
  59. package/package.json +7 -2
  60. package/.env.example +0 -46
  61. package/.nvmrc +0 -1
  62. package/.vscode/settings.json +0 -21
  63. package/dist/algolia/clean.js.map +0 -1
  64. package/dist/algolia/config.js.map +0 -1
  65. package/dist/algolia/downloads.js.map +0 -1
  66. package/dist/algolia/families.js.map +0 -1
  67. package/dist/algolia/inspirations.js.map +0 -1
  68. package/dist/algolia/models.js.map +0 -1
  69. package/dist/algolia/news.js.map +0 -1
  70. package/dist/algolia/pressRelease.js.map +0 -1
  71. package/dist/algolia/pressReview.js.map +0 -1
  72. package/dist/algolia/products.js.map +0 -1
  73. package/dist/algolia/projects.js.map +0 -1
  74. package/dist/algolia/stories.js.map +0 -1
  75. package/dist/algolia/subFamilies.js.map +0 -1
  76. package/dist/algolia/subModels.js.map +0 -1
  77. package/dist/browser.js.map +0 -1
  78. package/dist/downloads/classes/manageEntry.js.map +0 -1
  79. package/dist/downloads/import.js.map +0 -1
  80. package/dist/index.js.map +0 -1
  81. package/dist/libs/contentful-cda.js.map +0 -1
  82. package/dist/libs/contentful.js.map +0 -1
  83. package/dist/libs/imgix.js.map +0 -1
  84. package/dist/libs/logs.js.map +0 -1
  85. package/dist/libs/netlify.js.map +0 -1
  86. package/dist/libs/notifications.js.map +0 -1
  87. package/dist/libs/pdf.js.map +0 -1
  88. package/dist/libs/s3.js.map +0 -1
  89. package/dist/libs/sentry.js.map +0 -1
  90. package/dist/pim/config.js.map +0 -1
  91. package/dist/pim/endpoints.js.map +0 -1
  92. package/dist/pim/methods/bulkPublish.js.map +0 -1
  93. package/dist/pim/methods/catalogs.js.map +0 -1
  94. package/dist/pim/methods/checkTopicDraftAndPagePublished.js.map +0 -1
  95. package/dist/pim/methods/designers.js.map +0 -1
  96. package/dist/pim/methods/dictionary.js.map +0 -1
  97. package/dist/pim/methods/families.js.map +0 -1
  98. package/dist/pim/methods/latestProducts.js.map +0 -1
  99. package/dist/pim/methods/migrateEntryFields.js.map +0 -1
  100. package/dist/pim/methods/models.js.map +0 -1
  101. package/dist/pim/methods/pages/catalogs.js.map +0 -1
  102. package/dist/pim/methods/pages/families.js.map +0 -1
  103. package/dist/pim/methods/pages/subfamilies.js.map +0 -1
  104. package/dist/pim/methods/products.js.map +0 -1
  105. package/dist/pim/methods/subfamilies.js.map +0 -1
  106. package/dist/pim/methods/submodels.js.map +0 -1
  107. package/dist/pim/request.js.map +0 -1
  108. package/dist/resources/AllProducts.js.map +0 -1
  109. package/dist/resources/Audit.js.map +0 -1
  110. package/dist/resources/CatalogDetails.js.map +0 -1
  111. package/dist/resources/CollectionModels.js.map +0 -1
  112. package/dist/resources/CollectionSubFamilies.js.map +0 -1
  113. package/dist/resources/CollectionSubModels.js.map +0 -1
  114. package/dist/resources/DProductSubLine.js.map +0 -1
  115. package/dist/resources/FamilyDetails.js.map +0 -1
  116. package/dist/resources/ProductDetails.js.map +0 -1
  117. package/dist/resources/ProductRelation.js.map +0 -1
  118. package/dist/resources/cfFields.js.map +0 -1
  119. package/dist/types.js.map +0 -1
  120. package/dist/utils.js.map +0 -1
  121. package/docs/import-data-from-the-dictionary.md +0 -83
  122. package/docs/import-products.md +0 -61
  123. package/docs/import-taxonomies-from-the-catalog.md +0 -60
  124. package/docs/settings.md +0 -47
  125. package/jest.config.js +0 -16
  126. package/local-fn/reindex.js +0 -182
  127. package/src/algolia/clean.ts +0 -164
  128. package/src/algolia/config.ts +0 -390
  129. package/src/algolia/downloads.ts +0 -346
  130. package/src/algolia/families.ts +0 -652
  131. package/src/algolia/inspirations.ts +0 -315
  132. package/src/algolia/models.ts +0 -589
  133. package/src/algolia/news.ts +0 -258
  134. package/src/algolia/pressRelease.ts +0 -255
  135. package/src/algolia/pressReview.ts +0 -247
  136. package/src/algolia/products.ts +0 -731
  137. package/src/algolia/projects.ts +0 -339
  138. package/src/algolia/stories.ts +0 -347
  139. package/src/algolia/subFamilies.ts +0 -709
  140. package/src/algolia/subModels.ts +0 -359
  141. package/src/browser.ts +0 -122
  142. package/src/downloads/classes/manageEntry.ts +0 -99
  143. package/src/downloads/csv/legal.csv +0 -5
  144. package/src/downloads/csv/products.csv +0 -373
  145. package/src/downloads/import.ts +0 -381
  146. package/src/index.ts +0 -140
  147. package/src/libs/contentful-cda.ts +0 -543
  148. package/src/libs/contentful.ts +0 -1453
  149. package/src/libs/imgix.ts +0 -297
  150. package/src/libs/logs.ts +0 -121
  151. package/src/libs/netlify.ts +0 -37
  152. package/src/libs/notifications.ts +0 -104
  153. package/src/libs/pdf.ts +0 -107
  154. package/src/libs/s3.ts +0 -305
  155. package/src/libs/sentry.ts +0 -33
  156. package/src/pim/config.ts +0 -84
  157. package/src/pim/data/productFields.json +0 -1178
  158. package/src/pim/endpoints.ts +0 -364
  159. package/src/pim/methods/bulkPublish.ts +0 -266
  160. package/src/pim/methods/catalogs.ts +0 -586
  161. package/src/pim/methods/checkTopicDraftAndPagePublished.ts +0 -70
  162. package/src/pim/methods/designers.ts +0 -128
  163. package/src/pim/methods/dictionary.ts +0 -611
  164. package/src/pim/methods/families.ts +0 -345
  165. package/src/pim/methods/latestProducts.ts +0 -70
  166. package/src/pim/methods/migrateEntryFields.ts +0 -99
  167. package/src/pim/methods/models.ts +0 -349
  168. package/src/pim/methods/pages/catalogs.ts +0 -28
  169. package/src/pim/methods/pages/families.ts +0 -50
  170. package/src/pim/methods/pages/subfamilies.ts +0 -98
  171. package/src/pim/methods/products.ts +0 -3297
  172. package/src/pim/methods/subfamilies.ts +0 -706
  173. package/src/pim/methods/submodels.ts +0 -262
  174. package/src/pim/request.ts +0 -61
  175. package/src/resources/AllProducts.ts +0 -41
  176. package/src/resources/Audit.ts +0 -24
  177. package/src/resources/CatalogDetails.ts +0 -51
  178. package/src/resources/CollectionModels.ts +0 -42
  179. package/src/resources/CollectionSubFamilies.ts +0 -45
  180. package/src/resources/CollectionSubModels.ts +0 -36
  181. package/src/resources/DProductSubLine.ts +0 -34
  182. package/src/resources/FamilyDetails.ts +0 -31
  183. package/src/resources/ProductDetails.ts +0 -352
  184. package/src/resources/ProductRelation.ts +0 -24
  185. package/src/resources/cfFields.ts +0 -8
  186. package/src/types.ts +0 -268
  187. package/src/utils.ts +0 -553
  188. package/tsconfig.json +0 -93
  189. package/tslint.json +0 -22
  190. package/types/libs/puppeteer.d.ts +0 -17
  191. package/types/pim/methods/checkIp.d.ts +0 -1
  192. /package/{types → dist}/algolia/clean.d.ts +0 -0
  193. /package/{types → dist}/algolia/config.d.ts +0 -0
  194. /package/{types → dist}/algolia/downloads.d.ts +0 -0
  195. /package/{types → dist}/algolia/families.d.ts +0 -0
  196. /package/{types → dist}/algolia/inspirations.d.ts +0 -0
  197. /package/{types → dist}/algolia/models.d.ts +0 -0
  198. /package/{types → dist}/algolia/news.d.ts +0 -0
  199. /package/{types → dist}/algolia/pressRelease.d.ts +0 -0
  200. /package/{types → dist}/algolia/pressReview.d.ts +0 -0
  201. /package/{types → dist}/algolia/products.d.ts +0 -0
  202. /package/{types → dist}/algolia/projects.d.ts +0 -0
  203. /package/{types → dist}/algolia/stories.d.ts +0 -0
  204. /package/{types → dist}/algolia/subFamilies.d.ts +0 -0
  205. /package/{types → dist}/algolia/subModels.d.ts +0 -0
  206. /package/{types → dist}/browser.d.ts +0 -0
  207. /package/{types → dist}/downloads/classes/manageEntry.d.ts +0 -0
  208. /package/{types → dist}/downloads/import.d.ts +0 -0
  209. /package/{types → dist}/index.d.ts +0 -0
  210. /package/{types → dist}/libs/contentful-cda.d.ts +0 -0
  211. /package/{types → dist}/libs/contentful.d.ts +0 -0
  212. /package/{types → dist}/libs/imgix.d.ts +0 -0
  213. /package/{types → dist}/libs/logs.d.ts +0 -0
  214. /package/{types → dist}/libs/netlify.d.ts +0 -0
  215. /package/{types → dist}/libs/notifications.d.ts +0 -0
  216. /package/{types → dist}/libs/pdf.d.ts +0 -0
  217. /package/{types → dist}/libs/s3.d.ts +0 -0
  218. /package/{types → dist}/libs/sentry.d.ts +0 -0
  219. /package/{types → dist}/pim/config.d.ts +0 -0
  220. /package/{types → dist}/pim/endpoints.d.ts +0 -0
  221. /package/{types → dist}/pim/methods/bulkPublish.d.ts +0 -0
  222. /package/{types → dist}/pim/methods/catalogs.d.ts +0 -0
  223. /package/{types → dist}/pim/methods/checkTopicDraftAndPagePublished.d.ts +0 -0
  224. /package/{types → dist}/pim/methods/designers.d.ts +0 -0
  225. /package/{types → dist}/pim/methods/dictionary.d.ts +0 -0
  226. /package/{types → dist}/pim/methods/families.d.ts +0 -0
  227. /package/{types → dist}/pim/methods/latestProducts.d.ts +0 -0
  228. /package/{types → dist}/pim/methods/migrateEntryFields.d.ts +0 -0
  229. /package/{types → dist}/pim/methods/models.d.ts +0 -0
  230. /package/{types → dist}/pim/methods/pages/catalogs.d.ts +0 -0
  231. /package/{types → dist}/pim/methods/pages/families.d.ts +0 -0
  232. /package/{types → dist}/pim/methods/pages/subfamilies.d.ts +0 -0
  233. /package/{types → dist}/pim/methods/products.d.ts +0 -0
  234. /package/{types → dist}/pim/methods/subfamilies.d.ts +0 -0
  235. /package/{types → dist}/pim/methods/submodels.d.ts +0 -0
  236. /package/{types → dist}/pim/request.d.ts +0 -0
  237. /package/{types → dist}/resources/AllProducts.d.ts +0 -0
  238. /package/{types → dist}/resources/Audit.d.ts +0 -0
  239. /package/{types → dist}/resources/CatalogDetails.d.ts +0 -0
  240. /package/{types → dist}/resources/CollectionModels.d.ts +0 -0
  241. /package/{types → dist}/resources/CollectionSubFamilies.d.ts +0 -0
  242. /package/{types → dist}/resources/CollectionSubModels.d.ts +0 -0
  243. /package/{types → dist}/resources/DProductSubLine.d.ts +0 -0
  244. /package/{types → dist}/resources/FamilyDetails.d.ts +0 -0
  245. /package/{types → dist}/resources/ProductDetails.d.ts +0 -0
  246. /package/{types → dist}/resources/ProductRelation.d.ts +0 -0
  247. /package/{types → dist}/resources/cfFields.d.ts +0 -0
  248. /package/{types → dist}/types.d.ts +0 -0
  249. /package/{types → dist}/utils.d.ts +0 -0
@@ -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
- };