sr-npm 1.7.65 → 1.7.67

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/.prettierrc ADDED
@@ -0,0 +1,16 @@
1
+ {
2
+ "singleQuote": true,
3
+ "trailingComma": "es5",
4
+ "printWidth": 100,
5
+ "tabWidth": 2,
6
+ "semi": true,
7
+ "bracketSpacing": true,
8
+ "arrowParens": "avoid",
9
+ "endOfLine": "lf",
10
+ "quoteProps": "as-needed",
11
+ "jsxSingleQuote": false,
12
+ "jsxBracketSameLine": false,
13
+ "requirePragma": false,
14
+ "insertPragma": false,
15
+ "proseWrap": "preserve"
16
+ }
@@ -1,10 +1,35 @@
1
1
  const COLLECTIONS = {
2
- AMOUNT_OF_JOBS_PER_DEPARTMENT: 'AmountOfJobsPerDepartment',
3
- CITIES: 'cities',
4
- JOBS: 'Jobs',
2
+ AMOUNT_OF_JOBS_PER_DEPARTMENT: 'AmountOfJobsPerDepartment1',
3
+ CITIES: 'cities1',
4
+ JOBS: 'Jobs1',
5
5
  API_KEY: 'ApiKey',
6
6
  }
7
-
7
+ const JOBS_COLLECTION_FIELDS = {
8
+ LOCATION: 'location',
9
+ TITLE: 'title',
10
+ LOCATION_ADDRESS: 'locationAddress',
11
+ POSTING_STATUS: 'postingStatus',
12
+ COUNTRY: 'country',
13
+ DEPARTMENT: 'department',
14
+ LANGUAGE: 'language',
15
+ REMOTE: 'remote',
16
+ JOB_DESCRIPTION: 'jobDescription',
17
+ DEPARTMENT_REF: 'departmentRef',
18
+ CITY: 'city',
19
+ CITY_TEXT: 'cityText',
20
+ }
21
+ const AMOUNT_OF_JOBS_PER_DEPARTMENT_COLLECTION_FIELDS = {
22
+ TITLE: 'title',
23
+ COUNT: 'count',
24
+ IMAGE: 'image',
25
+ }
26
+ const CITIES_COLLECTION_FIELDS = {
27
+ TITLE: 'title',
28
+ CITY: 'city',
29
+ LOCATION_ADDRESS: 'locationAddress',
30
+ COUNT: 'count',
31
+ COUNTRY: 'country',
32
+ }
8
33
  const COLLECTIONS_FIELDS = {
9
34
  AMOUNT_OF_JOBS_PER_DEPARTMENT: [
10
35
  {key:'title', type: 'TEXT'},
@@ -28,10 +53,9 @@ const COLLECTIONS_FIELDS = {
28
53
  {key:'language', type: 'TEXT'},
29
54
  {key:'remote', type: 'BOOLEAN'},
30
55
  {key:'jobDescription', type: 'OBJECT'},
31
- {key:'cityText', type: 'TEXT'},
32
- {key:'applyLink', type: 'URL'},
33
- {key:'departmentref', type: 'REFERENCE', typeMetadata: { reference: { referencedCollectionId: 'AmountOfJobsPerDepartment' } } },
34
- {key:'city', type: 'REFERENCE', typeMetadata: { reference: { referencedCollectionId: 'cities' } } },
56
+ {key:'cityText', type: 'TEXT'},
57
+ {key:'departmentRef', type: 'REFERENCE', typeMetadata: { reference: { referencedCollectionId: 'AmountOfJobsPerDepartment1' } } },
58
+ {key:'city', type: 'REFERENCE', typeMetadata: { reference: { referencedCollectionId: 'cities1' } } },
35
59
  ],
36
60
  API_KEY: [
37
61
  {key:'token', type: 'TEXT'},
@@ -39,8 +63,10 @@ const COLLECTIONS_FIELDS = {
39
63
  };
40
64
 
41
65
 
42
-
43
66
  module.exports = {
44
67
  COLLECTIONS,
45
68
  COLLECTIONS_FIELDS,
69
+ JOBS_COLLECTION_FIELDS,
70
+ AMOUNT_OF_JOBS_PER_DEPARTMENT_COLLECTION_FIELDS,
71
+ CITIES_COLLECTION_FIELDS,
46
72
  };
package/backend/consts.js CHANGED
@@ -1,10 +1,19 @@
1
- const {saveDataJobsToCMS,saveJobsDescriptionsAndLocationApplyUrlToCMS,aggregateJobsByFieldToCMS,referenceJobsToField,createApiKeyCollectionAndFillIt} = require('./data');
1
+ const {
2
+ saveJobsDataToCMS,
3
+ saveJobsDescriptionsAndLocationToCMS,
4
+ aggregateJobsByFieldToCMS,
5
+ referenceJobsToField,
6
+ createApiKeyCollectionAndFillIt,
7
+ } = require('./data');
2
8
  const { createCollectionIfMissing } = require('@hisense-staging/velo-npm/backend');
3
- const { COLLECTIONS, COLLECTIONS_FIELDS } = require('./collectionConsts');
9
+ const { COLLECTIONS, COLLECTIONS_FIELDS, JOBS_COLLECTION_FIELDS } = require('./collectionConsts');
10
+
11
+ const QUERY_MAX_LIMIT = 1000;
12
+
4
13
  const TASKS_NAMES = {
5
14
  SYNC_JOBS: 'syncJobsFromSRAPIToCMS',
6
15
  INSERT_JOBS_TO_CMS: 'insertJobsToCMS',
7
- INSERT_JOBS_DESCRIPTIONS_LOCATION_APPLY_URL_TO_CMS: 'insertJobsDescriptionsLocationApplyUrlToCMS',
16
+ INSERT_JOBS_DESCRIPTIONS_TO_CMS: 'insertJobsDescriptionsToCMS',
8
17
  FILL_JOBS_PER_CITY_COLLECTION: 'fillJobsPerCityCollection',
9
18
  FILL_JOBS_PER_DEPARTMENT_COLLECTION: 'fillJobsPerDepartmentCollection',
10
19
  REFERENCE_JOBS_TO_LOCATIONS: 'referenceJobsToLocations',
@@ -17,103 +26,126 @@ const TASKS_NAMES = {
17
26
 
18
27
 
19
28
  const TASKS = {
20
- [TASKS_NAMES.SYNC_JOBS]: {
21
- name: TASKS_NAMES.SYNC_JOBS,
22
- childTasks: [
23
- { name: TASKS_NAMES.CREATE_JOBS_COLLECTION },
24
- { name: TASKS_NAMES.CREATE_CITIES_COLLECTION },
25
- {name: TASKS_NAMES.CREATE_AMOUNT_OF_JOBS_PER_DEPARTMENT_COLLECTION},
26
- { name: TASKS_NAMES.INSERT_JOBS_TO_CMS },
27
- { name: TASKS_NAMES.INSERT_JOBS_DESCRIPTIONS_LOCATION_APPLY_URL_TO_CMS },
28
- { name: TASKS_NAMES.FILL_JOBS_PER_CITY_COLLECTION },
29
- { name: TASKS_NAMES.FILL_JOBS_PER_DEPARTMENT_COLLECTION },
30
- { name: TASKS_NAMES.REFERENCE_JOBS_TO_LOCATIONS },
31
- { name: TASKS_NAMES.REFERENCE_JOBS_TO_DEPARTMENT },
32
- ],
33
- scheduleChildrenSequentially: true,
34
- estimatedDurationSec: 30,
35
- },
36
- [TASKS_NAMES.CREATE_JOBS_COLLECTION]: {
37
- name: TASKS_NAMES.CREATE_JOBS_COLLECTION,
38
- getIdentifier:()=> "SHOULD_NEVER_SKIP",
39
- process:()=>createCollectionIfMissing(COLLECTIONS.JOBS, COLLECTIONS_FIELDS.JOBS,{ insert: 'ADMIN', update: 'ADMIN', remove: 'ADMIN', read: 'ANYONE' }),
40
- shouldSkipCheck:()=>false,
41
- estimatedDurationSec:3
42
- },
43
- [TASKS_NAMES.CREATE_CITIES_COLLECTION]: {
44
- name: TASKS_NAMES.CREATE_CITIES_COLLECTION,
45
- getIdentifier:()=> "SHOULD_NEVER_SKIP",
46
- process:()=>createCollectionIfMissing(COLLECTIONS.CITIES, COLLECTIONS_FIELDS.CITIES),
47
- shouldSkipCheck:()=>false,
48
- estimatedDurationSec:3
49
- },
50
- [TASKS_NAMES.CREATE_AMOUNT_OF_JOBS_PER_DEPARTMENT_COLLECTION]: {
51
- name: TASKS_NAMES.CREATE_AMOUNT_OF_JOBS_PER_DEPARTMENT_COLLECTION,
52
- getIdentifier:()=> "SHOULD_NEVER_SKIP",
53
- process:()=>createCollectionIfMissing(COLLECTIONS.AMOUNT_OF_JOBS_PER_DEPARTMENT, COLLECTIONS_FIELDS.AMOUNT_OF_JOBS_PER_DEPARTMENT),
54
- shouldSkipCheck:()=>false,
55
- estimatedDurationSec:3
56
- },
57
- [TASKS_NAMES.INSERT_JOBS_TO_CMS]: {
58
- name: TASKS_NAMES.INSERT_JOBS_TO_CMS,
59
- getIdentifier:()=> "SHOULD_NEVER_SKIP",
60
- process:saveDataJobsToCMS,
61
- shouldSkipCheck:()=>false,
62
- estimatedDurationSec:20
63
- },
64
- [TASKS_NAMES.INSERT_JOBS_DESCRIPTIONS_LOCATION_APPLY_URL_TO_CMS]: {
65
- name: TASKS_NAMES.INSERT_JOBS_DESCRIPTIONS_LOCATION_APPLY_URL_TO_CMS,
66
- getIdentifier:()=> "SHOULD_NEVER_SKIP",
67
- process:saveJobsDescriptionsAndLocationApplyUrlToCMS,
68
- shouldSkipCheck:()=>false,
69
- estimatedDurationSec:20
70
- },
71
- [TASKS_NAMES.FILL_JOBS_PER_CITY_COLLECTION]: {
72
- name: TASKS_NAMES.FILL_JOBS_PER_CITY_COLLECTION,
73
- getIdentifier:()=> "SHOULD_NEVER_SKIP",
74
- process:()=>aggregateJobsByFieldToCMS({ field: 'cityText', collection: COLLECTIONS.CITIES }),
75
- shouldSkipCheck:()=>false,
76
- estimatedDurationSec:3
77
- },
78
- [TASKS_NAMES.FILL_JOBS_PER_DEPARTMENT_COLLECTION]: {
79
- name: TASKS_NAMES.FILL_JOBS_PER_DEPARTMENT_COLLECTION,
80
- getIdentifier:()=> "SHOULD_NEVER_SKIP",
81
- process:()=>aggregateJobsByFieldToCMS({ field: 'department', collection: COLLECTIONS.AMOUNT_OF_JOBS_PER_DEPARTMENT }),
82
- shouldSkipCheck:()=>false,
83
- estimatedDurationSec:3
84
- },
85
- [TASKS_NAMES.REFERENCE_JOBS_TO_LOCATIONS]: {
86
- name: TASKS_NAMES.REFERENCE_JOBS_TO_LOCATIONS,
87
- getIdentifier:()=> "SHOULD_NEVER_SKIP",
88
- process:()=>referenceJobsToField({ referenceField: 'city', sourceCollection: COLLECTIONS.CITIES, jobField: 'cityText' }),
89
- shouldSkipCheck:()=>false,
90
- estimatedDurationSec:3
91
- },
92
- [TASKS_NAMES.REFERENCE_JOBS_TO_DEPARTMENT]: {
93
- name: TASKS_NAMES.REFERENCE_JOBS_TO_DEPARTMENT,
94
- getIdentifier:()=> "SHOULD_NEVER_SKIP",
95
- process:()=>referenceJobsToField({ referenceField: 'departmentref', sourceCollection: COLLECTIONS.AMOUNT_OF_JOBS_PER_DEPARTMENT, jobField: 'department' }),
96
- shouldSkipCheck:()=>false,
97
- estimatedDurationSec:3
98
- },
99
- [TASKS_NAMES.CREATE_API_KEY_COLLECTION_AND_FILL_IT]: {
100
- name: TASKS_NAMES.CREATE_API_KEY_COLLECTION_AND_FILL_IT,
101
- getIdentifier:()=> "SHOULD_NEVER_SKIP",
102
- process:()=>createApiKeyCollectionAndFillIt(),
103
- shouldSkipCheck:()=>false,
104
- estimatedDurationSec:3
105
- }
106
- }
29
+ [TASKS_NAMES.SYNC_JOBS]: {
30
+ name: TASKS_NAMES.SYNC_JOBS,
31
+ childTasks: [
32
+ { name: TASKS_NAMES.CREATE_JOBS_COLLECTION },
33
+ { name: TASKS_NAMES.CREATE_CITIES_COLLECTION },
34
+ { name: TASKS_NAMES.CREATE_AMOUNT_OF_JOBS_PER_DEPARTMENT_COLLECTION },
35
+ { name: TASKS_NAMES.INSERT_JOBS_TO_CMS },
36
+ { name: TASKS_NAMES.INSERT_JOBS_DESCRIPTIONS_TO_CMS },
37
+ { name: TASKS_NAMES.FILL_JOBS_PER_CITY_COLLECTION },
38
+ { name: TASKS_NAMES.FILL_JOBS_PER_DEPARTMENT_COLLECTION },
39
+ { name: TASKS_NAMES.REFERENCE_JOBS_TO_LOCATIONS },
40
+ { name: TASKS_NAMES.REFERENCE_JOBS_TO_DEPARTMENT },
41
+ ],
42
+ scheduleChildrenSequentially: true,
43
+ estimatedDurationSec: 30,
44
+ },
45
+ [TASKS_NAMES.CREATE_JOBS_COLLECTION]: {
46
+ name: TASKS_NAMES.CREATE_JOBS_COLLECTION,
47
+ getIdentifier: () => 'SHOULD_NEVER_SKIP',
48
+ process: () => createCollectionIfMissing(COLLECTIONS.JOBS, COLLECTIONS_FIELDS.JOBS,{ insert: 'ADMIN', update: 'ADMIN', remove: 'ADMIN', read: 'ANYONE' }),
49
+ shouldSkipCheck: () => false,
50
+ estimatedDurationSec: 3,
51
+ },
52
+ [TASKS_NAMES.CREATE_CITIES_COLLECTION]: {
53
+ name: TASKS_NAMES.CREATE_CITIES_COLLECTION,
54
+ getIdentifier: () => 'SHOULD_NEVER_SKIP',
55
+ process: () => createCollectionIfMissing(COLLECTIONS.CITIES, COLLECTIONS_FIELDS.CITIES),
56
+ shouldSkipCheck: () => false,
57
+ estimatedDurationSec: 3,
58
+ },
59
+ [TASKS_NAMES.CREATE_AMOUNT_OF_JOBS_PER_DEPARTMENT_COLLECTION]: {
60
+ name: TASKS_NAMES.CREATE_AMOUNT_OF_JOBS_PER_DEPARTMENT_COLLECTION,
61
+ getIdentifier: () => 'SHOULD_NEVER_SKIP',
62
+ process: () =>
63
+ createCollectionIfMissing(
64
+ COLLECTIONS.AMOUNT_OF_JOBS_PER_DEPARTMENT,
65
+ COLLECTIONS_FIELDS.AMOUNT_OF_JOBS_PER_DEPARTMENT
66
+ ),
67
+ shouldSkipCheck: () => false,
68
+ estimatedDurationSec: 3,
69
+ },
70
+ [TASKS_NAMES.INSERT_JOBS_TO_CMS]: {
71
+ name: TASKS_NAMES.INSERT_JOBS_TO_CMS,
72
+ getIdentifier: () => 'SHOULD_NEVER_SKIP',
73
+ process: saveJobsDataToCMS,
74
+ shouldSkipCheck: () => false,
75
+ estimatedDurationSec: 20,
76
+ },
77
+ [TASKS_NAMES.INSERT_JOBS_DESCRIPTIONS_TO_CMS]: {
78
+ name: TASKS_NAMES.INSERT_JOBS_DESCRIPTIONS_TO_CMS,
79
+ getIdentifier: () => 'SHOULD_NEVER_SKIP',
80
+ process: saveJobsDescriptionsAndLocationToCMS,
81
+ shouldSkipCheck: () => false,
82
+ estimatedDurationSec: 20,
83
+ },
84
+ [TASKS_NAMES.FILL_JOBS_PER_CITY_COLLECTION]: {
85
+ name: TASKS_NAMES.FILL_JOBS_PER_CITY_COLLECTION,
86
+ getIdentifier: () => 'SHOULD_NEVER_SKIP',
87
+ process: () =>
88
+ aggregateJobsByFieldToCMS({
89
+ field: JOBS_COLLECTION_FIELDS.CITY_TEXT,
90
+ collection: COLLECTIONS.CITIES,
91
+ }),
92
+ shouldSkipCheck: () => false,
93
+ estimatedDurationSec: 3,
94
+ },
95
+ [TASKS_NAMES.FILL_JOBS_PER_DEPARTMENT_COLLECTION]: {
96
+ name: TASKS_NAMES.FILL_JOBS_PER_DEPARTMENT_COLLECTION,
97
+ getIdentifier: () => 'SHOULD_NEVER_SKIP',
98
+ process: () =>
99
+ aggregateJobsByFieldToCMS({
100
+ field: JOBS_COLLECTION_FIELDS.DEPARTMENT,
101
+ collection: COLLECTIONS.AMOUNT_OF_JOBS_PER_DEPARTMENT,
102
+ }),
103
+ shouldSkipCheck: () => false,
104
+ estimatedDurationSec: 3,
105
+ },
106
+ [TASKS_NAMES.REFERENCE_JOBS_TO_LOCATIONS]: {
107
+ name: TASKS_NAMES.REFERENCE_JOBS_TO_LOCATIONS,
108
+ getIdentifier: () => 'SHOULD_NEVER_SKIP',
109
+ process: () =>
110
+ referenceJobsToField({
111
+ referenceField: JOBS_COLLECTION_FIELDS.CITY,
112
+ sourceCollection: COLLECTIONS.CITIES,
113
+ jobField: JOBS_COLLECTION_FIELDS.CITY_TEXT,
114
+ }),
115
+ shouldSkipCheck: () => false,
116
+ estimatedDurationSec: 3,
117
+ },
118
+ [TASKS_NAMES.REFERENCE_JOBS_TO_DEPARTMENT]: {
119
+ name: TASKS_NAMES.REFERENCE_JOBS_TO_DEPARTMENT,
120
+ getIdentifier: () => 'SHOULD_NEVER_SKIP',
121
+ process: () =>
122
+ referenceJobsToField({
123
+ referenceField: JOBS_COLLECTION_FIELDS.DEPARTMENT_REF,
124
+ sourceCollection: COLLECTIONS.AMOUNT_OF_JOBS_PER_DEPARTMENT,
125
+ jobField: JOBS_COLLECTION_FIELDS.DEPARTMENT,
126
+ }),
127
+ shouldSkipCheck: () => false,
128
+ estimatedDurationSec: 3,
129
+ },
130
+ [TASKS_NAMES.CREATE_API_KEY_COLLECTION_AND_FILL_IT]: {
131
+ name: TASKS_NAMES.CREATE_API_KEY_COLLECTION_AND_FILL_IT,
132
+ getIdentifier:()=> "SHOULD_NEVER_SKIP",
133
+ process:()=>createApiKeyCollectionAndFillIt(),
134
+ shouldSkipCheck:()=>false,
135
+ estimatedDurationSec:3
136
+ }
137
+ };
107
138
 
108
139
 
109
140
 
110
141
  const TASK_TYPE = {
111
- SCHEDULED: 'scheduled',
112
- EVENT: 'event',
113
- };
142
+ SCHEDULED: 'scheduled',
143
+ EVENT: 'event',
144
+ };
114
145
 
115
146
  module.exports = {
116
147
  TASKS_NAMES,
117
148
  TASK_TYPE,
118
149
  TASKS,
150
+ QUERY_MAX_LIMIT
119
151
  };