sr-npm 1.7.154 → 1.7.155

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/backend/consts.js CHANGED
@@ -1,4 +1,4 @@
1
- const {saveJobsDataToCMS,saveJobsDescriptionsAndLocationApplyUrlToCMS,aggregateJobsByFieldToCMS,referenceJobsToField,createApiKeyCollectionAndFillIt} = require('./data');
1
+ const {saveJobsDataToCMS,saveJobsDescriptionsAndLocationApplyUrlToCMS,aggregateJobsByFieldToCMS,referenceJobsToField,createApiKeyCollectionAndFillIt,createCollections,aggregateJobs,referenceJobs,syncJobsFast} = require('./data');
2
2
  const { createCollectionIfMissing } = require('@hisense-staging/velo-npm/backend');
3
3
  const { COLLECTIONS, COLLECTIONS_FIELDS, JOBS_COLLECTION_FIELDS } = require('./collectionConsts');
4
4
 
@@ -8,14 +8,11 @@ const TASKS_NAMES = {
8
8
  SYNC_JOBS: 'syncJobsFromSRAPIToCMS',
9
9
  INSERT_JOBS_TO_CMS: 'insertJobsToCMS',
10
10
  INSERT_JOBS_DESCRIPTIONS_LOCATION_APPLY_URL_TO_CMS: 'insertJobsDescriptionsLocationApplyUrlToCMS',
11
- FILL_JOBS_PER_CITY_COLLECTION: 'fillJobsPerCityCollection',
12
- FILL_JOBS_PER_DEPARTMENT_COLLECTION: 'fillJobsPerDepartmentCollection',
13
- REFERENCE_JOBS_TO_LOCATIONS: 'referenceJobsToLocations',
14
- REFERENCE_JOBS_TO_DEPARTMENT: 'referenceJobsToDepartment',
15
- CREATE_JOBS_COLLECTION: 'createJobsCollection',
16
- CREATE_CITIES_COLLECTION: 'createCitiesCollection',
17
- CREATE_AMOUNT_OF_JOBS_PER_DEPARTMENT_COLLECTION: 'createAmountOfJobsPerDepartmentCollection',
11
+ AGGREGATE_JOBS_BY_FIELD_TO_CMS: 'aggregateJobsByFieldToCMS',
12
+ REFERENCE_JOBS: 'referenceJobs',
13
+ CREATE_COLLECTIONS: 'createCollections',
18
14
  CREATE_API_KEY_COLLECTION_AND_FILL_IT: 'createApiKeyCollectionAndFillIt',
15
+ SYNC_JOBS_FAST: 'syncJobsFast',
19
16
  }
20
17
 
21
18
 
