picker-db 3.4.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/.editorconfig +8 -0
- package/.eslintignore +9 -0
- package/.eslintrc.json +35 -0
- package/.nvmrc +1 -0
- package/.vscode/settings.json +11 -0
- package/README.md +21 -0
- package/bitbucket-pipelines.yml +24 -0
- package/constants.js +420 -0
- package/index.js +5 -0
- package/lib/Logger/index.js +45 -0
- package/lib/Mongo/index.js +126 -0
- package/modules/picker/index.js +259 -0
- package/modules/picker/models/identityCounter.js +15 -0
- package/modules/picker/models/index.js +50 -0
- package/modules/picker/schemas/address.js +74 -0
- package/modules/picker/schemas/adminSetting.js +125 -0
- package/modules/picker/schemas/balanceTransaction.js +132 -0
- package/modules/picker/schemas/bill.js +70 -0
- package/modules/picker/schemas/bookingProduct.js +50 -0
- package/modules/picker/schemas/bookings.js +699 -0
- package/modules/picker/schemas/business.js +231 -0
- package/modules/picker/schemas/businessCategory.js +61 -0
- package/modules/picker/schemas/customer.js +28 -0
- package/modules/picker/schemas/driver.js +162 -0
- package/modules/picker/schemas/fareSettings.js +122 -0
- package/modules/picker/schemas/fraudBooking.js +21 -0
- package/modules/picker/schemas/identityCounter.js +10 -0
- package/modules/picker/schemas/kmRange.js +27 -0
- package/modules/picker/schemas/massDelivery.js +119 -0
- package/modules/picker/schemas/notification.js +76 -0
- package/modules/picker/schemas/paymentezCustomer.js +41 -0
- package/modules/picker/schemas/paymentezTransaction.js +67 -0
- package/modules/picker/schemas/preference.js +40 -0
- package/modules/picker/schemas/pricingDetails.js +90 -0
- package/modules/picker/schemas/referralUsage.js +33 -0
- package/modules/picker/schemas/region.js +75 -0
- package/modules/picker/schemas/review.js +42 -0
- package/modules/picker/schemas/session.js +25 -0
- package/modules/picker/schemas/superRegion.js +41 -0
- package/modules/picker/schemas/user.js +337 -0
- package/package.json +29 -0
- package/playground/testConnection.js +24 -0
- package/playground/testService.js +27 -0
package/.editorconfig
ADDED
package/.eslintignore
ADDED
package/.eslintrc.json
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"extends": [
|
|
3
|
+
"standard"
|
|
4
|
+
],
|
|
5
|
+
"parserOptions": {
|
|
6
|
+
"ecmaVersion": 2018
|
|
7
|
+
},
|
|
8
|
+
"env": {
|
|
9
|
+
"es6": true,
|
|
10
|
+
"node": true,
|
|
11
|
+
"mocha": true
|
|
12
|
+
},
|
|
13
|
+
"parser": "babel-eslint",
|
|
14
|
+
"rules": {
|
|
15
|
+
"no-console": "warn",
|
|
16
|
+
"no-use-before-define": "warn",
|
|
17
|
+
"spaced-comment": "warn",
|
|
18
|
+
"comma-dangle": [
|
|
19
|
+
"error",
|
|
20
|
+
{
|
|
21
|
+
"arrays": "always-multiline",
|
|
22
|
+
"objects": "always-multiline",
|
|
23
|
+
"imports": "always-multiline",
|
|
24
|
+
"exports": "always-multiline",
|
|
25
|
+
"functions": "always-multiline"
|
|
26
|
+
}
|
|
27
|
+
],
|
|
28
|
+
"quotes": ["error", "double"],
|
|
29
|
+
"semi": ["error", "always"],
|
|
30
|
+
"capitalized-comments": ["error", "always"],
|
|
31
|
+
"no-var": "error",
|
|
32
|
+
"prefer-const": "error"
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
package/.nvmrc
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
v16.13.1
|
package/README.md
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# picker-db
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/picker-db)
|
|
4
|
+
[](https://opensource.org/licenses/MIT)
|
|
5
|
+
|
|
6
|
+
`picker-db` is a JavaScript library that provides models and schemas for connecting to various Picker databases. It enables code reuse across microservices by providing a common interface and reusable components for database interactions.
|
|
7
|
+
|
|
8
|
+
## Installation
|
|
9
|
+
|
|
10
|
+
```shell
|
|
11
|
+
npm install picker-db
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Features
|
|
15
|
+
|
|
16
|
+
* Common database models and schemas for Picker databases.
|
|
17
|
+
* Simplified API for connecting to and interacting with databases.
|
|
18
|
+
* Promotes code reuse and consistency across microservices.
|
|
19
|
+
|
|
20
|
+
## Contributing
|
|
21
|
+
Contributions are welcome! Please see the contribution guidelines for more information.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Template NodeJS build
|
|
2
|
+
|
|
3
|
+
# This template allows you to validate your NodeJS code.
|
|
4
|
+
# The workflow allows running tests and code linting on the default branch.
|
|
5
|
+
|
|
6
|
+
image: node:16.13.1
|
|
7
|
+
|
|
8
|
+
pipelines:
|
|
9
|
+
pull-requests:
|
|
10
|
+
'**':
|
|
11
|
+
- step:
|
|
12
|
+
name: Install
|
|
13
|
+
caches:
|
|
14
|
+
- node
|
|
15
|
+
script:
|
|
16
|
+
- npm install
|
|
17
|
+
tags:
|
|
18
|
+
'v*':
|
|
19
|
+
- step:
|
|
20
|
+
name: NPM publish
|
|
21
|
+
script:
|
|
22
|
+
- pipe: atlassian/npm-publish:0.3.3
|
|
23
|
+
variables:
|
|
24
|
+
NPM_TOKEN: $NPM_TOKEN
|
package/constants.js
ADDED
|
@@ -0,0 +1,420 @@
|
|
|
1
|
+
module.exports = {
|
|
2
|
+
MONGO_DB: {
|
|
3
|
+
RECONNECT_INTERVAL: 500,
|
|
4
|
+
RECONECT_TRIES: Number.MAX_VALUE,
|
|
5
|
+
USE_MONGO_CLIENT: true,
|
|
6
|
+
},
|
|
7
|
+
VEHICLE_TYPES: {
|
|
8
|
+
LITE: {
|
|
9
|
+
INDEX: 0,
|
|
10
|
+
TEXT: "LITE",
|
|
11
|
+
},
|
|
12
|
+
BIKE: {
|
|
13
|
+
INDEX: 1,
|
|
14
|
+
TEXT: "BIKE",
|
|
15
|
+
},
|
|
16
|
+
NONE: {
|
|
17
|
+
INDEX: 2,
|
|
18
|
+
TEXT: "NONE",
|
|
19
|
+
},
|
|
20
|
+
BOTH: {
|
|
21
|
+
INDEX: 3,
|
|
22
|
+
TEXT: "BOTH",
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
PAYMENT_METHODS: {
|
|
26
|
+
BOTH: {
|
|
27
|
+
INDEX: 0,
|
|
28
|
+
TEXT: "BOTH",
|
|
29
|
+
},
|
|
30
|
+
CARD: {
|
|
31
|
+
INDEX: 1,
|
|
32
|
+
TEXT: "CARD",
|
|
33
|
+
},
|
|
34
|
+
CASH: {
|
|
35
|
+
INDEX: 2,
|
|
36
|
+
TEXT: "CASH",
|
|
37
|
+
},
|
|
38
|
+
NONE: {
|
|
39
|
+
INDEX: 3,
|
|
40
|
+
TEXT: "NONE",
|
|
41
|
+
},
|
|
42
|
+
BILLING_CARD: {
|
|
43
|
+
INDEX: 4,
|
|
44
|
+
TEXT: "BILLING_CARD",
|
|
45
|
+
},
|
|
46
|
+
BILLING_TRANSFER: {
|
|
47
|
+
INDEX: 5,
|
|
48
|
+
TEXT: "BILLING_TRANSFER",
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
BOOKING_TYPES: {
|
|
52
|
+
PICKUP_AND_DELIVER: {
|
|
53
|
+
INDEX: 0,
|
|
54
|
+
TEXT: "PICKUP_AND_DELIVER",
|
|
55
|
+
},
|
|
56
|
+
BUY_AND_DELIVER: {
|
|
57
|
+
INDEX: 1,
|
|
58
|
+
TEXT: "BUY_AND_DELIVER",
|
|
59
|
+
},
|
|
60
|
+
MARKETPLACE: {
|
|
61
|
+
INDEX: 2,
|
|
62
|
+
TEXT: "MARKETPLACE",
|
|
63
|
+
},
|
|
64
|
+
SHOP_ORDER: {
|
|
65
|
+
INDEX: 3,
|
|
66
|
+
TEXT: "SHOP_ORDER",
|
|
67
|
+
},
|
|
68
|
+
CORPORATE: {
|
|
69
|
+
INDEX: 4,
|
|
70
|
+
TEXT: "CORPORATE",
|
|
71
|
+
},
|
|
72
|
+
WHITE_LABEL: {
|
|
73
|
+
INDEX: 5,
|
|
74
|
+
TEXT: "WHITE_LABEL",
|
|
75
|
+
},
|
|
76
|
+
MASS_DELIVERY: {
|
|
77
|
+
INDEX: 6,
|
|
78
|
+
TEXT: "MASS_DELIVERY",
|
|
79
|
+
},
|
|
80
|
+
},
|
|
81
|
+
BOOKING_STATUS: {
|
|
82
|
+
PENDING: {
|
|
83
|
+
INDEX: 0,
|
|
84
|
+
TEXT: "PENDING",
|
|
85
|
+
},
|
|
86
|
+
ACCEPTED: {
|
|
87
|
+
INDEX: 1,
|
|
88
|
+
TEXT: "ACCEPTED",
|
|
89
|
+
},
|
|
90
|
+
ARRIVED_AT_PICKUP: {
|
|
91
|
+
INDEX: 2,
|
|
92
|
+
TEXT: "ARRIVED_AT_PICKUP",
|
|
93
|
+
},
|
|
94
|
+
AMOUNT_REQUESTED: {
|
|
95
|
+
INDEX: 0,
|
|
96
|
+
TEXT: "AMOUNT_REQUESTED",
|
|
97
|
+
},
|
|
98
|
+
AMOUNT_ACCEPTED: {
|
|
99
|
+
INDEX: 1,
|
|
100
|
+
TEXT: "AMOUNT_ACCEPTED",
|
|
101
|
+
},
|
|
102
|
+
AMOUNT_REJECTED: {
|
|
103
|
+
INDEX: 2,
|
|
104
|
+
TEXT: "AMOUNT_REJECTED",
|
|
105
|
+
},
|
|
106
|
+
WAY_TO_DELIVER: {
|
|
107
|
+
INDEX: 3,
|
|
108
|
+
TEXT: "WAY_TO_DELIVER",
|
|
109
|
+
},
|
|
110
|
+
ARRIVED_AT_DELIVERY: {
|
|
111
|
+
INDEX: 4,
|
|
112
|
+
TEXT: "ARRIVED_AT_DELIVERY",
|
|
113
|
+
},
|
|
114
|
+
COMPLETED: {
|
|
115
|
+
INDEX: 5,
|
|
116
|
+
TEXT: "COMPLETED",
|
|
117
|
+
},
|
|
118
|
+
CANCELLED_BY_ADMIN: {
|
|
119
|
+
INDEX: 6,
|
|
120
|
+
TEXT: "CANCELLED_BY_ADMIN",
|
|
121
|
+
},
|
|
122
|
+
CANCELLED: {
|
|
123
|
+
INDEX: 7,
|
|
124
|
+
TEXT: "CANCELLED",
|
|
125
|
+
},
|
|
126
|
+
CANCELLED_BY_DRIVER: {
|
|
127
|
+
INDEX: 8,
|
|
128
|
+
TEXT: "CANCELLED_BY_DRIVER",
|
|
129
|
+
},
|
|
130
|
+
REJECTED_BY_DRIVER: {
|
|
131
|
+
INDEX: 9,
|
|
132
|
+
TEXT: "REJECTED_BY_DRIVER",
|
|
133
|
+
},
|
|
134
|
+
CANCELLED_REQUEST: {
|
|
135
|
+
INDEX: 10,
|
|
136
|
+
TEXT: "CANCELLED_REQUEST",
|
|
137
|
+
},
|
|
138
|
+
NOT_DELIVERED: {
|
|
139
|
+
INDEX: 11,
|
|
140
|
+
TEXT: "NOT_DELIVERED",
|
|
141
|
+
},
|
|
142
|
+
NOT_FOUND: {
|
|
143
|
+
INDEX: 12,
|
|
144
|
+
TEXT: "DRIVER_NOT_FOUND",
|
|
145
|
+
},
|
|
146
|
+
NO_PICKERS_IN_AREA: {
|
|
147
|
+
INDEX: 13,
|
|
148
|
+
TEXT: "NO_PICKERS_IN_AREA",
|
|
149
|
+
},
|
|
150
|
+
EXPIRED: {
|
|
151
|
+
INDEX: 14,
|
|
152
|
+
TEXT: "EXPIRED",
|
|
153
|
+
},
|
|
154
|
+
ADMIN_NOTIFICATION: {
|
|
155
|
+
INDEX: 15,
|
|
156
|
+
TEXT: "ADMIN_NOTIFICATION",
|
|
157
|
+
},
|
|
158
|
+
CANCEL_BOOKING: {
|
|
159
|
+
INDEX: 16,
|
|
160
|
+
TEXT: "CANCEL_BOOKING",
|
|
161
|
+
},
|
|
162
|
+
RE_ASSIGN_DRIVER: {
|
|
163
|
+
INDEX: 17,
|
|
164
|
+
TEXT: "RE_ASSIGN_DRIVER",
|
|
165
|
+
},
|
|
166
|
+
RE_ASSIGN_BOOKING: {
|
|
167
|
+
INDEX: 18,
|
|
168
|
+
TEXT: "RE_ASSIGN_BOOKING",
|
|
169
|
+
},
|
|
170
|
+
OUT_OF_REGIONS: {
|
|
171
|
+
INDEX: 19,
|
|
172
|
+
TEXT: "OUT_OF_REGIONS",
|
|
173
|
+
},
|
|
174
|
+
ON_HOLD: {
|
|
175
|
+
INDEX: 20,
|
|
176
|
+
TEXT: "ON_HOLD",
|
|
177
|
+
},
|
|
178
|
+
ON_DECK: {
|
|
179
|
+
INDEX: 21,
|
|
180
|
+
TEXT: "ON_DECK",
|
|
181
|
+
},
|
|
182
|
+
READY_FOR_PICKUP: {
|
|
183
|
+
INDEX: 22,
|
|
184
|
+
TEXT: "READY_FOR_PICKUP",
|
|
185
|
+
},
|
|
186
|
+
CANCELLED_BY_BUSINESS: {
|
|
187
|
+
INDEX: 23,
|
|
188
|
+
TEXT: "CANCELLED_BY_BUSINESS",
|
|
189
|
+
},
|
|
190
|
+
BUSINESS_NOT_FOUND: {
|
|
191
|
+
INDEX: 24,
|
|
192
|
+
TEXT: "BUSINESS_NOT_FOUND",
|
|
193
|
+
},
|
|
194
|
+
NOT_SHOW: {
|
|
195
|
+
INDEX: 25,
|
|
196
|
+
TEXT: "NOT_SHOW",
|
|
197
|
+
},
|
|
198
|
+
REJECTED_BY_BUSINESS: {
|
|
199
|
+
INDEX: 27,
|
|
200
|
+
TEXT: "REJECTED_BY_BUSINESS",
|
|
201
|
+
},
|
|
202
|
+
REJECTED_BY_ADMIN: {
|
|
203
|
+
INDEX: 28,
|
|
204
|
+
TEXT: "REJECTED_BY_ADMIN",
|
|
205
|
+
},
|
|
206
|
+
PAYMENT_FAILED: {
|
|
207
|
+
INDEX: 29,
|
|
208
|
+
TEXT: "PAYMENT_FAILED",
|
|
209
|
+
},
|
|
210
|
+
CANCELLED_BY_DELIVERY_PROVIDER: {
|
|
211
|
+
INDEX: 30,
|
|
212
|
+
TEXT: "CANCELLED_BY_DELIVERY_PROVIDER",
|
|
213
|
+
},
|
|
214
|
+
PROVIDER_NOT_FOUND: {
|
|
215
|
+
INDEX: 31,
|
|
216
|
+
TEXT: "PROVIDER_NOT_FOUND",
|
|
217
|
+
},
|
|
218
|
+
RETURNING: {
|
|
219
|
+
index: 32,
|
|
220
|
+
text: "RETURNING",
|
|
221
|
+
},
|
|
222
|
+
RETURNED: {
|
|
223
|
+
index: 33,
|
|
224
|
+
text: "RETURNED",
|
|
225
|
+
},
|
|
226
|
+
RETURNED_TO_PICKUP: {
|
|
227
|
+
INDEX: 34,
|
|
228
|
+
TEXT: "RETURNED_TO_PICKUP",
|
|
229
|
+
},
|
|
230
|
+
},
|
|
231
|
+
SOCIAL_ACCOUNTS: {
|
|
232
|
+
FACEBOOK: "facebook",
|
|
233
|
+
GOOGLE: "google",
|
|
234
|
+
APPLE: "apple",
|
|
235
|
+
},
|
|
236
|
+
API_USER: {
|
|
237
|
+
BILLING_METHOD: {
|
|
238
|
+
CARD: "BILLING_CARD",
|
|
239
|
+
TRANSFER: "BILLING_TRANSFER",
|
|
240
|
+
},
|
|
241
|
+
},
|
|
242
|
+
USER: {
|
|
243
|
+
DEVICE_TYPES: {
|
|
244
|
+
IOS: "IOS",
|
|
245
|
+
ANDROID: "ANDROID",
|
|
246
|
+
WEB: "WEB",
|
|
247
|
+
},
|
|
248
|
+
},
|
|
249
|
+
BUSINESS: {
|
|
250
|
+
TYPES: {
|
|
251
|
+
MARKETPLACE: "MARKETPLACE",
|
|
252
|
+
SHOP_ORDER: "SHOP_ORDER",
|
|
253
|
+
EXTERNAL: "EXTERNAL",
|
|
254
|
+
},
|
|
255
|
+
},
|
|
256
|
+
DRIVER: {
|
|
257
|
+
PAYMENT: {
|
|
258
|
+
PERCENTAGE: "PERCENTAGE",
|
|
259
|
+
ABSOLUTE: "ABSOLUTE",
|
|
260
|
+
OVER_MINIMUM: "OVER_MINIMUM",
|
|
261
|
+
PERCENTAGE_MINIMUM: "PERCENTAGE_MINIMUM",
|
|
262
|
+
ABSOLUTE_MINIMUM: "ABSOLUTE_MINIMUM",
|
|
263
|
+
},
|
|
264
|
+
TYPE: {
|
|
265
|
+
STARTER: "STARTER",
|
|
266
|
+
SENIOR: "SENIOR",
|
|
267
|
+
MCGYVER: "MCGYVER",
|
|
268
|
+
PREMIUM: "PREMIUM",
|
|
269
|
+
},
|
|
270
|
+
ACCOUNTING_TYPE: {
|
|
271
|
+
OLD: "OLD",
|
|
272
|
+
NEW: "NEW",
|
|
273
|
+
},
|
|
274
|
+
},
|
|
275
|
+
NOTIFICATION: {
|
|
276
|
+
VIA: {
|
|
277
|
+
SMS: "SMS",
|
|
278
|
+
EMAIL: "EMAIL",
|
|
279
|
+
PUSH: "PUSH",
|
|
280
|
+
WHATSAPP: "WHATSAPP",
|
|
281
|
+
},
|
|
282
|
+
PROVIDERS: {
|
|
283
|
+
FCM: "FCM",
|
|
284
|
+
APNS: "APNS",
|
|
285
|
+
TWILIO: "TWILIO",
|
|
286
|
+
NODEMAILER: "NODEMAILER",
|
|
287
|
+
AWS_SES: "AWS_SES",
|
|
288
|
+
},
|
|
289
|
+
},
|
|
290
|
+
TRANSACTION: {
|
|
291
|
+
TYPE: {
|
|
292
|
+
BONUS: "BONUS",
|
|
293
|
+
PENALTY: "PENALTY",
|
|
294
|
+
RESIDUE: "RESIDUE",
|
|
295
|
+
DELIVERY: "DELIVERY",
|
|
296
|
+
ITEM: "ITEM",
|
|
297
|
+
DEPOSIT: "DEPOSIT",
|
|
298
|
+
PAYMENT: "PAYMENT",
|
|
299
|
+
BILL: "BILL",
|
|
300
|
+
BALANCE_ADJUSTMENT: "BALANCE_ADJUSTMENT",
|
|
301
|
+
ADVANCE_PAYMENT: "ADVANCE_PAYMENT",
|
|
302
|
+
ALL: "ALL",
|
|
303
|
+
MARKETPLACE: "MARKETPLACE",
|
|
304
|
+
RECHARGE: "RECHARGE",
|
|
305
|
+
RECHARGE_EARNINGS: "RECHARGE_EARNINGS",
|
|
306
|
+
RECHARGE_CARD: "RECHARGE_CARD",
|
|
307
|
+
RECHARGE_BANK: "RECHARGE_BANK",
|
|
308
|
+
CORPORATE: "CORPORATE",
|
|
309
|
+
CORPORATE_PAYMENT: "CORPORATE_PAYMENT",
|
|
310
|
+
MARKETPLACE_PAYMENT: "MARKETPLACE_PAYMENT",
|
|
311
|
+
ITEM_REFUND: "ITEM_REFUND",
|
|
312
|
+
DELIVERY_REFUND: "DELIVERY_REFUND",
|
|
313
|
+
},
|
|
314
|
+
STATUS: {
|
|
315
|
+
REALIZED: "REALIZED",
|
|
316
|
+
APPROVED: "APPROVED",
|
|
317
|
+
PAID: "PAID",
|
|
318
|
+
FAILED: "FAILED",
|
|
319
|
+
},
|
|
320
|
+
SELECTED_REASONS: {
|
|
321
|
+
MANUAL_BOOKING: "MANUAL_BOOKING",
|
|
322
|
+
PAYMENT_ERROR: "PAYMENT_ERROR",
|
|
323
|
+
SPECIAL_BOOKING: "SPECIAL_BOOKING",
|
|
324
|
+
BAD_ORDER_CHARGE: "BAD_ORDER_CHARGE",
|
|
325
|
+
FRAUD: "FRAUD",
|
|
326
|
+
THEFT: "THEFT",
|
|
327
|
+
BAD_SERVICE: "BAD_SERVICE",
|
|
328
|
+
},
|
|
329
|
+
},
|
|
330
|
+
RIDE_TYPES: {
|
|
331
|
+
NOW: {
|
|
332
|
+
INDEX: 1,
|
|
333
|
+
TEXT: "RIDE NOW",
|
|
334
|
+
},
|
|
335
|
+
LATER: {
|
|
336
|
+
INDEX: 2,
|
|
337
|
+
TEXT: "RIDE LATER",
|
|
338
|
+
},
|
|
339
|
+
BOTH: {
|
|
340
|
+
INDEX: 3,
|
|
341
|
+
TEXT: "BOTH",
|
|
342
|
+
},
|
|
343
|
+
},
|
|
344
|
+
ADDRESS_TYPES: {
|
|
345
|
+
SELF: "SELF",
|
|
346
|
+
PICKUP: "PICKUP",
|
|
347
|
+
DELIVERY: "DELIVERY",
|
|
348
|
+
HOME: "HOME",
|
|
349
|
+
OFFICE: "OFFICE",
|
|
350
|
+
OTHERS: "OTHERS",
|
|
351
|
+
},
|
|
352
|
+
MASS_DELIVERY: {
|
|
353
|
+
STATUSES: {
|
|
354
|
+
PENDING: {
|
|
355
|
+
INDEX: 0,
|
|
356
|
+
TEXT: "PENDING",
|
|
357
|
+
},
|
|
358
|
+
ONGOING: {
|
|
359
|
+
INDEX: 1,
|
|
360
|
+
TEXT: "ONGOING",
|
|
361
|
+
},
|
|
362
|
+
COMPLETED: {
|
|
363
|
+
INDEX: 2,
|
|
364
|
+
TEXT: "COMPLETED",
|
|
365
|
+
},
|
|
366
|
+
CANCELLED: {
|
|
367
|
+
INDEX: 3,
|
|
368
|
+
TEXT: "CANCELLED",
|
|
369
|
+
},
|
|
370
|
+
},
|
|
371
|
+
},
|
|
372
|
+
BILL: {
|
|
373
|
+
TYPE: {
|
|
374
|
+
DRIVER: "DRIVER",
|
|
375
|
+
BUSINESS: "BUSINESS",
|
|
376
|
+
CUSTOMER: "CUSTOMER",
|
|
377
|
+
},
|
|
378
|
+
STATUS: {
|
|
379
|
+
CREATED: "CREATED",
|
|
380
|
+
APPROVED: "APPROVED",
|
|
381
|
+
SENT: "SENT",
|
|
382
|
+
ERROR: "ERROR",
|
|
383
|
+
AUTHORIZED: "AUTHORIZED",
|
|
384
|
+
NOT_AUTHORIZED: "NOT_AUTHORIZED",
|
|
385
|
+
RETURNED: "RETURNED",
|
|
386
|
+
},
|
|
387
|
+
},
|
|
388
|
+
FARE: {
|
|
389
|
+
RUSH_HOUR_INCREASE_TYPES: {
|
|
390
|
+
PERCENTAGE: "PERCENTAGE",
|
|
391
|
+
FIXED: "FIXED",
|
|
392
|
+
},
|
|
393
|
+
},
|
|
394
|
+
CALIFICATION: {
|
|
395
|
+
RUDE: {
|
|
396
|
+
index: -1,
|
|
397
|
+
text: "RUDE",
|
|
398
|
+
},
|
|
399
|
+
LATE: {
|
|
400
|
+
index: -2,
|
|
401
|
+
text: "LATE",
|
|
402
|
+
},
|
|
403
|
+
INEFFICIENT: {
|
|
404
|
+
index: -3,
|
|
405
|
+
text: "INEFFICIENT",
|
|
406
|
+
},
|
|
407
|
+
KIND: {
|
|
408
|
+
index: 1,
|
|
409
|
+
text: "KIND",
|
|
410
|
+
},
|
|
411
|
+
FAST: {
|
|
412
|
+
index: 2,
|
|
413
|
+
text: "FAST",
|
|
414
|
+
},
|
|
415
|
+
EFFICIENT: {
|
|
416
|
+
index: 3,
|
|
417
|
+
text: "EFFICIENT",
|
|
418
|
+
},
|
|
419
|
+
},
|
|
420
|
+
};
|
package/index.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
const fs = require("fs");
|
|
2
|
+
const winston = require("winston");
|
|
3
|
+
const _ = require("lodash");
|
|
4
|
+
|
|
5
|
+
const { printf, combine, timestamp, colorize, errors } = winston.format;
|
|
6
|
+
|
|
7
|
+
const logDir = "log";
|
|
8
|
+
if (!fs.existsSync(logDir)) {
|
|
9
|
+
fs.mkdirSync(logDir);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
// Converts the date object to local time string
|
|
13
|
+
const myFormat = printf(({ message, level, label, timestamp, stack }) => {
|
|
14
|
+
if (!_.isEmpty(stack)) {
|
|
15
|
+
return `${timestamp} ${level} - ${stack}`;
|
|
16
|
+
}
|
|
17
|
+
if (_.isObject(message)) {
|
|
18
|
+
message = JSON.stringify(message, null, 2);
|
|
19
|
+
}
|
|
20
|
+
return `${timestamp} [${label}] ${level} - ${message}`;
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
const logger = winston.createLogger({
|
|
24
|
+
level: "debug",
|
|
25
|
+
format: combine(
|
|
26
|
+
errors({ stack: true }),
|
|
27
|
+
timestamp(),
|
|
28
|
+
myFormat,
|
|
29
|
+
),
|
|
30
|
+
transports: [
|
|
31
|
+
new winston.transports.Console({
|
|
32
|
+
format: combine(
|
|
33
|
+
errors({ stack: true }),
|
|
34
|
+
colorize(),
|
|
35
|
+
timestamp(),
|
|
36
|
+
myFormat,
|
|
37
|
+
),
|
|
38
|
+
}),
|
|
39
|
+
new winston.transports.File({ filename: "log/error.log", level: "error" }),
|
|
40
|
+
new winston.transports.File({ filename: "log/info.log", level: "info" }),
|
|
41
|
+
new winston.transports.File({ filename: "log/debug.log", level: "debug" }),
|
|
42
|
+
],
|
|
43
|
+
});
|
|
44
|
+
|
|
45
|
+
module.exports = logger;
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
const mongoose = require("mongoose");
|
|
2
|
+
const _ = require("lodash");
|
|
3
|
+
|
|
4
|
+
const logger = require("../Logger");
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Class representing a connection to any mongoDB database
|
|
8
|
+
*/
|
|
9
|
+
class MongoDB {
|
|
10
|
+
/**
|
|
11
|
+
* Sets up the configuration for the mongo connection
|
|
12
|
+
* @param {object} config
|
|
13
|
+
* @param {string} config.dbName
|
|
14
|
+
* @param {boolean} [config.isLoggingEnabled]
|
|
15
|
+
* @param {boolean} [config.isDebugEnabled]
|
|
16
|
+
* @param {object} config.auth
|
|
17
|
+
* @param {string} config.auth.username
|
|
18
|
+
* @param {string} config.auth.password
|
|
19
|
+
* @param {string} [config.auth.host]
|
|
20
|
+
* @param {string} [config.auth.port]
|
|
21
|
+
* @param {string} [config.auth.environment]
|
|
22
|
+
* @param {boolean} [config.useMongoClient]
|
|
23
|
+
* @param {boolean} [config.useUnifiedTopology]
|
|
24
|
+
*/
|
|
25
|
+
constructor (config = {}) {
|
|
26
|
+
this.config = _.defaults(
|
|
27
|
+
_.pick(config, ["isLoggingEnabled", "dbName", "isDebugEnabled"]),
|
|
28
|
+
{
|
|
29
|
+
isLoggingEnabled: false,
|
|
30
|
+
},
|
|
31
|
+
);
|
|
32
|
+
this.options = _.defaults(
|
|
33
|
+
_.pick(config, ["useMongoClient", "useUnifiedTopology"]),
|
|
34
|
+
{
|
|
35
|
+
useNewUrlParser: true,
|
|
36
|
+
useUnifiedTopology: true,
|
|
37
|
+
},
|
|
38
|
+
);
|
|
39
|
+
const auth = _.defaults(config.auth, {
|
|
40
|
+
host: "localhost",
|
|
41
|
+
port: "27017",
|
|
42
|
+
});
|
|
43
|
+
this.uri = this.getUri(auth);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Returns connection uri based on environment
|
|
48
|
+
* @param {object} auth
|
|
49
|
+
* @param {string} auth.username
|
|
50
|
+
* @param {string} auth.password
|
|
51
|
+
* @param {string} [auth.host]
|
|
52
|
+
* @param {string} [auth.port]
|
|
53
|
+
*/
|
|
54
|
+
getUri (auth) {
|
|
55
|
+
let uri = "";
|
|
56
|
+
switch (auth.environment) {
|
|
57
|
+
case "local":
|
|
58
|
+
uri = `mongodb://${auth.host}:${auth.port}/${this.config.dbName}`;
|
|
59
|
+
break;
|
|
60
|
+
default:
|
|
61
|
+
uri = `mongodb://${auth.username}:${auth.password}@${auth.host}:${auth.port}/${this.config.dbName}`;
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
return uri;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Create a connection to the database selected in the constructor
|
|
69
|
+
*/
|
|
70
|
+
connect () {
|
|
71
|
+
return new Promise((resolve, reject) => {
|
|
72
|
+
if (this.isConnected) {
|
|
73
|
+
return resolve(this.connection);
|
|
74
|
+
}
|
|
75
|
+
this.connection = mongoose.createConnection(this.uri, this.options);
|
|
76
|
+
|
|
77
|
+
if (this.config.isDebugEnabled) {
|
|
78
|
+
mongoose.set("debug", true);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
this.connection.on("error", (err) => {
|
|
82
|
+
if (this.config.isLoggingEnabled) {
|
|
83
|
+
logger.error({ message: `Connection error: ${JSON.stringify(err, null, 2)}`, label: this.config.dbName.toUpperCase() });
|
|
84
|
+
}
|
|
85
|
+
this.isConnected = false;
|
|
86
|
+
return reject(err);
|
|
87
|
+
});
|
|
88
|
+
this.connection.on("connected", () => {
|
|
89
|
+
if (this.config.isLoggingEnabled) {
|
|
90
|
+
logger.info({ message: "Connection open", label: this.config.dbName.toUpperCase() });
|
|
91
|
+
}
|
|
92
|
+
this.isConnected = true;
|
|
93
|
+
return resolve(this.connection);
|
|
94
|
+
});
|
|
95
|
+
this.connection.on("disconnected", () => {
|
|
96
|
+
if (this.config.isLoggingEnabled) {
|
|
97
|
+
logger.info({ message: "Disconnected", label: this.config.dbName.toUpperCase() });
|
|
98
|
+
}
|
|
99
|
+
this.isConnected = false;
|
|
100
|
+
});
|
|
101
|
+
this.connection.on("reconnected", () => {
|
|
102
|
+
if (this.config.isLoggingEnabled) {
|
|
103
|
+
logger.info({ message: "Reconnected", label: this.config.dbName.toUpperCase() });
|
|
104
|
+
}
|
|
105
|
+
this.isConnected = true;
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
async getConnection () {
|
|
111
|
+
await this.connect();
|
|
112
|
+
if (this.isConnected) {
|
|
113
|
+
return this.connection;
|
|
114
|
+
}
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Closes the connection to the selected database
|
|
120
|
+
*/
|
|
121
|
+
disconnect () {
|
|
122
|
+
return this.connection.close();
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
module.exports = MongoDB;
|