sr-npm 1.0.11 → 1.0.13

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
+ }
@@ -0,0 +1,76 @@
1
+ const COLLECTIONS = {
2
+ AMOUNT_OF_JOBS_PER_DEPARTMENT: 'AmountOfJobsPerDepartment',
3
+ CITIES: 'cities',
4
+ JOBS: 'Jobs',
5
+ COMPANY_ID: 'CompanyId',
6
+ }
7
+ const JOBS_COLLECTION_FIELDS = {
8
+ LOCATION: 'location',
9
+ TITLE: 'title',
10
+ LOCATION_ADDRESS: 'locationAddress',
11
+ COUNTRY: 'country',
12
+ DEPARTMENT: 'department',
13
+ LANGUAGE: 'language',
14
+ REMOTE: 'remote',
15
+ JOB_DESCRIPTION: 'jobDescription',
16
+ DEPARTMENT_REF: 'departmentref',
17
+ CITY: 'city',
18
+ CITY_TEXT: 'cityText',
19
+ IMAGE: 'image',
20
+ APPLY_LINK: 'applyLink',
21
+ REFER_FRIEND_LINK: 'referFriendLink',
22
+ }
23
+ const AMOUNT_OF_JOBS_PER_DEPARTMENT_COLLECTION_FIELDS = {
24
+ TITLE: 'title',
25
+ COUNT: 'count',
26
+ IMAGE: 'image',
27
+ }
28
+ const CITIES_COLLECTION_FIELDS = {
29
+ TITLE: 'title',
30
+ CITY: 'city',
31
+ LOCATION_ADDRESS: 'locationAddress',
32
+ COUNT: 'count',
33
+ COUNTRY: 'country',
34
+ }
35
+ const COLLECTIONS_FIELDS = {
36
+ AMOUNT_OF_JOBS_PER_DEPARTMENT: [
37
+ {key:'title', type: 'TEXT'},
38
+ { key: 'count', type: 'NUMBER' },
39
+ { key: 'image', type: 'IMAGE' },
40
+ ],
41
+ CITIES: [
42
+ { key: 'title', type: 'TEXT' },
43
+ { key: 'city', type: 'TEXT' },
44
+ {key:'locationAddress', type: 'ADDRESS'},
45
+ {key:'count', type: 'NUMBER'},
46
+ {key:'country', type: 'TEXT'},
47
+ ],
48
+ JOBS: [
49
+ {key:'location', type: 'OBJECT'},
50
+ {key:'title', type: 'TEXT'},
51
+ {key:'locationAddress', type: 'ADDRESS'},
52
+ {key:'country', type: 'TEXT'},
53
+ {key:'department', type: 'TEXT'},
54
+ {key:'language', type: 'TEXT'},
55
+ {key:'remote', type: 'BOOLEAN'},
56
+ {key:'jobDescription', type: 'OBJECT'},
57
+ {key:'cityText', type: 'TEXT'},
58
+ {key:'applyLink', type: 'URL'},
59
+ {key:'referFriendLink', type: 'URL'},
60
+ {key:'departmentref', type: 'REFERENCE', typeMetadata: { reference: { referencedCollectionId: COLLECTIONS.AMOUNT_OF_JOBS_PER_DEPARTMENT } } },
61
+ {key:'city', type: 'REFERENCE', typeMetadata: { reference: { referencedCollectionId: COLLECTIONS.CITIES } } },
62
+ { key: 'image', type: 'IMAGE' },
63
+ ],
64
+ COMPANY_ID: [
65
+ {key:'companyId', type: 'TEXT'},
66
+ ],
67
+ };
68
+
69
+
70
+ module.exports = {
71
+ COLLECTIONS,
72
+ COLLECTIONS_FIELDS,
73
+ JOBS_COLLECTION_FIELDS,
74
+ AMOUNT_OF_JOBS_PER_DEPARTMENT_COLLECTION_FIELDS,
75
+ CITIES_COLLECTION_FIELDS,
76
+ };
package/backend/consts.js CHANGED
@@ -1,142 +1,87 @@
1
- import {saveDataJobsToCMS,saveJobsDescriptionsToCMS,aggregateJobsByFieldToCMS,referenceJobsToField} from './data';
2
- const { createCollectionIfMissing } = require('@hisense-staging/velo-npm/backend');
3
- export const TASKS_NAMES = {
1
+ const {saveJobsDataToCMS,saveJobsDescriptionsAndLocationApplyUrlToCMS,createCollections,aggregateJobs,referenceJobs,syncJobsFast} = require('./data')
2
+
3
+
4
+ const QUERY_MAX_LIMIT = 1000;
5
+
6
+ const TASKS_NAMES = {
4
7
  SYNC_JOBS: 'syncJobsFromSRAPIToCMS',
5
8
  INSERT_JOBS_TO_CMS: 'insertJobsToCMS',
6
- INSERT_JOBS_DESCRIPTIONS_TO_CMS: 'insertJobsDescriptionsToCMS',
7
- FILL_JOBS_PER_CITY_COLLECTION: 'fillJobsPerCityCollection',
8
- FILL_JOBS_PER_DEPARTMENT_COLLECTION: 'fillJobsPerDepartmentCollection',
9
- REFERENCE_JOBS_TO_LOCATIONS: 'referenceJobsToLocations',
10
- REFERENCE_JOBS_TO_DEPARTMENT: 'referenceJobsToDepartment',
11
- CREATE_JOBS_COLLECTION: 'createJobsCollection',
12
- CREATE_CITIES_COLLECTION: 'createCitiesCollection',
13
- CREATE_AMOUNT_OF_JOBS_PER_DEPARTMENT_COLLECTION: 'createAmountOfJobsPerDepartmentCollection',
9
+ INSERT_JOBS_DESCRIPTIONS_LOCATION_APPLY_URL_TO_CMS: 'insertJobsDescriptionsLocationApplyUrlToCMS',
10
+ AGGREGATE_JOBS_BY_FIELD_TO_CMS: 'aggregateJobsByFieldToCMS',
11
+ REFERENCE_JOBS: 'referenceJobs',
12
+ CREATE_COLLECTIONS: 'createCollections',
13
+ CREATE_COMPANY_ID_COLLECTION_AND_FILL_IT: 'createCompanyIdCollectionAndFillIt',
14
+ SYNC_JOBS_FAST: 'syncJobsFast',
14
15
  }
15
16
 
16
17
 
17
- export const TASKS = {
18
+ const TASKS = {
18
19
  [TASKS_NAMES.SYNC_JOBS]: {
19
20
  name: TASKS_NAMES.SYNC_JOBS,
20
21
  childTasks: [
21
- { name: TASKS_NAMES.CREATE_JOBS_COLLECTION },
22
- { name: TASKS_NAMES.CREATE_CITIES_COLLECTION },
23
- {name: TASKS_NAMES.CREATE_AMOUNT_OF_JOBS_PER_DEPARTMENT_COLLECTION},
22
+ { name: TASKS_NAMES.CREATE_COLLECTIONS},
24
23
  { name: TASKS_NAMES.INSERT_JOBS_TO_CMS },
25
- { name: TASKS_NAMES.INSERT_JOBS_DESCRIPTIONS_TO_CMS },
26
- { name: TASKS_NAMES.FILL_JOBS_PER_CITY_COLLECTION },
27
- { name: TASKS_NAMES.FILL_JOBS_PER_DEPARTMENT_COLLECTION },
28
- { name: TASKS_NAMES.REFERENCE_JOBS_TO_LOCATIONS },
29
- { name: TASKS_NAMES.REFERENCE_JOBS_TO_DEPARTMENT },
24
+ { name: TASKS_NAMES.INSERT_JOBS_DESCRIPTIONS_LOCATION_APPLY_URL_TO_CMS },
25
+ { name: TASKS_NAMES.AGGREGATE_JOBS_BY_FIELD_TO_CMS },
26
+ {name: TASKS_NAMES.REFERENCE_JOBS},
30
27
  ],
31
28
  scheduleChildrenSequentially: true,
32
- estimatedDurationSec: 30,
29
+ estimatedDurationSec: 60,
33
30
  },
34
- [TASKS_NAMES.CREATE_JOBS_COLLECTION]: {
35
- name: TASKS_NAMES.CREATE_JOBS_COLLECTION,
31
+ [TASKS_NAMES.CREATE_COLLECTIONS]: {
32
+ name: TASKS_NAMES.CREATE_COLLECTIONS,
36
33
  getIdentifier:()=> "SHOULD_NEVER_SKIP",
37
- process:()=>createCollectionIfMissing(COLLECTIONS.JOBS, COLLECTIONS_FIELDS.JOBS),
34
+ process:createCollections,
38
35
  shouldSkipCheck:()=>false,
39
- estimatedDurationSec:3
36
+ estimatedDurationSec:7
40
37
  },
41
- [TASKS_NAMES.CREATE_CITIES_COLLECTION]: {
42
- name: TASKS_NAMES.CREATE_CITIES_COLLECTION,
38
+ [TASKS_NAMES.INSERT_JOBS_TO_CMS]: {
39
+ name: TASKS_NAMES.INSERT_JOBS_TO_CMS,
43
40
  getIdentifier:()=> "SHOULD_NEVER_SKIP",
44
- process:()=>createCollectionIfMissing(COLLECTIONS.CITIES, COLLECTIONS_FIELDS.CITIES),
41
+ process:saveJobsDataToCMS,
45
42
  shouldSkipCheck:()=>false,
46
- estimatedDurationSec:3
43
+ estimatedDurationSec:20
47
44
  },
48
- [TASKS_NAMES.CREATE_AMOUNT_OF_JOBS_PER_DEPARTMENT_COLLECTION]: {
49
- name: TASKS_NAMES.CREATE_AMOUNT_OF_JOBS_PER_DEPARTMENT_COLLECTION,
45
+ [TASKS_NAMES.INSERT_JOBS_DESCRIPTIONS_LOCATION_APPLY_URL_TO_CMS]: {
46
+ name: TASKS_NAMES.INSERT_JOBS_DESCRIPTIONS_LOCATION_APPLY_URL_TO_CMS,
50
47
  getIdentifier:()=> "SHOULD_NEVER_SKIP",
51
- process:()=>createCollectionIfMissing(COLLECTIONS.AMOUNT_OF_JOBS_PER_DEPARTMENT, COLLECTIONS_FIELDS.AMOUNT_OF_JOBS_PER_DEPARTMENT),
48
+ process:saveJobsDescriptionsAndLocationApplyUrlToCMS,
52
49
  shouldSkipCheck:()=>false,
53
- estimatedDurationSec:3
50
+ estimatedDurationSec:20
54
51
  },
55
- [TASKS_NAMES.INSERT_JOBS_TO_CMS]: {
56
- name: TASKS_NAMES.INSERT_JOBS_TO_CMS,
52
+ [TASKS_NAMES.AGGREGATE_JOBS_BY_FIELD_TO_CMS]: {
53
+ name: TASKS_NAMES.AGGREGATE_JOBS_BY_FIELD_TO_CMS,
57
54
  getIdentifier:()=> "SHOULD_NEVER_SKIP",
58
- process:saveDataJobsToCMS,
55
+ process:aggregateJobs,
59
56
  shouldSkipCheck:()=>false,
60
- estimatedDurationSec:20
57
+ estimatedDurationSec:6
61
58
  },
62
- [TASKS_NAMES.INSERT_JOBS_DESCRIPTIONS_TO_CMS]: {
63
- name: TASKS_NAMES.INSERT_JOBS_DESCRIPTIONS_TO_CMS,
59
+ [TASKS_NAMES.REFERENCE_JOBS]: {
60
+ name: TASKS_NAMES.REFERENCE_JOBS,
64
61
  getIdentifier:()=> "SHOULD_NEVER_SKIP",
65
- process:saveJobsDescriptionsToCMS,
62
+ process:referenceJobs,
66
63
  shouldSkipCheck:()=>false,
67
- estimatedDurationSec:20
64
+ estimatedDurationSec:6
68
65
  },
69
- [TASKS_NAMES.FILL_JOBS_PER_CITY_COLLECTION]: {
70
- name: TASKS_NAMES.FILL_JOBS_PER_CITY_COLLECTION,
71
- getIdentifier:()=> "SHOULD_NEVER_SKIP",
72
- process:()=>aggregateJobsByFieldToCMS({ field: 'cityText', collection: 'cities' }),
73
- shouldSkipCheck:()=>false,
74
- estimatedDurationSec:3
75
- },
76
- [TASKS_NAMES.FILL_JOBS_PER_DEPARTMENT_COLLECTION]: {
77
- name: TASKS_NAMES.FILL_JOBS_PER_DEPARTMENT_COLLECTION,
78
- getIdentifier:()=> "SHOULD_NEVER_SKIP",
79
- process:()=>aggregateJobsByFieldToCMS({ field: 'department', collection: 'AmountOfJobsPerDepartment' }),
80
- shouldSkipCheck:()=>false,
81
- estimatedDurationSec:3
82
- },
83
- [TASKS_NAMES.REFERENCE_JOBS_TO_LOCATIONS]: {
84
- name: TASKS_NAMES.REFERENCE_JOBS_TO_LOCATIONS,
85
- getIdentifier:()=> "SHOULD_NEVER_SKIP",
86
- process:()=>referenceJobsToField({ referenceField: 'city', sourceCollection: 'cities', jobField: 'cityText' }),
87
- shouldSkipCheck:()=>false,
88
- estimatedDurationSec:3
89
- },
90
- [TASKS_NAMES.REFERENCE_JOBS_TO_DEPARTMENT]: {
91
- name: TASKS_NAMES.REFERENCE_JOBS_TO_DEPARTMENT,
92
- getIdentifier:()=> "SHOULD_NEVER_SKIP",
93
- process:()=>referenceJobsToField({ referenceField: 'departmentref', sourceCollection: 'AmountOfJobsPerDepartment', jobField: 'department' }),
94
- shouldSkipCheck:()=>false,
95
- estimatedDurationSec:3
96
- }
66
+ [TASKS_NAMES.SYNC_JOBS_FAST]: {
67
+ name: TASKS_NAMES.SYNC_JOBS_FAST,
68
+ getIdentifier:()=> "SHOULD_NEVER_SKIP",
69
+ process:syncJobsFast,
70
+ shouldSkipCheck:()=>false,
71
+ estimatedDurationSec:60
72
+ }
97
73
  }
98
74
 
99
- export const COLLECTIONS = {
100
- AMOUNT_OF_JOBS_PER_DEPARTMENT: 'AmountOfJobsPerDepartment',
101
- CITIES: 'cities',
102
- JOBS: 'Jobs',
103
- }
104
75
 
105
- const COLLECTIONS_FIELDS = {
106
- AMOUNT_OF_JOBS_PER_DEPARTMENT: [
107
- {key:'title', type: 'TEXT'},
108
- { key: 'count', type: 'NUMBER' },
109
- ],
110
- CITIES: [
111
- {key:'title', type: 'TEXT'},
112
- { key: 'regionCode', type: 'TEXT' },
113
- { key: 'city', type: 'TEXT' },
114
- {key:'location', type: 'OBJECT'},
115
- {key:'count', type: 'NUMBER'},
116
- {key:'country', type: 'TEXT'},
117
- {key:'remote', type: 'TEXT'},
118
- {key:'countryCode', type: 'TEXT'},
119
- {key:'manual', type: 'TEXT'},
120
- {key:'region', type: 'TEXT'},
121
- {key:'latitude', type: 'NUMBER'},
122
- {key:'longitude', type: 'NUMBER'},
123
- ],
124
- JOBS: [
125
- {key:'location', type: 'OBJECT'},
126
- {key:'postingStatus', type: 'TEXT'},
127
- {key:'country', type: 'TEXT'},
128
- {key:'department', type: 'TEXT'},
129
- {key:'language', type: 'TEXT'},
130
- {key:'jobDescription', type: 'OBJECT'},
131
- {key:'cityText', type: 'TEXT'},
132
- {key:'departmentref', type: 'REFERENCE', typeMetadata: { reference: { referencedCollectionId: 'AmountOfJobsPerDepartment' } } },
133
- {key:'city', type: 'REFERENCE', typeMetadata: { reference: { referencedCollectionId: 'cities' } } },
134
- ],
135
-
136
- };
137
76
 
77
+ const TASK_TYPE = {
78
+ SCHEDULED: 'scheduled',
79
+ EVENT: 'event',
80
+ };
138
81
 
139
- export const TASK_TYPE = {
140
- SCHEDULED: 'scheduled',
141
- EVENT: 'event',
142
- };
82
+ module.exports = {
83
+ TASKS_NAMES,
84
+ TASK_TYPE,
85
+ TASKS,
86
+ QUERY_MAX_LIMIT
87
+ };