tango-api-schema 1.0.0

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/index.js ADDED
@@ -0,0 +1,4 @@
1
+ import brandModel from './schema/brand.model.js'
2
+ import storeModel from './schema/stores.model.js'
3
+ import cameraModel from './schema/camera.model.js'
4
+ import clientModel from './schema/client.model.js'
package/package.json ADDED
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "tango-api-schema",
3
+ "version": "1.0.0",
4
+ "description": "tangoEye model schema",
5
+ "main": "index.js",
6
+ "scripts": {
7
+ "test": "echo \"Error: no test specified\" && exit 1"
8
+ },
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://praveen22raj@bitbucket.org/tangoeye-retail/tango-api-schema.git"
12
+ },
13
+ "author": "praveenraj",
14
+ "license": "ISC",
15
+ "bugs": {
16
+ "url": "https://bitbucket.org/tangoeye-retail/tango-api-schema/issues"
17
+ },
18
+ "homepage": "https://bitbucket.org/tangoeye-retail/tango-api-schema#readme",
19
+ "dependencies": {
20
+ "express": "^4.18.2",
21
+ "mongoose": "^7.5.3",
22
+ "mongoose-unique-validator": "^4.0.0",
23
+ "nodemon": "^3.0.1"
24
+ }
25
+ }
@@ -0,0 +1,440 @@
1
+ /**
2
+ * @name api_brand_models_clientlist
3
+ * @description Api brands
4
+ */
5
+
6
+ // NPM Modules
7
+ import mongoose from 'mongoose';
8
+ import uniqueValidator from 'mongoose-unique-validator';
9
+
10
+ // schema
11
+ const brandSchema =
12
+ new mongoose.Schema(
13
+ {
14
+ brandName: {
15
+ type: String,
16
+ trim: true,
17
+ required: true,
18
+ unique: true,
19
+ },
20
+ brandIndex: {
21
+ type: Number,
22
+ },
23
+ client_id: {
24
+ type: String,
25
+ trim: true,
26
+ },
27
+ firstName: {
28
+ type: String,
29
+ trim: true,
30
+ },
31
+ lastName: {
32
+ type: String,
33
+ trim: true,
34
+ },
35
+ phone: {
36
+ type: String,
37
+ trim: true,
38
+ required: true,
39
+ unique: true,
40
+ },
41
+ email: {
42
+ type: String,
43
+ trim: true,
44
+ required: true,
45
+ unique: true,
46
+ },
47
+ active: {
48
+ type: Boolean,
49
+ default: true,
50
+ },
51
+ createdAt: {
52
+ type: Date,
53
+ default: Date.now,
54
+ },
55
+ updatedAt: {
56
+ type: Date,
57
+ default: Date.now,
58
+ },
59
+ userId: {
60
+ type: mongoose.Schema.Types.ObjectId,
61
+ ref: 'User',
62
+ },
63
+ dialCode: {
64
+ type: String,
65
+ trim: true,
66
+ },
67
+ name: {
68
+ type: String,
69
+ trim: true,
70
+ },
71
+ registeredCompanyName: {
72
+ type: String,
73
+ trim: true,
74
+ },
75
+ brandLogo: {
76
+ type: String,
77
+ trim: true,
78
+ },
79
+ brandConfigs: {
80
+ livetickets: { // live needs to create for a day
81
+ type: Boolean,
82
+ default: false,
83
+ },
84
+ infratickets: { // infratickets needs to create for a day
85
+ type: Boolean,
86
+ default: false,
87
+ },
88
+ liveconfig: { // live one - Every 1 hour, three - every three hour
89
+ type: String,
90
+ trim: true,
91
+ },
92
+ ReInstallation: { // number of days installtion ticket reasign to other user if user hold it for ReInstallation Date
93
+ type: Number,
94
+ default: 0,
95
+ },
96
+ infraLimit: { // Downtime limit for crating ticket
97
+ type: Number,
98
+ },
99
+ autoGenerateDays: { // if its 2 day downtime is past two days reach the infralimit then will need to create ticket
100
+ type: Number,
101
+ },
102
+ downtimeConsiderCameraCount: { // consider downtime calculation one or All camara
103
+ type: String,
104
+ },
105
+ storeOpenTime: {
106
+ type: String,
107
+ default: '10:00:00',
108
+ },
109
+ storeCloseTime: {
110
+ type: String,
111
+ default: '22:00:00',
112
+ },
113
+ infraAlert: {
114
+ condition: {
115
+ type: String,
116
+ default: '<',
117
+ },
118
+ value: {
119
+ type: String,
120
+ default: '1',
121
+ },
122
+ },
123
+ bouncedConfigTime: {
124
+ type: String,
125
+ default: '<=1',
126
+ },
127
+ missedOpportunityStartTime: {
128
+ type: String,
129
+ default: '>1',
130
+ },
131
+ missedOpportunityEndTime: {
132
+ type: String,
133
+ default: '<=5',
134
+ },
135
+ conversionConfigTime: {
136
+ type: String,
137
+ default: '>5',
138
+ },
139
+ missedOpportunityCalculate: {
140
+ type: String,
141
+ enum: [ 'engagers-conversion', 'group-conversion' ],
142
+ default: 'engagers-conversion',
143
+ },
144
+ conversionCalculate: {
145
+ type: String,
146
+ enum: [ 'footfall-count', 'engagers-count' ],
147
+ default: 'engagers-count',
148
+ },
149
+ billableCalculate: {
150
+ type: String,
151
+ enum: [ 'footfall-count', 'engagers-count' ],
152
+ default: 'engagers-count',
153
+ },
154
+ notifications: {
155
+ email: {
156
+ type: Boolean,
157
+ },
158
+ application: {
159
+ type: Boolean,
160
+ },
161
+ },
162
+
163
+ allowChanges: {
164
+ type: Boolean,
165
+ },
166
+ report_time: {
167
+ type: String,
168
+ },
169
+ normalized_data: {
170
+ type: Boolean,
171
+ default: true,
172
+ },
173
+ normalized_downtime: {
174
+ type: Number,
175
+ default: 300,
176
+ },
177
+ },
178
+ industry: {
179
+ type: String,
180
+ trim: true,
181
+ },
182
+ subIndustry: {
183
+ type: String,
184
+ trim: true,
185
+ },
186
+ storeType: {
187
+ type: String,
188
+ trim: true,
189
+ },
190
+ headQuarters: {
191
+ type: String,
192
+ trim: true,
193
+ },
194
+ numberofOutlets: {
195
+ type: String,
196
+ trim: true,
197
+ },
198
+ cameraCount: {
199
+ type: String,
200
+ trim: true,
201
+ },
202
+ productsavgPrice: {
203
+ type: String,
204
+ trim: true,
205
+ },
206
+ CINNumber: {
207
+ type: String,
208
+ trim: true,
209
+ },
210
+ registeredAddress: {
211
+ type: String,
212
+ trim: true,
213
+ },
214
+ first_user: {
215
+ type: Number,
216
+ default: 0,
217
+ },
218
+ payment_status: {
219
+ type: Boolean,
220
+ default: false,
221
+ },
222
+ uploadLimit: {
223
+ user: {
224
+ type: Number,
225
+ default: 10,
226
+ },
227
+ store: {
228
+ type: Number,
229
+ default: 10,
230
+ },
231
+ },
232
+ DownloadLimit: {
233
+ type: Number,
234
+ default: 0,
235
+ },
236
+ website: {
237
+ type: String,
238
+ },
239
+ apiKey: {
240
+ type: String,
241
+ default: null,
242
+ },
243
+ allowedIps: {
244
+ type: Array,
245
+ default: [ '*' ],
246
+ },
247
+ clientStatus: {
248
+ type: String,
249
+ enum: [ 'pending', 'live', 'hold', 'suspended', 'deactivated', 'rejected' ],
250
+ default: 'pending',
251
+ trim: true,
252
+ },
253
+ client_type: {
254
+ type: String,
255
+ enum: [ 'free', 'trial', 'paid' ],
256
+ trim: true,
257
+ default: 'trial',
258
+ },
259
+ expired_date: {
260
+ type: Date,
261
+ },
262
+ framesRate: {
263
+ type: Number,
264
+ },
265
+ configBannerFlag: {
266
+ type: Boolean,
267
+ default: true,
268
+ },
269
+ controlroom: {
270
+ type: Boolean,
271
+ default: false,
272
+ },
273
+ trade: {
274
+ type: String,
275
+ },
276
+ country: {
277
+ type: String,
278
+ },
279
+ activeMenu: {
280
+ type: Array,
281
+ default: [ 'birdsEye', 'tangoTraffic', 'tangoZone', 'controlRoom', 'tangoRevOp', 'tangoStoreOps', 'infraHealth', 'reports', 'Support', 'footFallDirectory', 'permissions' ],
282
+ },
283
+ isdeletedbrand: {
284
+ type: Boolean,
285
+ default: false,
286
+ },
287
+ planType: {
288
+ type: String,
289
+ enum: [ 'monthly', 'half_yearly', 'annual' ],
290
+ default: 'monthly',
291
+ },
292
+ storeCount: {
293
+ type: String,
294
+ },
295
+ squareFeet: {
296
+ type: String,
297
+ },
298
+ subscription: {
299
+ type: String,
300
+ enum: [ '', 'free', 'free_trial', 'premium', 'enterprise' ],
301
+ default: '',
302
+ },
303
+ subscription_start_date: {
304
+ type: Date,
305
+ },
306
+ subscription_status: {
307
+ type: Boolean,
308
+ default: false,
309
+ },
310
+ store_added_status: { // if it is true after add a store against brand
311
+ type: Boolean,
312
+ default: false,
313
+ },
314
+ callBackTime: {
315
+ type: String,
316
+ },
317
+ message: {
318
+ type: String,
319
+ trim: true,
320
+ },
321
+ subscribed_features: {
322
+ tango_traffic: {
323
+ type: Boolean,
324
+ default: true,
325
+ },
326
+ tango_zone: {
327
+ type: Boolean,
328
+ default: false,
329
+ },
330
+ tango_revop: {
331
+ type: Boolean,
332
+ default: false,
333
+ },
334
+ tango_storeops: {
335
+ type: Boolean,
336
+ default: false,
337
+ },
338
+ controlroom: {
339
+ type: Boolean,
340
+ default: false,
341
+ },
342
+ live_data: {
343
+ type: Boolean,
344
+ default: false,
345
+ },
346
+ normalization_features: {
347
+ type: Boolean,
348
+ default: false,
349
+ },
350
+ actual_features: {
351
+ type: Boolean,
352
+ default: false,
353
+ },
354
+ },
355
+ terms_conditions: {
356
+ type: Boolean,
357
+ default: false,
358
+ },
359
+ otp_verified: {
360
+ type: Boolean,
361
+ default: false,
362
+ },
363
+ free_paused_date: {
364
+ type: Date,
365
+ },
366
+ price: {
367
+ type: Number,
368
+ },
369
+ currency_type: {
370
+ type: String,
371
+ },
372
+ upgrade_request: {
373
+ type: Object,
374
+ },
375
+ upgrade_request_status: {
376
+ type: Boolean,
377
+ default: false,
378
+ },
379
+ trial_status: {
380
+ type: Boolean,
381
+ default: false,
382
+ },
383
+ trial_expired: {
384
+ type: Boolean,
385
+ default: false,
386
+ },
387
+ trial_extend: {
388
+ type: Boolean,
389
+ default: false,
390
+ },
391
+ trial_paused: {
392
+ type: Boolean,
393
+ default: false,
394
+ },
395
+ lead_id: {
396
+ type: String,
397
+ trim: true,
398
+ },
399
+ reportConfigs: {
400
+ type: Object,
401
+ },
402
+ brandConfigs_updated_date: {
403
+ type: Date,
404
+ },
405
+
406
+ auditConfigs: {
407
+ count: {
408
+ type: Number,
409
+ default: 200,
410
+ },
411
+ audit: {
412
+ type: Boolean,
413
+ default: true,
414
+ },
415
+ default: {
416
+ type: Boolean,
417
+ default: true,
418
+ },
419
+ queueName: {
420
+ type: String,
421
+ default: '',
422
+ },
423
+ ratio: {
424
+ type: mongoose.Types.Decimal128,
425
+ default: 0.75,
426
+ },
427
+
428
+ },
429
+ },
430
+ {
431
+ strict: true,
432
+ versionKey: false,
433
+ },
434
+ );
435
+
436
+ brandSchema.plugin( uniqueValidator );
437
+
438
+ export default mongoose.model( 'Brand', brandSchema );
439
+
440
+
@@ -0,0 +1,113 @@
1
+ import { Schema, model } from 'mongoose';
2
+
3
+ const collection = new Schema(
4
+ {
5
+ store: {
6
+ type: Schema.Types.ObjectId,
7
+ ref: 'Store',
8
+ required: true,
9
+ },
10
+ storeId: {
11
+ type: String,
12
+ trim: true,
13
+ },
14
+ masterServer: {
15
+ type: String,
16
+ trim: true,
17
+ },
18
+ client_id: {
19
+ type: String,
20
+ trim: true,
21
+ },
22
+ brandId: {
23
+ type: Schema.Types.ObjectId,
24
+ ref: 'Brand',
25
+ required: true,
26
+ },
27
+ ip: {
28
+ type: String,
29
+ trim: true,
30
+ },
31
+ manufacture: {
32
+ type: String,
33
+ trim: true,
34
+ },
35
+ no: {
36
+ type: String,
37
+ trim: true,
38
+ },
39
+ username: {
40
+ type: String,
41
+ trim: true,
42
+ },
43
+ password: {
44
+ type: String,
45
+ trim: true,
46
+ },
47
+ subType: {
48
+ type: String,
49
+ trim: true,
50
+ },
51
+ RTSP: {
52
+ type: String,
53
+ trim: true,
54
+ },
55
+ retentionPeriod: {
56
+ type: Number,
57
+ },
58
+ streamName: {
59
+ type: String,
60
+ trim: true,
61
+ unique: true,
62
+ },
63
+ thumbnailImage: {
64
+ type: String,
65
+ trim: true,
66
+ },
67
+ status: {
68
+ type: String,
69
+ trim: true,
70
+ },
71
+ isActivated: {
72
+ type: Boolean,
73
+ },
74
+ isUp: {
75
+ type: Boolean,
76
+ },
77
+ createdAt: {
78
+ type: Date,
79
+ default: Date.now,
80
+ },
81
+ updatedAt: {
82
+ type: Date,
83
+ default: Date.now,
84
+ },
85
+ captureAt: {
86
+ type: Date,
87
+ default: Date.now,
88
+ },
89
+ macId: {
90
+ type: String,
91
+ },
92
+ timeElapsed: {
93
+ type: Number,
94
+ default: 13,
95
+ },
96
+ dataProcess: {
97
+ type: Boolean,
98
+ default: false,
99
+ },
100
+ filters: {
101
+ type: Object,
102
+ default: {
103
+ yolo: true,
104
+ yoloProcess: 10,
105
+ },
106
+ },
107
+ },
108
+ {
109
+ strict: true,
110
+ versionKey: false,
111
+ } );
112
+
113
+ export default model( 'Camera', collection );
@@ -0,0 +1,183 @@
1
+ import mongoose,{Schema,model} from 'mongoose';
2
+ import uniqueValidator from 'mongoose-unique-validator';
3
+
4
+ const clientSchema=new Schema( {
5
+ brandName: {
6
+ type: String,
7
+ trim: true,
8
+ required: true,
9
+ unique: true,
10
+ },
11
+ brandIndex: {
12
+ type: Number,
13
+ },
14
+ clientId: { // client_Id changed to clientId
15
+ type: String,
16
+ trim: true,
17
+ },
18
+ userDetail: {
19
+ userId: {
20
+ type: Schema.Types.ObjectId,
21
+ ref: 'User',
22
+ },
23
+ firstName: {
24
+ type: String,
25
+ trim: true,
26
+ },
27
+ lastName: {
28
+ type: String,
29
+ trim: true,
30
+ },
31
+ phone: {
32
+ type: String,
33
+ trim: true,
34
+ required: true,
35
+ unique: true,
36
+ },
37
+ email: {
38
+ type: String,
39
+ trim: true,
40
+ required: true,
41
+ unique: true,
42
+ },
43
+ dialCode: {
44
+ type: String,
45
+ trim: true,
46
+ },
47
+ },
48
+ active: {
49
+ type: Boolean,
50
+ default: true,
51
+ },
52
+ profileDetail: {
53
+ registeredCompanyName: {
54
+ type: String,
55
+ trim: true,
56
+ },
57
+ industry: {
58
+ type: String,
59
+ trim: true,
60
+ },
61
+ subIndustry: {
62
+ type: String,
63
+ trim: true,
64
+ },
65
+ headQuarters: {
66
+ type: String,
67
+ trim: true,
68
+ },
69
+ CINNumber: {
70
+ type: String,
71
+ trim: true,
72
+ },
73
+ registeredAddress: {
74
+ type: String,
75
+ trim: true,
76
+ },
77
+ website: {
78
+ type: String,
79
+ },
80
+ open: {
81
+ type: String,
82
+ default: '10:00:00',
83
+ },
84
+ close: {
85
+ type: String,
86
+ default: '22:00:00',
87
+ },
88
+ },
89
+ clientApi: {
90
+ apiKey: {
91
+ type: String,
92
+ default: null,
93
+ },
94
+ status: {
95
+ type: Boolean,
96
+ default: false,
97
+ },
98
+ allowedIps: {
99
+ type: Array,
100
+ default: [ '*' ],
101
+ },
102
+ },
103
+ clientStatus: {
104
+ type: String,
105
+ enum: [ 'pending', 'live', 'hold', 'suspended', 'deactivated', 'rejected' ],
106
+ default: 'pending',
107
+ trim: true,
108
+ },
109
+ accountType: { // client_type changed to accountType
110
+ type: String,
111
+ enum: [ 'free', 'trial', 'paid' ],
112
+ trim: true,
113
+ default: 'trial',
114
+ },
115
+ reportConfigs: {
116
+ type: Object,
117
+ },
118
+ auditConfigs: {
119
+ count: {
120
+ type: Number,
121
+ default: 200,
122
+ },
123
+ audit: {
124
+ type: Boolean,
125
+ default: true,
126
+ },
127
+ default: {
128
+ type: Boolean,
129
+ default: true,
130
+ },
131
+ queueName: {
132
+ type: String,
133
+ default: '',
134
+ },
135
+ ratio: {
136
+ type: mongoose.Types.Decimal128,
137
+ default: 0.75,
138
+ },
139
+ },
140
+ ticketConfig: {
141
+ liveTickets: { // live needs to create for a day
142
+ type: Boolean,
143
+ default: false,
144
+ },
145
+ infraTickets: { // infratickets needs to create for a day
146
+ type: Boolean,
147
+ default: false,
148
+ },
149
+ // liveConfig: { // live one - Every 1 hour, three - every three hour
150
+ // type: Number, // liveConfig is changed to ticketPeriod by praveen
151
+ // default: 0,
152
+ // },
153
+ ticketReopen: {
154
+ type: Number,
155
+ default: 0,
156
+ },
157
+ infraLimit: { // Downtime limit for creating ticket
158
+ type: Number,
159
+ },
160
+ autoGenerate: { // if its 2 day downtime is past two days reach the infralimit then will need to create ticket
161
+ type: Number,
162
+ default: 0,
163
+ },
164
+ infraDowntime: {
165
+ type: Number,
166
+ default: 0,
167
+ },
168
+ storeAddedStatus: { // if it is true after add a store against brand
169
+ type: Boolean,
170
+ default: false,
171
+ },
172
+ ticketPeriod: {
173
+ type: Number,
174
+ default: 120, // in minutes
175
+ },
176
+ },
177
+ }, {
178
+ strict: true,
179
+ versionKey: false,
180
+ timestamps: true,
181
+ } );
182
+ clientSchema.plugin( uniqueValidator );
183
+ export default model( 'Client', clientSchema );
@@ -0,0 +1,290 @@
1
+ /**
2
+ * @name api_stores_models_store
3
+ * @description Store Schema
4
+ */
5
+
6
+ // NPM Modules
7
+ import { Schema, model } from 'mongoose';
8
+
9
+ // Schema
10
+ const collection = new Schema(
11
+ {
12
+ id: {
13
+ type: String,
14
+ trim: true,
15
+ required: true,
16
+ unique: true,
17
+ },
18
+ name: {
19
+ type: String,
20
+ trim: true,
21
+ required: true,
22
+ },
23
+ storeProfile: {
24
+ reference_code: {
25
+ type: String,
26
+ trim: true,
27
+ },
28
+ location: {
29
+ type: String,
30
+ trim: true,
31
+ required: true,
32
+ },
33
+ country: {
34
+ type: String,
35
+ trim: true,
36
+ required: true,
37
+ },
38
+ state: {
39
+ type: String,
40
+ trim: true,
41
+ },
42
+ city: {
43
+ type: String,
44
+ trim: true,
45
+ },
46
+ pincode: {
47
+ type: String,
48
+ trim: true,
49
+ },
50
+ timezone: {
51
+ type: String,
52
+ default: 'Asia/Kolkata',
53
+ },
54
+ country_code: {
55
+ type: String,
56
+ trim: true,
57
+ required: true,
58
+ default: 'IN',
59
+ },
60
+ latitude: {
61
+ type: Number,
62
+ trim: true,
63
+ required: false,
64
+ default: 0.0,
65
+ },
66
+ longitude: {
67
+ type: Number,
68
+ trim: true,
69
+ required: false,
70
+ default: 0.0,
71
+ },
72
+ },
73
+ spocDetails: [
74
+ {
75
+ name: {
76
+ type: String,
77
+ required: true,
78
+ },
79
+ email: {
80
+ type: String,
81
+ required: true,
82
+ },
83
+ contact: {
84
+ type: String,
85
+ required: true,
86
+ },
87
+ designation: {
88
+ type: String,
89
+ required: true,
90
+ },
91
+ },
92
+ ],
93
+ appId: {
94
+ type: String,
95
+ trim: true,
96
+ required: true,
97
+ unique: true,
98
+ },
99
+ storeType: {
100
+ type: String,
101
+ trim: true,
102
+ required: true,
103
+ },
104
+ businessType: {
105
+ type: String,
106
+ trim: true,
107
+ },
108
+ brandId: {
109
+ type: Schema.Types.ObjectId,
110
+ ref: 'Brand',
111
+ },
112
+ client_id: {
113
+ type: String,
114
+ },
115
+ active: {
116
+ type: Boolean,
117
+ default: true,
118
+ },
119
+ ticketConfigs: {
120
+ ticketpaused: {
121
+ type: Date,
122
+ default: Date.now,
123
+ },
124
+ lastticket_generated: {
125
+ type: Date,
126
+ },
127
+ },
128
+ storeConnectionId: {
129
+
130
+ anydeskId: {
131
+ type: String,
132
+ },
133
+ teamViewer: {
134
+ type: String,
135
+ },
136
+ },
137
+ edge: {
138
+ timeZone: {
139
+ type: String,
140
+ required: false,
141
+ default: 'Asia/Kolkata',
142
+ },
143
+ firstFileDate: {
144
+ type: Date,
145
+ },
146
+ firstFile: {
147
+ type: Boolean,
148
+ default: false,
149
+ },
150
+ status: {
151
+ type: Boolean,
152
+ default: true,
153
+ },
154
+ forceInstall: {
155
+ type: Boolean,
156
+ default: false,
157
+ },
158
+ timeDownload: {
159
+ type: Date,
160
+ },
161
+ hibernet: {
162
+ type: Object,
163
+ // default: {
164
+ // enabled: true,
165
+ // startTime: '00:00:00',
166
+ // endTime: '08:00:00',
167
+ // },
168
+ },
169
+ appVersion: {
170
+ type: String,
171
+ trim: true,
172
+ },
173
+ architecture: {
174
+ type: String,
175
+ trim: true,
176
+ enum: [ 'x32', 'x64' ],
177
+ },
178
+ paired: {
179
+ type: Boolean,
180
+ default: false,
181
+ },
182
+ configured: {
183
+ type: Boolean,
184
+ default: false,
185
+ },
186
+ updateAppVersion: {
187
+ type: String,
188
+ trim: true,
189
+ },
190
+ triggerProcessId: {
191
+ type: String,
192
+ default: '',
193
+ },
194
+ isRestartRequired: {
195
+ type: Boolean,
196
+ default: false,
197
+ },
198
+ serverType: {
199
+ type: Boolean,
200
+ default: false,
201
+ },
202
+ deleteInterval: {
203
+ type: Number,
204
+ default: 0,
205
+ },
206
+ timeElapsed: {
207
+ type: Number,
208
+ trim: true,
209
+ // default: 13,
210
+ },
211
+ lastLoginAt: {
212
+ type: Date,
213
+ },
214
+ macId: {
215
+ type: String,
216
+ trim: true,
217
+ },
218
+ handShake: {
219
+ type: Boolean,
220
+ default: false,
221
+ },
222
+ speedTest: {
223
+ type: Object,
224
+ },
225
+ dataUpload: {
226
+ type: Object,
227
+ },
228
+ preRequisiteStartedAt: {
229
+ type: Date,
230
+ },
231
+ preRequisite: {
232
+ type: Boolean,
233
+ default: false,
234
+ },
235
+ deviceSpec: {
236
+ type: Object,
237
+ },
238
+ systemUtil: {
239
+ type: Object,
240
+ },
241
+ camCred: {
242
+ type: Object,
243
+ },
244
+ deleteExe: {
245
+ type: Boolean,
246
+ default: false,
247
+ },
248
+ camDetails: {
249
+ type: Object,
250
+ },
251
+ secertKey: {
252
+ type: String,
253
+ trim: true,
254
+ },
255
+ ipListStatus: {
256
+ type: Boolean,
257
+ },
258
+ preRequisite: {
259
+ type: Boolean,
260
+ default: false,
261
+ },
262
+ deployedDate: {
263
+ type: Date,
264
+ },
265
+ deployedBy: {
266
+ type: String,
267
+ },
268
+ deployedStatus: {
269
+ type: Boolean,
270
+ default: false,
271
+ },
272
+ installEdge: {
273
+ type: Boolean,
274
+ default: false,
275
+ },
276
+ systemTimeZone: {
277
+ type: String,
278
+ },
279
+ },
280
+ },
281
+ {
282
+ timestamps: true,
283
+ versionKey: false,
284
+ strict: true,
285
+ },
286
+ );
287
+
288
+ // collection.plugin(uniqueValidator);
289
+
290
+ export default model( 'Store', collection );