@@ -23,39 +20,21 @@ const TASKS = {
23
20
  [TASKS_NAMES.SYNC_JOBS]: {
24
21
  name: TASKS_NAMES.SYNC_JOBS,
25
22
  childTasks: [
26
- { name: TASKS_NAMES.CREATE_JOBS_COLLECTION },
27
- { name: TASKS_NAMES.CREATE_CITIES_COLLECTION },
28
- {name: TASKS_NAMES.CREATE_AMOUNT_OF_JOBS_PER_DEPARTMENT_COLLECTION},
23
+ { name: TASKS_NAMES.CREATE_COLLECTIONS},
29
24
  { name: TASKS_NAMES.INSERT_JOBS_TO_CMS },
30
25
  { name: TASKS_NAMES.INSERT_JOBS_DESCRIPTIONS_LOCATION_APPLY_URL_TO_CMS },
31
- { name: TASKS_NAMES.FILL_JOBS_PER_CITY_COLLECTION },
32
- { name: TASKS_NAMES.FILL_JOBS_PER_DEPARTMENT_COLLECTION },
33
- { name: TASKS_NAMES.REFERENCE_JOBS_TO_LOCATIONS },
34
- { name: TASKS_NAMES.REFERENCE_JOBS_TO_DEPARTMENT },
26
+ { name: TASKS_NAMES.AGGREGATE_JOBS_BY_FIELD_TO_CMS },
27
+ {name: TASKS_NAMES.REFERENCE_JOBS},
35
28
  ],
36
29
  scheduleChildrenSequentially: true,
37
- estimatedDurationSec: 30,
30
+ estimatedDurationSec: 60,
38
31
  },
39
- [TASKS_NAMES.CREATE_JOBS_COLLECTION]: {
40
- name: TASKS_NAMES.CREATE_JOBS_COLLECTION,
32
+ [TASKS_NAMES.CREATE_COLLECTIONS]: {
33
+ name: TASKS_NAMES.CREATE_COLLECTIONS,
41
34
  getIdentifier:()=> "SHOULD_NEVER_SKIP",
42
- process:()=>createCollectionIfMissing(COLLECTIONS.JOBS, COLLECTIONS_FIELDS.JOBS,{ insert: 'ADMIN', update: 'ADMIN', remove: 'ADMIN', read: 'ANYONE' }),
35
+ process:createCollections,
43
36
  shouldSkipCheck:()=>false,
44
- estimatedDurationSec:3
45
- },
46
- [TASKS_NAMES.CREATE_CITIES_COLLECTION]: {
47
- name: TASKS_NAMES.CREATE_CITIES_COLLECTION,
48
- getIdentifier:()=> "SHOULD_NEVER_SKIP",
49
- process:()=>createCollectionIfMissing(COLLECTIONS.CITIES, COLLECTIONS_FIELDS.CITIES),
50
- shouldSkipCheck:()=>false,
51
- estimatedDurationSec:3
52
- },
53
- [TASKS_NAMES.CREATE_AMOUNT_OF_JOBS_PER_DEPARTMENT_COLLECTION]: {
54
- name: TASKS_NAMES.CREATE_AMOUNT_OF_JOBS_PER_DEPARTMENT_COLLECTION,
55
- getIdentifier:()=> "SHOULD_NEVER_SKIP",
56
- process:()=>createCollectionIfMissing(COLLECTIONS.AMOUNT_OF_JOBS_PER_DEPARTMENT, COLLECTIONS_FIELDS.AMOUNT_OF_JOBS_PER_DEPARTMENT),
57
- shouldSkipCheck:()=>false,
58
- estimatedDurationSec:3
37
+ estimatedDurationSec:7
59
38
  },
60
39
  [TASKS_NAMES.INSERT_JOBS_TO_CMS]: {
61
40
  name: TASKS_NAMES.INSERT_JOBS_TO_CMS,
@@ -71,40 +50,33 @@ const TASKS = {
71
50
  shouldSkipCheck:()=>false,
72
51
  estimatedDurationSec:20
73
52
  },
74
- [TASKS_NAMES.FILL_JOBS_PER_CITY_COLLECTION]: {
75
- name: TASKS_NAMES.FILL_JOBS_PER_CITY_COLLECTION,
76
- getIdentifier:()=> "SHOULD_NEVER_SKIP",
77
- process:()=>aggregateJobsByFieldToCMS({ field: JOBS_COLLECTION_FIELDS.CITY_TEXT, collection: COLLECTIONS.CITIES }),
78
- shouldSkipCheck:()=>false,
79
- estimatedDurationSec:3
80
- },
81
- [TASKS_NAMES.FILL_JOBS_PER_DEPARTMENT_COLLECTION]: {
82
- name: TASKS_NAMES.FILL_JOBS_PER_DEPARTMENT_COLLECTION,
83
- getIdentifier:()=> "SHOULD_NEVER_SKIP",
84
- process:()=>aggregateJobsByFieldToCMS({ field: JOBS_COLLECTION_FIELDS.DEPARTMENT, collection: COLLECTIONS.AMOUNT_OF_JOBS_PER_DEPARTMENT }),
85
- shouldSkipCheck:()=>false,
86
- estimatedDurationSec:3
87
- },
88
- [TASKS_NAMES.REFERENCE_JOBS_TO_LOCATIONS]: {
89
- name: TASKS_NAMES.REFERENCE_JOBS_TO_LOCATIONS,
90
- getIdentifier:()=> "SHOULD_NEVER_SKIP",
91
- process:()=>referenceJobsToField({ referenceField: JOBS_COLLECTION_FIELDS.CITY, sourceCollection: COLLECTIONS.CITIES, jobField: JOBS_COLLECTION_FIELDS.CITY_TEXT }),
92
- shouldSkipCheck:()=>false,
93
- estimatedDurationSec:3
94
- },
95
- [TASKS_NAMES.REFERENCE_JOBS_TO_DEPARTMENT]: {
96
- name: TASKS_NAMES.REFERENCE_JOBS_TO_DEPARTMENT,
97
- getIdentifier:()=> "SHOULD_NEVER_SKIP",
98
- process:()=>referenceJobsToField({ referenceField: JOBS_COLLECTION_FIELDS.DEPARTMENT_REF, sourceCollection: COLLECTIONS.AMOUNT_OF_JOBS_PER_DEPARTMENT, jobField: JOBS_COLLECTION_FIELDS.DEPARTMENT }),
99
- shouldSkipCheck:()=>false,
100
- estimatedDurationSec:3
101
- },
53
+ [TASKS_NAMES.AGGREGATE_JOBS_BY_FIELD_TO_CMS]: {
54
+ name: TASKS_NAMES.AGGREGATE_JOBS_BY_FIELD_TO_CMS,
55
+ getIdentifier:()=> "SHOULD_NEVER_SKIP",
56
+ process:aggregateJobs,
57
+ shouldSkipCheck:()=>false,
58
+ estimatedDurationSec:6
59
+ },
60
+ [TASKS_NAMES.REFERENCE_JOBS]: {
61
+ name: TASKS_NAMES.REFERENCE_JOBS,
62
+ getIdentifier:()=> "SHOULD_NEVER_SKIP",
63
+ process:referenceJobs,
64
+ shouldSkipCheck:()=>false,
65
+ estimatedDurationSec:6
66
+ },
102
67
  [TASKS_NAMES.CREATE_API_KEY_COLLECTION_AND_FILL_IT]: {
103
68
  name: TASKS_NAMES.CREATE_API_KEY_COLLECTION_AND_FILL_IT,
104
69
  getIdentifier:()=> "SHOULD_NEVER_SKIP",
105
70
  process:()=>createApiKeyCollectionAndFillIt(),
106
71
  shouldSkipCheck:()=>false,
107
72
  estimatedDurationSec:3
73
+ },
74
+ [TASKS_NAMES.SYNC_JOBS_FAST]: {
75
+ name: TASKS_NAMES.SYNC_JOBS_FAST,
76
+ getIdentifier:()=> "SHOULD_NEVER_SKIP",
77
+ process:()=>syncJobsFast(),
78
+ shouldSkipCheck:()=>false,
79
+ estimatedDurationSec:60
108
80
  }
109
81
  }
110
82
 
package/backend/data.js CHANGED
@@ -29,8 +29,6 @@ async function saveJobsDataToCMS() {
29
29
  // bulk insert to jobs collection without descriptions first
30
30
  const jobsData = positions.content.map(position => {
31
31
  validatePosition(position);
32
- console.log("before: position.department.label", position.department.label);
33
- console.log("after: position.department.label", position.department.label.replace('&', ' and '));
34
32
  const basicJob = {
35
33
  _id: position.id,
36
34
  title: position.title,
@@ -45,7 +43,6 @@ async function saveJobsDataToCMS() {
45
43
  };
46
44
  return basicJob;
47
45
  });
48
- console.log("jobsData@@@@@@@", jobsData);
49
46
 
50
47
  const chunkSize = 1000;
51
48
  let totalSaved = 0;
@@ -299,8 +296,57 @@ async function createApiKeyCollectionAndFillIt() {
299
296
  console.log("Smart token inserted into the ApiKey collection");
300
297
  }
301
298
 
299
+ async function createCollections() {
300
+ console.log("Creating collections");
301
+ Promise.all(
302
+ [createCollectionIfMissing(COLLECTIONS.JOBS, JOBS_COLLECTION_FIELDS.JOBS,{ insert: 'ADMIN', update: 'ADMIN', remove: 'ADMIN', read: 'ANYONE' }),
303
+ createCollectionIfMissing(COLLECTIONS.CITIES, COLLECTIONS_FIELDS.CITIES),
304
+ createCollectionIfMissing(COLLECTIONS.AMOUNT_OF_JOBS_PER_DEPARTMENT, COLLECTIONS_FIELDS.AMOUNT_OF_JOBS_PER_DEPARTMENT)
305
+ ]);
306
+ console.log("finished creating Collections");
307
+ }
308
+
309
+ async function aggregateJobs() {
310
+ console.log("Aggregating jobs");
311
+ Promise.all([
312
+ aggregateJobsByFieldToCMS({ field: JOBS_COLLECTION_FIELDS.CITY_TEXT, collection: COLLECTIONS.CITIES }),
313
+ aggregateJobsByFieldToCMS({ field: JOBS_COLLECTION_FIELDS.DEPARTMENT, collection: COLLECTIONS.AMOUNT_OF_JOBS_PER_DEPARTMENT })
314
+ ]);
315
+ console.log("finished aggregating jobs");
316
+ }
317
+
318
+ async function referenceJobs() {
319
+ console.log("Reference jobs");
320
+ await referenceJobsToField({ referenceField: JOBS_COLLECTION_FIELDS.DEPARTMENT_REF, sourceCollection: COLLECTIONS.AMOUNT_OF_JOBS_PER_DEPARTMENT, jobField: JOBS_COLLECTION_FIELDS.DEPARTMENT })
321
+ await referenceJobsToField({ referenceField: JOBS_COLLECTION_FIELDS.CITY, sourceCollection: COLLECTIONS.CITIES, jobField: JOBS_COLLECTION_FIELDS.CITY_TEXT }),
322
+ console.log("finished referencing jobs");
323
+ }
324
+
325
+ async function syncJobsFast() {
326
+ console.log("Syncing jobs fast");
327
+ console.log("Creating collections");
328
+ await createCollections();
329
+ console.log("created collections successfully");
330
+ console.log("saving jobs data to CMS");
331
+ await saveJobsDataToCMS();
332
+ console.log("saved jobs data to CMS successfully");
333
+ console.log("saving jobs descriptions and location apply url to CMS");
334
+ await saveJobsDescriptionsAndLocationApplyUrlToCMS();
335
+ console.log("saved jobs descriptions and location apply url to CMS successfully");
336
+ console.log("aggregating jobs");
337
+ await aggregateJobs();
338
+ console.log("aggregated jobs successfully");
339
+ console.log("referencing jobs");
340
+ await referenceJobs();
341
+ console.log("referenced jobs successfully");
342
+ console.log("syncing jobs fast finished successfully");
343
+ }
302
344
 
303
345
  module.exports = {
346
+ syncJobsFast,
347
+ referenceJobs,
348
+ aggregateJobs,
349
+ createCollections,
304
350
  saveJobsDataToCMS,
305
351
  saveJobsDescriptionsAndLocationApplyUrlToCMS,
306
352
  aggregateJobsByFieldToCMS,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sr-npm",
3
- "version": "1.7.154",
3
+ "version": "1.7.155",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -1,7 +1,7 @@
1
1
  const { getAllPositions } = require('../backend/queries');
2
2
  const {wixData} = require('wix-data');
3
3
  const { window } = require('@wix/site-window');
4
- const { query,queryParams,to,url } = require("wix-location-frontend");
4
+ const { query,queryParams,to } = require("wix-location-frontend");
5
5
  const {
6
6
  debounce,
7
7
  getFilter,
@@ -21,7 +21,6 @@ async function careersPageOnReady(_$w,thisObject,query) {
21
21
  queryPageVar=query.page;
22
22
  queryKeyWordVar=query.keyWord;
23
23
  queryDepartmentVar=query.department;
24
- console.log("query", query);
25
24
  thisObjectVar=thisObject;
26
25
  allJobs=await getAllPositions();
27
26
  await handleUrlParams(_$w);
@@ -179,7 +178,7 @@ async function applyFilters(_$w, skipUrlUpdate = false) {
179
178
  { elementId: '#searchInput', field: 'title', value: _$w('#searchInput').value }
180
179
  ];
181
180
 
182
- console.log("dropdownFiltersMapping:###### ", dropdownFiltersMapping);
181
+
183
182
 
184
183
  let filters = [];
185
184
  let value;
@@ -260,42 +259,37 @@ async function updateCount(_$w) {
260
259
 
261
260
  async function handleDepartmentParam(_$w,department) {
262
261
  const departmentValue = department.replace('-', ' ');
263
- console.log("department inside handleDepartmentParam", departmentValue);
264
262
 
265
- // Debug: Check dropdown options
263
+
266
264
 
267
- console.log("after refresh");
268
265
  let dropdownOptions = _$w('#dropdownDepartment').options;
269
266
  console.log("dropdown options:", dropdownOptions);
270
267
  const optionsFromCMS=await wixData.query("AmountOfJobsPerDepartment").find();
271
268
  //+1 because of the "All" option
272
269
 
273
270
  if(dropdownOptions.length!==optionsFromCMS.items.length+1){
274
-
275
- dropdownOptions=[{
276
- label: "All",
277
- value: "RESET_ALL"
278
- }]
279
- dropdownOptions.push(...optionsFromCMS.items.map(item=>({
280
- label: item.title,
281
- value: item.title
282
- })));
283
- _$w('#dropdownDepartment').options=dropdownOptions;
284
- console.warn("something is wrong with the dropdown options, fixing it");
271
+ fixDropdownOptions(optionsFromCMS, _$w);
285
272
  }
286
273
 
287
-
288
- // Try setting the value
289
274
  _$w('#dropdownDepartment').value = departmentValue;
290
- console.log("after setting, dropdown value:", _$w('#dropdownDepartment').value);
291
275
 
292
- console.log("before applyFilters_$w('#dropdownDepartment').value", _$w('#dropdownDepartment').value);
293
-
294
276
  await applyFilters(_$w, true); // Skip URL update since we're handling initial URL params
295
- // console.log("url", url);
296
- // await to(url);
297
277
  }
298
278
 
279
+ function fixDropdownOptions(optionsFromCMS, _$w){
280
+ let dropdownOptions = [];
281
+ dropdownOptions=[{
282
+ label: "All",
283
+ value: "RESET_ALL"
284
+ }]
285
+ dropdownOptions.push(...optionsFromCMS.items.map(item=>({
286
+ label: item.title,
287
+ value: item.title
288
+ })));
289
+ _$w('#dropdownDepartment').options=dropdownOptions;
290
+ console.warn("something is wrong with the dropdown options, fixing it");
291
+
292
+ }
299
293
 
300
294
 
301
295