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.
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 -45
  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,315 +0,0 @@
1
- import { log } from "../libs/logs";
2
- import {
3
- getClient,
4
- getEnvironmentDefaultLocaleCode,
5
- getEntryByID,
6
- getTopicPage,
7
- } from "../libs/contentful-cda";
8
- import { getIndex, AvailableIndicesKey, removeIndexObject } from "./config";
9
- import {
10
- getAllTranslations,
11
- getLocalISOTime,
12
- secondBetweenTwoDate,
13
- } from "../utils";
14
- import type { Entry } from "contentful-management/dist/typings/entities/entry";
15
- import {
16
- CfLocalizedEntryField,
17
- AlgoliaPaginateRecords,
18
- WrapperImageFields,
19
- } from "../types";
20
- import { getWrapperImgixFields } from "../libs/imgix";
21
- import removeMd from "remove-markdown";
22
-
23
- const indexKey: AvailableIndicesKey = "inspirations";
24
-
25
- export type AlgoliaInspirationRecord = {
26
- objectID: string;
27
- name?: CfLocalizedEntryField;
28
- description?: CfLocalizedEntryField;
29
- excerpt?: CfLocalizedEntryField;
30
- slugs?: {};
31
- thumbnailImgix?: WrapperImageFields | {};
32
- category?: {};
33
- visualizationDate?: string;
34
- lastSyncDate?: string;
35
- hideInRegions?: string[];
36
- type?: string;
37
- };
38
-
39
- const isObjectToDelete = (
40
- object: any,
41
- defaultEnvironmentLocaleCode: string
42
- ) => {
43
- return !object?.slugs?.[defaultEnvironmentLocaleCode];
44
- };
45
-
46
- const getObject = async (
47
- topic: Entry,
48
- contentTypeId: string
49
- ): Promise<AlgoliaInspirationRecord> => {
50
- const defaultEnvironmentLocaleCode = await getEnvironmentDefaultLocaleCode();
51
- log(`Sync the ${topic.sys.id} ${contentTypeId}...`);
52
- let topicWithFields: Entry = topic;
53
-
54
- if (!topicWithFields?.fields) {
55
- log(`Get the ${topic.sys.id} ${contentTypeId} details...`);
56
- topicWithFields = await getEntryByID(topic.sys.id, contentTypeId);
57
- }
58
-
59
- if (!topicWithFields) {
60
- log(`The ${contentTypeId} ${topic.sys.id} not found`, "WARN");
61
-
62
- const recordFail: AlgoliaInspirationRecord = {
63
- objectID: topic?.sys?.id,
64
- };
65
-
66
- return recordFail; // return objectID to delete the record if it exists
67
- }
68
-
69
- const isProject = topicWithFields.sys.contentType.sys.id === "topicProject";
70
-
71
- log(`Get page details...`);
72
- const page = await getTopicPage(
73
- topic.sys.id,
74
- "fields.slug,fields.protected,fields.hideInRegions"
75
- );
76
-
77
- if (!page) {
78
- log(`The ${contentTypeId} page ${topic.sys.id} not found`, "WARN");
79
-
80
- const recordFail: AlgoliaInspirationRecord = {
81
- objectID: topic?.sys?.id,
82
- };
83
-
84
- return recordFail; // return objectID to delete the record if it exists
85
- }
86
-
87
- const slugs = await getAllTranslations(page?.fields.slug || {});
88
-
89
- const thumbnailField = isProject ? "thumbnailImgix" : "previewImagesImgix";
90
- log(`Get ${thumbnailField} details...`);
91
- let thumbnailImgix = {};
92
- let thumbnailImgixWrapperImgixID = "";
93
- if (
94
- Array.isArray(
95
- topicWithFields?.fields?.[thumbnailField]?.[defaultEnvironmentLocaleCode]
96
- )
97
- ) {
98
- thumbnailImgixWrapperImgixID =
99
- topicWithFields?.fields?.[thumbnailField]?.[
100
- defaultEnvironmentLocaleCode
101
- ]?.[0]?.sys?.id;
102
- } else {
103
- thumbnailImgixWrapperImgixID =
104
- topicWithFields?.fields?.[thumbnailField]?.[defaultEnvironmentLocaleCode]
105
- ?.sys?.id;
106
- }
107
- if (thumbnailImgixWrapperImgixID) {
108
- thumbnailImgix = await getWrapperImgixFields(thumbnailImgixWrapperImgixID);
109
- } else {
110
- log(`No thumbnail imgix found`, "WARN");
111
- }
112
-
113
- log(`Get hideInRegions details...`);
114
- const hideInRegions =
115
- page.fields.hideInRegions?.[defaultEnvironmentLocaleCode].map(
116
- (item: Entry) => item.sys.id
117
- ) || [];
118
-
119
- const clearExcerpt = {};
120
- for (const locale in topicWithFields?.fields?.excerpt) {
121
- if (topicWithFields?.fields?.excerpt?.[locale]) {
122
- (clearExcerpt as any)[locale] = removeMd(
123
- topicWithFields?.fields?.excerpt?.[locale]
124
- );
125
- }
126
- }
127
-
128
- log(`Get category details...`);
129
- let category = {};
130
- if (
131
- !isProject &&
132
- topicWithFields.fields?.category?.[defaultEnvironmentLocaleCode]?.sys?.id
133
- ) {
134
- const categoryEntry = await getEntryByID(
135
- topicWithFields.fields.category[defaultEnvironmentLocaleCode].sys.id,
136
- "topicStoryCategory"
137
- );
138
- if (categoryEntry) {
139
- category = {
140
- sysId:
141
- topicWithFields.fields.category[defaultEnvironmentLocaleCode].sys.id,
142
- title: await getAllTranslations(categoryEntry?.fields?.title || {}),
143
- priority: await getAllTranslations(
144
- categoryEntry?.fields?.priority || {}
145
- ),
146
- };
147
- } else {
148
- log(`No categoryEntry found`, "WARN");
149
- }
150
- } else {
151
- log(`No category found`, "WARN");
152
- }
153
-
154
- // Single record
155
- const emptyLocalizedField: CfLocalizedEntryField = {
156
- [defaultEnvironmentLocaleCode]: "",
157
- };
158
- const record: AlgoliaInspirationRecord = {
159
- objectID: topicWithFields.sys.id,
160
- name: await getAllTranslations(
161
- topicWithFields?.fields?.title || emptyLocalizedField
162
- ),
163
- excerpt: await getAllTranslations(
164
- topicWithFields?.fields?.excerpt ? clearExcerpt : emptyLocalizedField
165
- ),
166
- description: await getAllTranslations(
167
- topicWithFields?.fields?.description || emptyLocalizedField
168
- ),
169
- slugs,
170
- thumbnailImgix,
171
- category,
172
- visualizationDate:
173
- topicWithFields?.fields?.visualizationDate?.[
174
- defaultEnvironmentLocaleCode
175
- ] || "",
176
- hideInRegions,
177
- lastSyncDate: getLocalISOTime(),
178
- type: isProject ? "project" : "story",
179
- };
180
-
181
- return record;
182
- };
183
-
184
- export const reindexInspiration = async (topicId: string) => {
185
- const defaultEnvironmentLocaleCode = await getEnvironmentDefaultLocaleCode();
186
- const timeStart = new Date();
187
-
188
- log(`reindexInspiration - entryId: ${topicId} `);
189
-
190
- let topic = await getEntryByID(topicId, "topicProject");
191
- topic = !topic ? await getEntryByID(topicId, "topicStory") : topic;
192
-
193
- const index = getIndex(indexKey);
194
- let record = null;
195
- if (!topic) {
196
- log(`No topic found with id ${topicId}. Delete object if exists`, "WARN");
197
- record = await index.deleteObject(topicId);
198
- return { ...record };
199
- }
200
-
201
- const object = await getObject(topic, topic.sys.contentType.sys.id);
202
-
203
- // Save record to Algolia
204
- if (!isObjectToDelete(object, defaultEnvironmentLocaleCode)) {
205
- log(`Save object`);
206
- record = await index.saveObject(object);
207
- } else {
208
- log(`Delete object`);
209
- record = await index.deleteObject(object.objectID);
210
- }
211
- const timeEnd = new Date();
212
- const seconds = secondBetweenTwoDate(timeStart, timeEnd);
213
- log(`Execution time: ${seconds} seconds`);
214
-
215
- return { ...record, ...object };
216
- };
217
-
218
- /**
219
- * Get Objects
220
- *
221
- * @param offset
222
- * @param limit
223
- * @param filterKey
224
- * @param filterValue
225
- * @returns
226
- */
227
- const getObjects = async (
228
- offset: number,
229
- limit: number,
230
- filterKey?: string,
231
- filterValue?: string
232
- ): Promise<AlgoliaPaginateRecords> => {
233
- const client = await getClient();
234
-
235
- const opts: any = {
236
- content_type: "topicProject",
237
- limit,
238
- skip: offset,
239
- // select: "",
240
- };
241
- if (filterKey && filterValue) {
242
- opts[filterKey] = filterValue;
243
- }
244
- const { items: projectItems, total: projectTotal } =
245
- await client.withAllLocales.getEntries(opts);
246
- opts.content_type = "topicStory";
247
- const { items: storyItems, total: stotyTotal } =
248
- await client.withAllLocales.getEntries(opts);
249
- const items = [...projectItems, ...storyItems];
250
- const total = projectTotal + stotyTotal;
251
-
252
- const objects: AlgoliaInspirationRecord[] = [];
253
- let count: number = Number(offset);
254
- for (const topic of items) {
255
- log(`${++count} of ${total}`, "INFO");
256
- const timeStart = new Date();
257
- const record = await getObject(topic, topic.sys.contentType.sys.id);
258
- const timeEnd = new Date();
259
- const seconds = secondBetweenTwoDate(timeStart, timeEnd);
260
- log(`Execution time: ${seconds} seconds`);
261
- objects.push(record);
262
- }
263
-
264
- return {
265
- objects,
266
- offset: Number(offset) + Number(limit),
267
- limit: Number(limit),
268
- completed: count >= total, // if is true the import is completed
269
- total,
270
- };
271
- };
272
-
273
- export const reindexInspirations = async (
274
- offset: number = 0,
275
- limit: number = 50,
276
- filterKey: string = "",
277
- filterValue: string = ""
278
- ) => {
279
- const defaultEnvironmentLocaleCode = await getEnvironmentDefaultLocaleCode();
280
- const timeStart = new Date();
281
- log(
282
- `reindexInspirations - filterKey: ${filterKey} filterValue: ${filterValue} offset: ${offset} limit: ${limit} `
283
- );
284
-
285
- const records = await getObjects(offset, limit, filterKey, filterValue);
286
- const objectsToSave = records.objects.filter(
287
- (object) => !isObjectToDelete(object, defaultEnvironmentLocaleCode)
288
- );
289
- const objectIdsToDelete = records.objects
290
- .filter((object) => isObjectToDelete(object, defaultEnvironmentLocaleCode))
291
- .map((object) => object.objectID);
292
-
293
- // Save records to Algolia
294
- const index = getIndex(indexKey);
295
- log(`Save ${objectsToSave.length} objects to ${index.indexName} index`);
296
- const savedObjectIDs = await index.saveObjects(objectsToSave);
297
- log(
298
- `Delete ${objectIdsToDelete.length} objects from ${index.indexName} index`
299
- );
300
- const deletedObjectIDs = await index.deleteObjects(objectIdsToDelete);
301
-
302
- const timeEnd = new Date();
303
- const seconds = secondBetweenTwoDate(timeStart, timeEnd);
304
- log(`Execution time: ${seconds} seconds`);
305
-
306
- return {
307
- ...records,
308
- savedObjectIDs: savedObjectIDs.objectIDs,
309
- deletedObjectIDs: deletedObjectIDs.objectIDs,
310
- };
311
- };
312
-
313
- export const removeInspirationObject = async (objectId: string) => {
314
- return removeIndexObject(objectId, indexKey);
315
- };