@timardex/cluemart-server-shared 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/dist/chunk-XNN5GVG3.mjs +62 -0
- package/dist/chunk-XNN5GVG3.mjs.map +1 -0
- package/dist/index.cjs +1144 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.mts +485 -0
- package/dist/index.d.ts +485 -0
- package/dist/index.mjs +1119 -0
- package/dist/index.mjs.map +1 -0
- package/dist/mongoose/index.cjs +959 -0
- package/dist/mongoose/index.cjs.map +1 -0
- package/dist/mongoose/index.d.mts +451 -0
- package/dist/mongoose/index.d.ts +451 -0
- package/dist/mongoose/index.mjs +885 -0
- package/dist/mongoose/index.mjs.map +1 -0
- package/dist/service/index.cjs +279 -0
- package/dist/service/index.cjs.map +1 -0
- package/dist/service/index.d.mts +25 -0
- package/dist/service/index.d.ts +25 -0
- package/dist/service/index.mjs +189 -0
- package/dist/service/index.mjs.map +1 -0
- package/dist/types-DWXC8az-.d.mts +20 -0
- package/dist/types-DWXC8az-.d.ts +20 -0
- package/package.json +62 -0
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,1144 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// src/index.ts
|
|
31
|
+
var index_exports = {};
|
|
32
|
+
__export(index_exports, {
|
|
33
|
+
AdModel: () => AdModel,
|
|
34
|
+
CategorySchema: () => CategorySchema,
|
|
35
|
+
ChatModel: () => ChatModel,
|
|
36
|
+
EventInfoModel: () => EventInfoModel,
|
|
37
|
+
EventModel: () => EventModel,
|
|
38
|
+
NotificationModel: () => NotificationModel,
|
|
39
|
+
ParticipantSchema: () => ParticipantSchema,
|
|
40
|
+
PushTokenModel: () => PushTokenModel,
|
|
41
|
+
RelationModel: () => RelationModel,
|
|
42
|
+
RelationTypeSchema: () => RelationTypeSchema,
|
|
43
|
+
ResourceActivityModel: () => ResourceActivityModel,
|
|
44
|
+
ResourceImageTypeSchema: () => ResourceImageTypeSchema,
|
|
45
|
+
SocialMediaTypeSchema: () => SocialMediaTypeSchema,
|
|
46
|
+
StallTypeSchema: () => StallTypeSchema,
|
|
47
|
+
TesterModel: () => TesterModel,
|
|
48
|
+
UserModel: () => UserModel,
|
|
49
|
+
VendorInfoModel: () => VendorInfoModel,
|
|
50
|
+
VendorModel: () => VendorModel,
|
|
51
|
+
VerificationTokenModel: () => VerificationTokenModel,
|
|
52
|
+
baseResourceFields: () => baseResourceFields,
|
|
53
|
+
connectToDatabase: () => connectToDatabase,
|
|
54
|
+
partnersSchema: () => partnersSchema,
|
|
55
|
+
relationDatesSchema: () => relationDatesSchema,
|
|
56
|
+
saveNotificationsInDb: () => saveNotificationsInDb,
|
|
57
|
+
sendPushNotifications: () => sendPushNotifications,
|
|
58
|
+
termsAgreementSchema: () => termsAgreementSchema
|
|
59
|
+
});
|
|
60
|
+
module.exports = __toCommonJS(index_exports);
|
|
61
|
+
|
|
62
|
+
// src/mongoose/Ad.ts
|
|
63
|
+
var import_cluemart_shared4 = require("@timardex/cluemart-shared");
|
|
64
|
+
var import_mongoose4 = __toESM(require("mongoose"));
|
|
65
|
+
|
|
66
|
+
// src/mongoose/global.ts
|
|
67
|
+
var import_cluemart_shared3 = require("@timardex/cluemart-shared");
|
|
68
|
+
var import_mongoose3 = __toESM(require("mongoose"));
|
|
69
|
+
|
|
70
|
+
// src/mongoose/Relation.ts
|
|
71
|
+
var import_mongoose2 = __toESM(require("mongoose"));
|
|
72
|
+
var import_cluemart_shared2 = require("@timardex/cluemart-shared");
|
|
73
|
+
|
|
74
|
+
// src/mongoose/event/EventInfo.ts
|
|
75
|
+
var import_cluemart_shared = require("@timardex/cluemart-shared");
|
|
76
|
+
var import_mongoose = __toESM(require("mongoose"));
|
|
77
|
+
var MongooseSchema = import_mongoose.default.Schema;
|
|
78
|
+
var StallTypeSchema = new MongooseSchema(
|
|
79
|
+
{
|
|
80
|
+
electricity: {
|
|
81
|
+
price: { required: false, type: Number },
|
|
82
|
+
selected: { required: false, type: Boolean }
|
|
83
|
+
},
|
|
84
|
+
label: { required: false, type: String },
|
|
85
|
+
price: { required: false, type: Number },
|
|
86
|
+
stallCapacity: { required: false, type: Number }
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
_id: false
|
|
90
|
+
// Prevents Mongoose from creating an additional _id field for subdocuments
|
|
91
|
+
}
|
|
92
|
+
);
|
|
93
|
+
var dateTimeSchema = new MongooseSchema(
|
|
94
|
+
{
|
|
95
|
+
endDate: { required: true, type: String },
|
|
96
|
+
endTime: { required: true, type: String },
|
|
97
|
+
stallTypes: [StallTypeSchema],
|
|
98
|
+
startDate: { required: true, type: String },
|
|
99
|
+
startTime: { required: true, type: String }
|
|
100
|
+
},
|
|
101
|
+
{ _id: false }
|
|
102
|
+
// Prevents Mongoose from creating an additional _id field for subdocuments
|
|
103
|
+
);
|
|
104
|
+
var paymentInfoSchema = new MongooseSchema(
|
|
105
|
+
{
|
|
106
|
+
accountHolderName: { required: false, type: String },
|
|
107
|
+
accountNumber: { required: false, type: String },
|
|
108
|
+
link: { required: false, type: String },
|
|
109
|
+
paymentMethod: {
|
|
110
|
+
enum: Object.values(import_cluemart_shared.EnumPaymentMethod),
|
|
111
|
+
required: true,
|
|
112
|
+
type: String
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
{ _id: false }
|
|
116
|
+
// Prevents Mongoose from creating an additional _id field
|
|
117
|
+
);
|
|
118
|
+
var requirementsSchema = new MongooseSchema(
|
|
119
|
+
{
|
|
120
|
+
category: { required: true, type: String },
|
|
121
|
+
label: { required: true, type: String },
|
|
122
|
+
value: { required: true, type: Boolean }
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
_id: false
|
|
126
|
+
// Prevents Mongoose from creating an additional _id field for
|
|
127
|
+
}
|
|
128
|
+
);
|
|
129
|
+
var schema = new MongooseSchema(
|
|
130
|
+
{
|
|
131
|
+
applicationDeadlineHours: { required: true, type: Number },
|
|
132
|
+
dateTime: [dateTimeSchema],
|
|
133
|
+
eventId: {
|
|
134
|
+
ref: "Event",
|
|
135
|
+
required: false,
|
|
136
|
+
type: import_mongoose.default.Schema.Types.ObjectId
|
|
137
|
+
},
|
|
138
|
+
packInTime: { required: true, type: Number },
|
|
139
|
+
paymentDueHours: { required: true, type: Number },
|
|
140
|
+
paymentInfo: [paymentInfoSchema],
|
|
141
|
+
requirements: [requirementsSchema]
|
|
142
|
+
},
|
|
143
|
+
{ timestamps: true }
|
|
144
|
+
);
|
|
145
|
+
var EventInfoModel = import_mongoose.default.models.EventInfo || import_mongoose.default.model("EventInfo", schema);
|
|
146
|
+
|
|
147
|
+
// src/mongoose/Relation.ts
|
|
148
|
+
var MongooseSchema2 = import_mongoose2.default.Schema;
|
|
149
|
+
var relationDatesSchema = new MongooseSchema2(
|
|
150
|
+
{
|
|
151
|
+
lastUpdateBy: {
|
|
152
|
+
resourceId: { required: false, type: String },
|
|
153
|
+
userEmail: { required: false, type: String }
|
|
154
|
+
},
|
|
155
|
+
paymentReference: { required: false, type: String },
|
|
156
|
+
stallType: StallTypeSchema,
|
|
157
|
+
startDate: { required: false, type: String },
|
|
158
|
+
startTime: { required: false, type: String },
|
|
159
|
+
status: {
|
|
160
|
+
enum: Object.values(import_cluemart_shared2.EnumInviteStatus),
|
|
161
|
+
required: false,
|
|
162
|
+
type: String
|
|
163
|
+
}
|
|
164
|
+
},
|
|
165
|
+
{ _id: false }
|
|
166
|
+
);
|
|
167
|
+
var RelationTypeSchema = new MongooseSchema2(
|
|
168
|
+
{
|
|
169
|
+
active: { default: true, required: true, type: Boolean },
|
|
170
|
+
chatId: {
|
|
171
|
+
ref: "Chat",
|
|
172
|
+
required: true,
|
|
173
|
+
type: import_mongoose2.default.Schema.Types.ObjectId
|
|
174
|
+
},
|
|
175
|
+
deletedAt: { default: null, required: false, type: Date },
|
|
176
|
+
eventId: {
|
|
177
|
+
ref: "Event",
|
|
178
|
+
required: true,
|
|
179
|
+
type: import_mongoose2.default.Schema.Types.ObjectId
|
|
180
|
+
},
|
|
181
|
+
lastUpdateBy: {
|
|
182
|
+
enum: Object.values(import_cluemart_shared2.EnumResourceType),
|
|
183
|
+
required: true,
|
|
184
|
+
type: String
|
|
185
|
+
},
|
|
186
|
+
relationDates: [relationDatesSchema],
|
|
187
|
+
relationType: {
|
|
188
|
+
enum: Object.values(import_cluemart_shared2.EnumRelationResource),
|
|
189
|
+
required: true,
|
|
190
|
+
type: String
|
|
191
|
+
},
|
|
192
|
+
vendorId: {
|
|
193
|
+
ref: "Vendor",
|
|
194
|
+
required: true,
|
|
195
|
+
type: import_mongoose2.default.Schema.Types.ObjectId
|
|
196
|
+
}
|
|
197
|
+
},
|
|
198
|
+
{ timestamps: true }
|
|
199
|
+
);
|
|
200
|
+
RelationTypeSchema.index({
|
|
201
|
+
"relationDates.startDate": 1,
|
|
202
|
+
"relationDates.startTime": 1,
|
|
203
|
+
"relationDates.status": 1
|
|
204
|
+
});
|
|
205
|
+
var RelationModel = import_mongoose2.default.models.Relation || import_mongoose2.default.model("Relation", RelationTypeSchema);
|
|
206
|
+
|
|
207
|
+
// src/mongoose/global.ts
|
|
208
|
+
var MongooseSchema3 = import_mongoose3.default.Schema;
|
|
209
|
+
var OwnerTypeSchema = new MongooseSchema3(
|
|
210
|
+
{
|
|
211
|
+
email: { required: true, type: String },
|
|
212
|
+
userId: {
|
|
213
|
+
ref: "User",
|
|
214
|
+
required: true,
|
|
215
|
+
type: import_mongoose3.default.Schema.Types.ObjectId
|
|
216
|
+
}
|
|
217
|
+
},
|
|
218
|
+
{ _id: false }
|
|
219
|
+
// Prevents Mongoose from creating an additional _id field for subdocuments
|
|
220
|
+
);
|
|
221
|
+
var SocialMediaTypeSchema = new MongooseSchema3(
|
|
222
|
+
{
|
|
223
|
+
link: { required: true, type: String },
|
|
224
|
+
name: { required: true, type: String }
|
|
225
|
+
},
|
|
226
|
+
{ _id: false }
|
|
227
|
+
// Prevents Mongoose from creating an additional _id field
|
|
228
|
+
);
|
|
229
|
+
var ResourceImageTypeSchema = new MongooseSchema3(
|
|
230
|
+
{
|
|
231
|
+
source: { required: false, type: String },
|
|
232
|
+
title: { required: false, type: String }
|
|
233
|
+
},
|
|
234
|
+
{ _id: false }
|
|
235
|
+
// Prevents Mongoose from creating an additional _id field for subdocuments
|
|
236
|
+
);
|
|
237
|
+
var SubCategorySchema = new MongooseSchema3(
|
|
238
|
+
{
|
|
239
|
+
id: { required: false, type: String },
|
|
240
|
+
items: [
|
|
241
|
+
{
|
|
242
|
+
id: { required: false, type: String },
|
|
243
|
+
name: { required: false, type: String }
|
|
244
|
+
}
|
|
245
|
+
],
|
|
246
|
+
name: { required: false, type: String }
|
|
247
|
+
},
|
|
248
|
+
{ _id: false }
|
|
249
|
+
// Prevents Mongoose from creating an additional _id field for subdocuments
|
|
250
|
+
);
|
|
251
|
+
var CategorySchema = new MongooseSchema3(
|
|
252
|
+
{
|
|
253
|
+
id: { required: true, type: String },
|
|
254
|
+
name: { required: true, type: String },
|
|
255
|
+
subcategories: [SubCategorySchema]
|
|
256
|
+
},
|
|
257
|
+
{ _id: false }
|
|
258
|
+
// Prevents Mongoose from creating an additional _id field for subdocuments
|
|
259
|
+
);
|
|
260
|
+
var PosterUsageTypeSchema = new MongooseSchema3(
|
|
261
|
+
{
|
|
262
|
+
count: { default: 0, required: false, type: Number },
|
|
263
|
+
month: { required: false, type: String }
|
|
264
|
+
},
|
|
265
|
+
{ _id: false }
|
|
266
|
+
// Prevents Mongoose from creating an additional _id field for subdocuments
|
|
267
|
+
);
|
|
268
|
+
var partnersSchema = new MongooseSchema3(
|
|
269
|
+
{
|
|
270
|
+
email: { required: false, type: String },
|
|
271
|
+
licence: {
|
|
272
|
+
enum: Object.values(import_cluemart_shared3.EnumUserLicence),
|
|
273
|
+
required: false,
|
|
274
|
+
type: String
|
|
275
|
+
},
|
|
276
|
+
resourceId: {
|
|
277
|
+
required: false,
|
|
278
|
+
type: String
|
|
279
|
+
},
|
|
280
|
+
resourceType: {
|
|
281
|
+
enum: Object.values(import_cluemart_shared3.EnumResourceType),
|
|
282
|
+
required: false,
|
|
283
|
+
type: String
|
|
284
|
+
}
|
|
285
|
+
},
|
|
286
|
+
{ _id: false }
|
|
287
|
+
// Prevents Mongoose from creating an additional _id field for subdocuments
|
|
288
|
+
);
|
|
289
|
+
var ContactDetailsSchema = new MongooseSchema3(
|
|
290
|
+
{
|
|
291
|
+
email: { required: false, type: String },
|
|
292
|
+
landlinePhone: { required: false, type: String },
|
|
293
|
+
mobilePhone: { required: false, type: String }
|
|
294
|
+
},
|
|
295
|
+
{ _id: false }
|
|
296
|
+
// Prevents Mongoose from creating an additional _id field for subdocuments
|
|
297
|
+
);
|
|
298
|
+
var termsAgreementSchema = new MongooseSchema3(
|
|
299
|
+
{
|
|
300
|
+
appBuildNumber: { required: true, type: String },
|
|
301
|
+
appId: { required: true, type: String },
|
|
302
|
+
appVersion: { required: true, type: String },
|
|
303
|
+
brand: { required: true, type: String },
|
|
304
|
+
deviceName: { required: true, type: String },
|
|
305
|
+
installationId: { required: true, type: String },
|
|
306
|
+
manufacturer: { required: true, type: String },
|
|
307
|
+
modelName: { required: true, type: String },
|
|
308
|
+
osName: { required: true, type: String },
|
|
309
|
+
osVersion: { required: true, type: String },
|
|
310
|
+
termVersion: { required: true, type: String },
|
|
311
|
+
timestamp: { required: true, type: String }
|
|
312
|
+
},
|
|
313
|
+
{ _id: false }
|
|
314
|
+
);
|
|
315
|
+
var resourceRelationsSchema = new MongooseSchema3(
|
|
316
|
+
{
|
|
317
|
+
relationDates: {
|
|
318
|
+
default: [],
|
|
319
|
+
required: false,
|
|
320
|
+
type: [relationDatesSchema]
|
|
321
|
+
},
|
|
322
|
+
relationId: {
|
|
323
|
+
ref: "Relation",
|
|
324
|
+
required: false,
|
|
325
|
+
type: import_mongoose3.default.Schema.Types.ObjectId
|
|
326
|
+
}
|
|
327
|
+
},
|
|
328
|
+
{ _id: false }
|
|
329
|
+
);
|
|
330
|
+
var baseResourceFields = {
|
|
331
|
+
active: { default: false, required: true, type: Boolean },
|
|
332
|
+
adIds: {
|
|
333
|
+
ref: "Ad",
|
|
334
|
+
required: false,
|
|
335
|
+
type: [import_mongoose3.default.Schema.Types.ObjectId]
|
|
336
|
+
},
|
|
337
|
+
contactDetails: ContactDetailsSchema,
|
|
338
|
+
cover: ResourceImageTypeSchema,
|
|
339
|
+
deletedAt: { default: null, required: false, type: Date },
|
|
340
|
+
description: { required: true, type: String },
|
|
341
|
+
images: [ResourceImageTypeSchema],
|
|
342
|
+
logo: ResourceImageTypeSchema,
|
|
343
|
+
name: { required: true, type: String },
|
|
344
|
+
owner: OwnerTypeSchema,
|
|
345
|
+
partners: {
|
|
346
|
+
required: false,
|
|
347
|
+
type: [partnersSchema]
|
|
348
|
+
},
|
|
349
|
+
posterUsage: PosterUsageTypeSchema,
|
|
350
|
+
promoCodes: { required: false, type: [String] },
|
|
351
|
+
region: { required: true, type: String },
|
|
352
|
+
relations: {
|
|
353
|
+
default: [],
|
|
354
|
+
required: false,
|
|
355
|
+
type: [resourceRelationsSchema]
|
|
356
|
+
},
|
|
357
|
+
socialMedia: [SocialMediaTypeSchema],
|
|
358
|
+
termsAgreement: termsAgreementSchema
|
|
359
|
+
};
|
|
360
|
+
|
|
361
|
+
// src/mongoose/Ad.ts
|
|
362
|
+
var MongooseSchema4 = import_mongoose4.default.Schema;
|
|
363
|
+
var schema2 = new MongooseSchema4(
|
|
364
|
+
{
|
|
365
|
+
active: { default: true, type: Boolean },
|
|
366
|
+
adStyle: {
|
|
367
|
+
default: import_cluemart_shared4.EnumAdStyle.BLOOM,
|
|
368
|
+
enum: Object.values(import_cluemart_shared4.EnumAdStyle),
|
|
369
|
+
required: true,
|
|
370
|
+
type: String
|
|
371
|
+
},
|
|
372
|
+
adType: {
|
|
373
|
+
default: import_cluemart_shared4.EnumAdType.SPONSORED,
|
|
374
|
+
enum: Object.values(import_cluemart_shared4.EnumAdType),
|
|
375
|
+
required: true,
|
|
376
|
+
type: String
|
|
377
|
+
},
|
|
378
|
+
// TODO: similar to ViewSchema
|
|
379
|
+
clicks: { default: 0, required: true, type: Number },
|
|
380
|
+
clui: { required: false, type: String },
|
|
381
|
+
end: { required: true, type: Date },
|
|
382
|
+
// TODO: similar to ViewSchema
|
|
383
|
+
impressions: { default: 0, required: true, type: Number },
|
|
384
|
+
resourceCover: { required: true, type: String },
|
|
385
|
+
resourceDescription: { required: true, type: String },
|
|
386
|
+
resourceId: { required: true, type: String },
|
|
387
|
+
resourceLogo: { required: false, type: String },
|
|
388
|
+
resourceName: { required: true, type: String },
|
|
389
|
+
resourceRegion: { required: true, type: String },
|
|
390
|
+
resourceType: {
|
|
391
|
+
enum: Object.values(import_cluemart_shared4.EnumResourceType),
|
|
392
|
+
required: true,
|
|
393
|
+
type: String
|
|
394
|
+
},
|
|
395
|
+
showOn: {
|
|
396
|
+
default: import_cluemart_shared4.EnumAdShowOn.FRONT_PAGE,
|
|
397
|
+
enum: Object.values(import_cluemart_shared4.EnumAdShowOn),
|
|
398
|
+
required: true,
|
|
399
|
+
type: String
|
|
400
|
+
},
|
|
401
|
+
socialMedia: [SocialMediaTypeSchema],
|
|
402
|
+
start: { required: true, type: Date },
|
|
403
|
+
status: {
|
|
404
|
+
default: import_cluemart_shared4.EnumAdStatus.ACTIVE,
|
|
405
|
+
enum: Object.values(import_cluemart_shared4.EnumAdStatus),
|
|
406
|
+
required: true,
|
|
407
|
+
type: String
|
|
408
|
+
},
|
|
409
|
+
targetRegion: { required: false, type: String }
|
|
410
|
+
},
|
|
411
|
+
{
|
|
412
|
+
timestamps: true
|
|
413
|
+
}
|
|
414
|
+
);
|
|
415
|
+
schema2.index({
|
|
416
|
+
end: 1,
|
|
417
|
+
start: 1,
|
|
418
|
+
status: 1
|
|
419
|
+
});
|
|
420
|
+
var AdModel = import_mongoose4.default.models.Ad || import_mongoose4.default.model("Ad", schema2);
|
|
421
|
+
|
|
422
|
+
// src/mongoose/Chat.ts
|
|
423
|
+
var import_cluemart_shared5 = require("@timardex/cluemart-shared");
|
|
424
|
+
var import_mongoose5 = __toESM(require("mongoose"));
|
|
425
|
+
var MongooseSchema5 = import_mongoose5.default.Schema;
|
|
426
|
+
var MessageSchema = new MongooseSchema5(
|
|
427
|
+
{
|
|
428
|
+
content: { required: true, type: String },
|
|
429
|
+
senderAvatar: { required: false, type: String },
|
|
430
|
+
senderId: {
|
|
431
|
+
ref: "User",
|
|
432
|
+
required: true,
|
|
433
|
+
type: import_mongoose5.default.Schema.Types.ObjectId
|
|
434
|
+
},
|
|
435
|
+
senderName: { required: true, type: String }
|
|
436
|
+
},
|
|
437
|
+
{ timestamps: true }
|
|
438
|
+
);
|
|
439
|
+
var ParticipantSchema = new MongooseSchema5(
|
|
440
|
+
{
|
|
441
|
+
active: { default: true, required: true, type: Boolean },
|
|
442
|
+
email: { required: true, type: String },
|
|
443
|
+
userId: {
|
|
444
|
+
ref: "User",
|
|
445
|
+
required: true,
|
|
446
|
+
type: import_mongoose5.default.Schema.Types.ObjectId
|
|
447
|
+
}
|
|
448
|
+
},
|
|
449
|
+
{ _id: false }
|
|
450
|
+
// Prevents Mongoose from creating an additional _id field for subdocuments
|
|
451
|
+
);
|
|
452
|
+
var ChatSchema = new MongooseSchema5(
|
|
453
|
+
{
|
|
454
|
+
active: { default: true, required: true, type: Boolean },
|
|
455
|
+
chatName: { required: true, type: String },
|
|
456
|
+
chatType: {
|
|
457
|
+
enum: Object.values(import_cluemart_shared5.EnumChatType),
|
|
458
|
+
required: true,
|
|
459
|
+
type: String
|
|
460
|
+
},
|
|
461
|
+
deletedAt: { default: null, required: false, type: Date },
|
|
462
|
+
messages: [MessageSchema],
|
|
463
|
+
participants: [ParticipantSchema],
|
|
464
|
+
resourceInfo: {
|
|
465
|
+
eventId: {
|
|
466
|
+
ref: "Event",
|
|
467
|
+
required: false,
|
|
468
|
+
type: import_mongoose5.default.Schema.Types.ObjectId
|
|
469
|
+
},
|
|
470
|
+
vendorId: {
|
|
471
|
+
ref: "Vendor",
|
|
472
|
+
required: false,
|
|
473
|
+
type: import_mongoose5.default.Schema.Types.ObjectId
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
},
|
|
477
|
+
{
|
|
478
|
+
timestamps: true
|
|
479
|
+
}
|
|
480
|
+
);
|
|
481
|
+
var ChatModel = import_mongoose5.default.models.Chat || import_mongoose5.default.model("Chat", ChatSchema);
|
|
482
|
+
|
|
483
|
+
// src/mongoose/Notification.ts
|
|
484
|
+
var import_cluemart_shared6 = require("@timardex/cluemart-shared");
|
|
485
|
+
var import_mongoose6 = __toESM(require("mongoose"));
|
|
486
|
+
var MongooseSchema6 = import_mongoose6.default.Schema;
|
|
487
|
+
var schema3 = new MongooseSchema6(
|
|
488
|
+
{
|
|
489
|
+
data: {
|
|
490
|
+
resourceId: { required: true, type: String },
|
|
491
|
+
resourceName: { required: true, type: String },
|
|
492
|
+
resourceType: {
|
|
493
|
+
enum: Object.values(import_cluemart_shared6.EnumNotificationResourceType),
|
|
494
|
+
required: true,
|
|
495
|
+
type: String
|
|
496
|
+
}
|
|
497
|
+
},
|
|
498
|
+
isRead: { default: false, index: true, required: true, type: Boolean },
|
|
499
|
+
message: { required: true, type: String },
|
|
500
|
+
title: { required: true, type: String },
|
|
501
|
+
type: {
|
|
502
|
+
default: import_cluemart_shared6.EnumNotificationType.SYSTEM,
|
|
503
|
+
enum: Object.values(import_cluemart_shared6.EnumNotificationType),
|
|
504
|
+
required: true,
|
|
505
|
+
type: String
|
|
506
|
+
},
|
|
507
|
+
userId: {
|
|
508
|
+
ref: "User",
|
|
509
|
+
required: true,
|
|
510
|
+
type: import_mongoose6.default.Schema.Types.ObjectId
|
|
511
|
+
}
|
|
512
|
+
},
|
|
513
|
+
{ timestamps: true }
|
|
514
|
+
);
|
|
515
|
+
schema3.index({ isRead: 1, userId: 1 });
|
|
516
|
+
schema3.index({ createdAt: -1, userId: 1 });
|
|
517
|
+
var NotificationModel = import_mongoose6.default.models.Notification || import_mongoose6.default.model("Notification", schema3);
|
|
518
|
+
|
|
519
|
+
// src/mongoose/PushToken.ts
|
|
520
|
+
var import_enums = require("@timardex/cluemart-shared/enums");
|
|
521
|
+
var import_mongoose7 = __toESM(require("mongoose"));
|
|
522
|
+
var MongooseSchema7 = import_mongoose7.default.Schema;
|
|
523
|
+
var schema4 = new MongooseSchema7(
|
|
524
|
+
{
|
|
525
|
+
platform: {
|
|
526
|
+
enum: Object.values(import_enums.EnumOSPlatform),
|
|
527
|
+
required: true,
|
|
528
|
+
type: String
|
|
529
|
+
},
|
|
530
|
+
token: { required: true, type: String },
|
|
531
|
+
userId: { required: true, type: import_mongoose7.default.Schema.Types.ObjectId }
|
|
532
|
+
},
|
|
533
|
+
{ timestamps: true }
|
|
534
|
+
);
|
|
535
|
+
var PushTokenModel = import_mongoose7.default.models.PushToken || import_mongoose7.default.model("PushToken", schema4);
|
|
536
|
+
|
|
537
|
+
// src/mongoose/ResourceActivity.ts
|
|
538
|
+
var import_cluemart_shared7 = require("@timardex/cluemart-shared");
|
|
539
|
+
var import_mongoose8 = __toESM(require("mongoose"));
|
|
540
|
+
var MongooseSchema8 = import_mongoose8.default.Schema;
|
|
541
|
+
var ActivitySchema = new MongooseSchema8(
|
|
542
|
+
{
|
|
543
|
+
activityType: {
|
|
544
|
+
enum: Object.values(import_cluemart_shared7.EnumActivity),
|
|
545
|
+
required: true,
|
|
546
|
+
type: String
|
|
547
|
+
},
|
|
548
|
+
location: {
|
|
549
|
+
coordinates: {
|
|
550
|
+
required: false,
|
|
551
|
+
type: [Number]
|
|
552
|
+
},
|
|
553
|
+
type: {
|
|
554
|
+
default: "Point",
|
|
555
|
+
enum: ["Point"],
|
|
556
|
+
required: false,
|
|
557
|
+
type: String
|
|
558
|
+
}
|
|
559
|
+
},
|
|
560
|
+
startDate: { required: false, type: String },
|
|
561
|
+
startTime: { required: false, type: String },
|
|
562
|
+
timestamp: { default: Date.now, type: Date },
|
|
563
|
+
userAgent: {
|
|
564
|
+
enum: Object.values(import_cluemart_shared7.EnumOSPlatform),
|
|
565
|
+
required: true,
|
|
566
|
+
type: String
|
|
567
|
+
},
|
|
568
|
+
userId: { required: false, type: String }
|
|
569
|
+
},
|
|
570
|
+
{ _id: false }
|
|
571
|
+
);
|
|
572
|
+
var schema5 = new MongooseSchema8(
|
|
573
|
+
{
|
|
574
|
+
activity: { default: [], type: [ActivitySchema] },
|
|
575
|
+
resourceId: { required: true, type: String },
|
|
576
|
+
resourceType: {
|
|
577
|
+
enum: Object.values(import_cluemart_shared7.EnumResourceType),
|
|
578
|
+
required: true,
|
|
579
|
+
type: String
|
|
580
|
+
}
|
|
581
|
+
},
|
|
582
|
+
{ timestamps: true }
|
|
583
|
+
);
|
|
584
|
+
schema5.index({ resourceId: 1, resourceType: 1 }, { unique: true });
|
|
585
|
+
schema5.index({ "views.location": "2dsphere" });
|
|
586
|
+
var ResourceActivityModel = import_mongoose8.default.models.ResourceActivity || import_mongoose8.default.model("ResourceActivity", schema5);
|
|
587
|
+
|
|
588
|
+
// src/mongoose/Testers.ts
|
|
589
|
+
var import_cluemart_shared8 = require("@timardex/cluemart-shared");
|
|
590
|
+
var import_mongoose9 = __toESM(require("mongoose"));
|
|
591
|
+
var MongooseSchema9 = import_mongoose9.default.Schema;
|
|
592
|
+
var TesterSchema = new MongooseSchema9(
|
|
593
|
+
{
|
|
594
|
+
active: { default: false, required: true, type: Boolean },
|
|
595
|
+
categories: [CategorySchema],
|
|
596
|
+
companyName: { required: true, type: String },
|
|
597
|
+
email: { required: true, type: String },
|
|
598
|
+
firstName: { required: true, type: String },
|
|
599
|
+
lastName: { required: true, type: String },
|
|
600
|
+
osType: {
|
|
601
|
+
enum: Object.values(import_cluemart_shared8.EnumOSPlatform),
|
|
602
|
+
required: true,
|
|
603
|
+
type: String
|
|
604
|
+
},
|
|
605
|
+
region: { required: true, type: String },
|
|
606
|
+
resourceType: {
|
|
607
|
+
enum: Object.values(import_cluemart_shared8.EnumResourceType),
|
|
608
|
+
required: true,
|
|
609
|
+
type: String
|
|
610
|
+
}
|
|
611
|
+
},
|
|
612
|
+
{
|
|
613
|
+
timestamps: true
|
|
614
|
+
}
|
|
615
|
+
);
|
|
616
|
+
var TesterModel = import_mongoose9.default.models.Tester || import_mongoose9.default.model("Tester", TesterSchema);
|
|
617
|
+
|
|
618
|
+
// src/mongoose/User.ts
|
|
619
|
+
var import_cluemart_shared9 = require("@timardex/cluemart-shared");
|
|
620
|
+
var import_mongoose10 = __toESM(require("mongoose"));
|
|
621
|
+
var MongooseSchema10 = import_mongoose10.default.Schema;
|
|
622
|
+
var userActivityEventSchema = new MongooseSchema10(
|
|
623
|
+
{
|
|
624
|
+
resourceId: {
|
|
625
|
+
ref: "Event",
|
|
626
|
+
required: false,
|
|
627
|
+
type: import_mongoose10.default.Schema.Types.ObjectId
|
|
628
|
+
},
|
|
629
|
+
startDate: { required: false, type: String },
|
|
630
|
+
startTime: { required: false, type: String }
|
|
631
|
+
},
|
|
632
|
+
{ _id: false }
|
|
633
|
+
);
|
|
634
|
+
var userActivityFavouritesSchema = new MongooseSchema10(
|
|
635
|
+
{
|
|
636
|
+
events: {
|
|
637
|
+
ref: "Event",
|
|
638
|
+
required: false,
|
|
639
|
+
type: [import_mongoose10.default.Schema.Types.ObjectId]
|
|
640
|
+
},
|
|
641
|
+
vendors: {
|
|
642
|
+
ref: "Vendor",
|
|
643
|
+
required: false,
|
|
644
|
+
type: [import_mongoose10.default.Schema.Types.ObjectId]
|
|
645
|
+
}
|
|
646
|
+
},
|
|
647
|
+
{ _id: false }
|
|
648
|
+
);
|
|
649
|
+
var schema6 = new MongooseSchema10(
|
|
650
|
+
{
|
|
651
|
+
active: { default: false, required: true, type: Boolean },
|
|
652
|
+
avatar: ResourceImageTypeSchema,
|
|
653
|
+
deletedAt: { default: null, required: false, type: Date },
|
|
654
|
+
email: { required: true, type: String },
|
|
655
|
+
events: {
|
|
656
|
+
ref: "Event",
|
|
657
|
+
required: false,
|
|
658
|
+
type: [import_mongoose10.default.Schema.Types.ObjectId]
|
|
659
|
+
},
|
|
660
|
+
firstName: { required: true, type: String },
|
|
661
|
+
isTester: { default: false, required: false, type: Boolean },
|
|
662
|
+
lastName: { required: true, type: String },
|
|
663
|
+
licences: {
|
|
664
|
+
enum: Object.values(import_cluemart_shared9.EnumUserLicence),
|
|
665
|
+
required: false,
|
|
666
|
+
type: [String]
|
|
667
|
+
},
|
|
668
|
+
partners: {
|
|
669
|
+
required: false,
|
|
670
|
+
type: [partnersSchema]
|
|
671
|
+
},
|
|
672
|
+
password: { required: true, type: String },
|
|
673
|
+
platform: {
|
|
674
|
+
enum: Object.values(import_cluemart_shared9.EnumOSPlatform),
|
|
675
|
+
required: false,
|
|
676
|
+
type: String
|
|
677
|
+
},
|
|
678
|
+
preferredRegion: {
|
|
679
|
+
required: true,
|
|
680
|
+
type: String
|
|
681
|
+
},
|
|
682
|
+
refreshToken: {
|
|
683
|
+
required: false,
|
|
684
|
+
type: String
|
|
685
|
+
},
|
|
686
|
+
role: {
|
|
687
|
+
default: import_cluemart_shared9.EnumUserRole.CUSTOMER,
|
|
688
|
+
enum: Object.values(import_cluemart_shared9.EnumUserRole),
|
|
689
|
+
required: true,
|
|
690
|
+
type: String
|
|
691
|
+
},
|
|
692
|
+
termsAgreement: termsAgreementSchema,
|
|
693
|
+
userActivity: {
|
|
694
|
+
favourites: {
|
|
695
|
+
default: () => ({ events: [], vendors: [] }),
|
|
696
|
+
type: userActivityFavouritesSchema
|
|
697
|
+
},
|
|
698
|
+
going: {
|
|
699
|
+
events: [userActivityEventSchema]
|
|
700
|
+
},
|
|
701
|
+
interested: {
|
|
702
|
+
events: [userActivityEventSchema]
|
|
703
|
+
},
|
|
704
|
+
present: {
|
|
705
|
+
events: [userActivityEventSchema]
|
|
706
|
+
}
|
|
707
|
+
},
|
|
708
|
+
vendor: {
|
|
709
|
+
ref: "Vendor",
|
|
710
|
+
required: false,
|
|
711
|
+
type: import_mongoose10.default.Schema.Types.ObjectId
|
|
712
|
+
}
|
|
713
|
+
},
|
|
714
|
+
{ timestamps: true }
|
|
715
|
+
);
|
|
716
|
+
schema6.index({ "partners.email": 1 });
|
|
717
|
+
var UserModel = import_mongoose10.default.models.User || import_mongoose10.default.model("User", schema6);
|
|
718
|
+
|
|
719
|
+
// src/mongoose/VerificationToken.ts
|
|
720
|
+
var import_mongoose11 = __toESM(require("mongoose"));
|
|
721
|
+
var MongooseSchema11 = import_mongoose11.default.Schema;
|
|
722
|
+
var schema7 = new MongooseSchema11(
|
|
723
|
+
{
|
|
724
|
+
createdAt: {
|
|
725
|
+
default: Date.now,
|
|
726
|
+
expires: 24 * 60 * 60,
|
|
727
|
+
// 24 hours in seconds (MongoDB TTL expects seconds)
|
|
728
|
+
required: true,
|
|
729
|
+
type: Date
|
|
730
|
+
},
|
|
731
|
+
// Token expires after 1 day
|
|
732
|
+
email: { required: true, type: String },
|
|
733
|
+
verificationToken: { required: true, type: String }
|
|
734
|
+
},
|
|
735
|
+
{ timestamps: true }
|
|
736
|
+
);
|
|
737
|
+
var VerificationTokenModel = import_mongoose11.default.models.VerificationToken || import_mongoose11.default.model("VerificationToken", schema7);
|
|
738
|
+
|
|
739
|
+
// src/mongoose/vendor/Vendor.ts
|
|
740
|
+
var import_cluemart_shared10 = require("@timardex/cluemart-shared");
|
|
741
|
+
var import_mongoose12 = __toESM(require("mongoose"));
|
|
742
|
+
var MongooseSchema12 = import_mongoose12.default.Schema;
|
|
743
|
+
var MenuTypeSchema = new MongooseSchema12(
|
|
744
|
+
{
|
|
745
|
+
description: { required: false, type: String },
|
|
746
|
+
name: { required: false, type: String },
|
|
747
|
+
price: { required: false, type: Number },
|
|
748
|
+
productGroups: { required: false, type: [String] }
|
|
749
|
+
},
|
|
750
|
+
{ _id: false }
|
|
751
|
+
// Prevents Mongoose from creating an additional _id field for subdocuments
|
|
752
|
+
);
|
|
753
|
+
var LocationsSchema = new MongooseSchema12(
|
|
754
|
+
{
|
|
755
|
+
dateTime: {
|
|
756
|
+
endDate: { required: false, type: String },
|
|
757
|
+
endTime: { required: false, type: String },
|
|
758
|
+
startDate: { required: false, type: String },
|
|
759
|
+
startTime: { required: false, type: String }
|
|
760
|
+
},
|
|
761
|
+
description: { required: false, type: String },
|
|
762
|
+
location: {
|
|
763
|
+
city: { required: false, type: String },
|
|
764
|
+
coordinates: {
|
|
765
|
+
required: false,
|
|
766
|
+
type: [Number]
|
|
767
|
+
// [longitude, latitude]
|
|
768
|
+
},
|
|
769
|
+
country: { required: false, type: String },
|
|
770
|
+
fullAddress: { required: false, type: String },
|
|
771
|
+
latitude: { required: false, type: Number },
|
|
772
|
+
longitude: { required: false, type: Number },
|
|
773
|
+
region: { required: false, type: String },
|
|
774
|
+
type: { required: false, type: String }
|
|
775
|
+
// Mongoose GeoJSON type
|
|
776
|
+
}
|
|
777
|
+
},
|
|
778
|
+
{ _id: false }
|
|
779
|
+
// Prevents Mongoose from creating an additional _id field for subdocuments
|
|
780
|
+
);
|
|
781
|
+
var schema8 = new MongooseSchema12(
|
|
782
|
+
{
|
|
783
|
+
...baseResourceFields,
|
|
784
|
+
// Importing base resource fields from global.ts
|
|
785
|
+
availability: {
|
|
786
|
+
corporate: { default: false, required: false, type: Boolean },
|
|
787
|
+
private: { default: false, required: false, type: Boolean },
|
|
788
|
+
school: { default: false, required: false, type: Boolean }
|
|
789
|
+
},
|
|
790
|
+
categories: [CategorySchema],
|
|
791
|
+
locations: [LocationsSchema],
|
|
792
|
+
multiLocation: { required: true, type: Boolean },
|
|
793
|
+
products: [MenuTypeSchema],
|
|
794
|
+
vendorInfoId: {
|
|
795
|
+
ref: "VendorInfo",
|
|
796
|
+
required: false,
|
|
797
|
+
type: import_mongoose12.default.Schema.Types.ObjectId
|
|
798
|
+
},
|
|
799
|
+
vendorType: {
|
|
800
|
+
enum: Object.values(import_cluemart_shared10.EnumVendorType),
|
|
801
|
+
required: true,
|
|
802
|
+
type: String
|
|
803
|
+
}
|
|
804
|
+
},
|
|
805
|
+
{ timestamps: true }
|
|
806
|
+
);
|
|
807
|
+
schema8.index({ name: 1 });
|
|
808
|
+
schema8.index({ description: 1 });
|
|
809
|
+
schema8.index({ region: 1 });
|
|
810
|
+
schema8.index({ "categories.name": 1 });
|
|
811
|
+
schema8.index({ "partners.email": 1 });
|
|
812
|
+
var VendorModel = import_mongoose12.default.models.Vendor || import_mongoose12.default.model("Vendor", schema8);
|
|
813
|
+
|
|
814
|
+
// src/mongoose/vendor/VendorInfo.ts
|
|
815
|
+
var import_cluemart_shared11 = require("@timardex/cluemart-shared");
|
|
816
|
+
var import_mongoose13 = __toESM(require("mongoose"));
|
|
817
|
+
var MongooseSchema13 = import_mongoose13.default.Schema;
|
|
818
|
+
var AttributesSchema = new MongooseSchema13(
|
|
819
|
+
{
|
|
820
|
+
details: { required: false, type: String },
|
|
821
|
+
isRequired: { default: false, required: true, type: Boolean }
|
|
822
|
+
},
|
|
823
|
+
{ _id: false }
|
|
824
|
+
);
|
|
825
|
+
var schema9 = new MongooseSchema13(
|
|
826
|
+
{
|
|
827
|
+
compliance: {
|
|
828
|
+
foodBeverageLicense: { default: false, required: false, type: Boolean },
|
|
829
|
+
liabilityInsurance: { default: false, required: false, type: Boolean }
|
|
830
|
+
},
|
|
831
|
+
documents: [ResourceImageTypeSchema],
|
|
832
|
+
product: {
|
|
833
|
+
foodFlavors: {
|
|
834
|
+
enum: Object.values(import_cluemart_shared11.EnumFoodFlavor),
|
|
835
|
+
required: true,
|
|
836
|
+
type: [String]
|
|
837
|
+
},
|
|
838
|
+
packaging: { required: true, type: [String] },
|
|
839
|
+
priceRange: {
|
|
840
|
+
max: { required: true, type: Number },
|
|
841
|
+
min: { required: true, type: Number }
|
|
842
|
+
},
|
|
843
|
+
producedIn: { required: true, type: [String] }
|
|
844
|
+
},
|
|
845
|
+
requirements: {
|
|
846
|
+
electricity: AttributesSchema,
|
|
847
|
+
gazebo: AttributesSchema,
|
|
848
|
+
table: AttributesSchema
|
|
849
|
+
},
|
|
850
|
+
stallInfo: {
|
|
851
|
+
size: {
|
|
852
|
+
depth: { required: true, type: Number },
|
|
853
|
+
width: { required: true, type: Number }
|
|
854
|
+
}
|
|
855
|
+
},
|
|
856
|
+
vendorId: {
|
|
857
|
+
ref: "Vendor",
|
|
858
|
+
required: true,
|
|
859
|
+
type: import_mongoose13.default.Schema.Types.ObjectId
|
|
860
|
+
}
|
|
861
|
+
},
|
|
862
|
+
{ timestamps: true }
|
|
863
|
+
);
|
|
864
|
+
var VendorInfoModel = import_mongoose13.default.models.VendorInfo || import_mongoose13.default.model("VendorInfo", schema9);
|
|
865
|
+
|
|
866
|
+
// src/mongoose/event/Event.ts
|
|
867
|
+
var import_cluemart_shared12 = require("@timardex/cluemart-shared");
|
|
868
|
+
var import_mongoose14 = __toESM(require("mongoose"));
|
|
869
|
+
var MongooseSchema14 = import_mongoose14.default.Schema;
|
|
870
|
+
var locationsSchema = new MongooseSchema14(
|
|
871
|
+
{
|
|
872
|
+
city: { required: true, type: String },
|
|
873
|
+
coordinates: {
|
|
874
|
+
required: true,
|
|
875
|
+
type: [Number]
|
|
876
|
+
// [longitude, latitude]
|
|
877
|
+
},
|
|
878
|
+
country: { required: true, type: String },
|
|
879
|
+
fullAddress: { required: true, type: String },
|
|
880
|
+
latitude: { required: true, type: Number },
|
|
881
|
+
longitude: { required: true, type: Number },
|
|
882
|
+
region: { required: true, type: String },
|
|
883
|
+
type: {
|
|
884
|
+
default: "Point",
|
|
885
|
+
enum: ["Point"],
|
|
886
|
+
required: true,
|
|
887
|
+
type: String
|
|
888
|
+
}
|
|
889
|
+
},
|
|
890
|
+
{ _id: false }
|
|
891
|
+
// Prevents Mongoose from creating an additional _id field for subdocuments
|
|
892
|
+
);
|
|
893
|
+
var dateTimeSchema2 = new MongooseSchema14(
|
|
894
|
+
{
|
|
895
|
+
endDate: { required: true, type: String },
|
|
896
|
+
endTime: { required: true, type: String },
|
|
897
|
+
startDate: { required: true, type: String },
|
|
898
|
+
startTime: { required: true, type: String }
|
|
899
|
+
},
|
|
900
|
+
{ _id: false }
|
|
901
|
+
// Prevents Mongoose from creating an additional _id field for subdocuments
|
|
902
|
+
);
|
|
903
|
+
var schema10 = new MongooseSchema14(
|
|
904
|
+
{
|
|
905
|
+
...baseResourceFields,
|
|
906
|
+
// Importing base resource fields from global.ts
|
|
907
|
+
dateTime: [dateTimeSchema2],
|
|
908
|
+
eventInfoId: {
|
|
909
|
+
ref: "EventInfo",
|
|
910
|
+
required: false,
|
|
911
|
+
type: import_mongoose14.default.Schema.Types.ObjectId
|
|
912
|
+
},
|
|
913
|
+
eventType: {
|
|
914
|
+
enum: Object.values(import_cluemart_shared12.EnumEventType),
|
|
915
|
+
required: true,
|
|
916
|
+
type: String
|
|
917
|
+
},
|
|
918
|
+
location: {
|
|
919
|
+
required: true,
|
|
920
|
+
type: locationsSchema
|
|
921
|
+
},
|
|
922
|
+
nzbn: { required: true, type: String },
|
|
923
|
+
provider: { required: false, type: String },
|
|
924
|
+
rainOrShine: { required: true, type: Boolean },
|
|
925
|
+
tags: { required: true, type: [String] }
|
|
926
|
+
},
|
|
927
|
+
{ timestamps: true }
|
|
928
|
+
);
|
|
929
|
+
schema10.index({ name: 1 });
|
|
930
|
+
schema10.index({ description: 1 });
|
|
931
|
+
schema10.index({ region: 1 });
|
|
932
|
+
schema10.index({ location: "2dsphere" });
|
|
933
|
+
schema10.index({ tags: 1 });
|
|
934
|
+
schema10.index({ "partners.email": 1 });
|
|
935
|
+
var EventModel = import_mongoose14.default.models.Event || import_mongoose14.default.model("Event", schema10);
|
|
936
|
+
|
|
937
|
+
// src/service/database.ts
|
|
938
|
+
var import_mongoose15 = __toESM(require("mongoose"));
|
|
939
|
+
|
|
940
|
+
// src/service/timezonePlugin.ts
|
|
941
|
+
var import_dayjs = __toESM(require("dayjs"));
|
|
942
|
+
var import_timezone = __toESM(require("dayjs/plugin/timezone"));
|
|
943
|
+
var import_utc = __toESM(require("dayjs/plugin/utc"));
|
|
944
|
+
import_dayjs.default.extend(import_utc.default);
|
|
945
|
+
import_dayjs.default.extend(import_timezone.default);
|
|
946
|
+
function timezonePlugin(schema11) {
|
|
947
|
+
if (!schema11.get("timestamps")) return;
|
|
948
|
+
const transform = (_doc, ret) => {
|
|
949
|
+
if (ret.createdAt)
|
|
950
|
+
ret.createdAt = (0, import_dayjs.default)(ret.createdAt).tz("Pacific/Auckland").format();
|
|
951
|
+
if (ret.updatedAt)
|
|
952
|
+
ret.updatedAt = (0, import_dayjs.default)(ret.updatedAt).tz("Pacific/Auckland").format();
|
|
953
|
+
return ret;
|
|
954
|
+
};
|
|
955
|
+
schema11.set("toJSON", { transform });
|
|
956
|
+
schema11.set("toObject", { transform });
|
|
957
|
+
}
|
|
958
|
+
|
|
959
|
+
// src/service/database.ts
|
|
960
|
+
import_mongoose15.default.plugin(timezonePlugin);
|
|
961
|
+
var connectToDatabase = async ({
|
|
962
|
+
appName,
|
|
963
|
+
dbName,
|
|
964
|
+
dbPassword,
|
|
965
|
+
dbUser,
|
|
966
|
+
mongodbUri
|
|
967
|
+
}) => {
|
|
968
|
+
try {
|
|
969
|
+
const mongoUri = mongodbUri ? mongodbUri : (
|
|
970
|
+
// Fallback to MongoDB Atlas connection string
|
|
971
|
+
`mongodb+srv://${dbUser}:${dbPassword}@${dbName}.mongodb.net/?retryWrites=true&w=majority&appName=${appName}`
|
|
972
|
+
);
|
|
973
|
+
await import_mongoose15.default.connect(mongoUri);
|
|
974
|
+
const connectionType = mongodbUri ? "Local MongoDB" : "MongoDB Atlas";
|
|
975
|
+
console.log(
|
|
976
|
+
`${connectionType} connected from server/src/service/database.ts`
|
|
977
|
+
);
|
|
978
|
+
} catch (err) {
|
|
979
|
+
console.error("Error connecting to MongoDB:", err);
|
|
980
|
+
throw err;
|
|
981
|
+
}
|
|
982
|
+
};
|
|
983
|
+
|
|
984
|
+
// src/service/saveNotificationsInDb.ts
|
|
985
|
+
async function saveNotificationsInDb(payload) {
|
|
986
|
+
const { data, message, title, type, userIds } = payload;
|
|
987
|
+
try {
|
|
988
|
+
const notifications = userIds.map((userId) => ({
|
|
989
|
+
data,
|
|
990
|
+
isRead: false,
|
|
991
|
+
message,
|
|
992
|
+
title,
|
|
993
|
+
type,
|
|
994
|
+
userId
|
|
995
|
+
}));
|
|
996
|
+
await NotificationModel.insertMany(notifications);
|
|
997
|
+
console.log(
|
|
998
|
+
`Created ${notifications.length} notifications for ${userIds.length} users`
|
|
999
|
+
);
|
|
1000
|
+
return [...new Set(userIds)];
|
|
1001
|
+
} catch (error) {
|
|
1002
|
+
console.error("Failed to create notifications:", error);
|
|
1003
|
+
return [];
|
|
1004
|
+
}
|
|
1005
|
+
}
|
|
1006
|
+
|
|
1007
|
+
// src/service/sendPushNotifications.ts
|
|
1008
|
+
var import_expo_server_sdk = require("expo-server-sdk");
|
|
1009
|
+
var expo = new import_expo_server_sdk.Expo();
|
|
1010
|
+
function extractTokensFromMessage(message) {
|
|
1011
|
+
return Array.isArray(message.to) ? message.to : [message.to];
|
|
1012
|
+
}
|
|
1013
|
+
function createPushMessages({
|
|
1014
|
+
tokens,
|
|
1015
|
+
message,
|
|
1016
|
+
title,
|
|
1017
|
+
data
|
|
1018
|
+
}) {
|
|
1019
|
+
const messages = [];
|
|
1020
|
+
const invalidTokens = [];
|
|
1021
|
+
for (const token of tokens) {
|
|
1022
|
+
if (!import_expo_server_sdk.Expo.isExpoPushToken(token)) {
|
|
1023
|
+
invalidTokens.push(token);
|
|
1024
|
+
continue;
|
|
1025
|
+
}
|
|
1026
|
+
messages.push({
|
|
1027
|
+
body: message,
|
|
1028
|
+
data: { ...data },
|
|
1029
|
+
sound: "default",
|
|
1030
|
+
title,
|
|
1031
|
+
to: token
|
|
1032
|
+
});
|
|
1033
|
+
}
|
|
1034
|
+
return { invalidTokens, messages };
|
|
1035
|
+
}
|
|
1036
|
+
function processChunkResults(tickets, chunk) {
|
|
1037
|
+
let successCount = 0;
|
|
1038
|
+
const failedTokens = [];
|
|
1039
|
+
for (const [ticketIndex, ticket] of tickets.entries()) {
|
|
1040
|
+
if (ticket.status === "error") {
|
|
1041
|
+
const message = chunk[ticketIndex];
|
|
1042
|
+
if (message) {
|
|
1043
|
+
const tokens = extractTokensFromMessage(message);
|
|
1044
|
+
if (ticket.details?.error === "DeviceNotRegistered") {
|
|
1045
|
+
failedTokens.push(...tokens);
|
|
1046
|
+
}
|
|
1047
|
+
console.log("Push notification error", {
|
|
1048
|
+
error: ticket.details?.error,
|
|
1049
|
+
tokens
|
|
1050
|
+
});
|
|
1051
|
+
}
|
|
1052
|
+
} else {
|
|
1053
|
+
successCount++;
|
|
1054
|
+
}
|
|
1055
|
+
}
|
|
1056
|
+
return { failedTokens, successCount };
|
|
1057
|
+
}
|
|
1058
|
+
async function sendChunk(chunk, chunkIndex) {
|
|
1059
|
+
try {
|
|
1060
|
+
const tickets = await expo.sendPushNotificationsAsync(chunk);
|
|
1061
|
+
const { successCount, failedTokens } = processChunkResults(tickets, chunk);
|
|
1062
|
+
console.log(
|
|
1063
|
+
`Chunk ${chunkIndex + 1}: Sent ${successCount}/${chunk.length} notifications successfully`
|
|
1064
|
+
);
|
|
1065
|
+
return { failedTokens, successCount };
|
|
1066
|
+
} catch (error) {
|
|
1067
|
+
console.log("Error sending Expo push notification chunk", {
|
|
1068
|
+
chunkIndex,
|
|
1069
|
+
chunkSize: chunk.length,
|
|
1070
|
+
error: error instanceof Error ? error.message : String(error)
|
|
1071
|
+
});
|
|
1072
|
+
return { failedTokens: [], successCount: 0 };
|
|
1073
|
+
}
|
|
1074
|
+
}
|
|
1075
|
+
async function sendPushNotifications({
|
|
1076
|
+
data,
|
|
1077
|
+
message,
|
|
1078
|
+
title,
|
|
1079
|
+
userIds
|
|
1080
|
+
}) {
|
|
1081
|
+
const pushTokens = await PushTokenModel.find({ userId: { $in: userIds } });
|
|
1082
|
+
const expoTokens = pushTokens.map((token) => token.token);
|
|
1083
|
+
if (!data) return;
|
|
1084
|
+
const { messages, invalidTokens } = createPushMessages({
|
|
1085
|
+
data,
|
|
1086
|
+
message,
|
|
1087
|
+
title,
|
|
1088
|
+
tokens: expoTokens
|
|
1089
|
+
});
|
|
1090
|
+
if (invalidTokens.length > 0) {
|
|
1091
|
+
console.log(`Found ${invalidTokens.length} invalid push tokens`);
|
|
1092
|
+
}
|
|
1093
|
+
if (messages.length === 0) {
|
|
1094
|
+
console.log("No valid messages to send after filtering tokens");
|
|
1095
|
+
return;
|
|
1096
|
+
}
|
|
1097
|
+
const chunks = expo.chunkPushNotifications(messages);
|
|
1098
|
+
let totalSuccessCount = 0;
|
|
1099
|
+
const allFailedTokens = [];
|
|
1100
|
+
for (const [chunkIndex, chunk] of chunks.entries()) {
|
|
1101
|
+
const { successCount, failedTokens } = await sendChunk(
|
|
1102
|
+
chunk,
|
|
1103
|
+
chunkIndex + 1
|
|
1104
|
+
);
|
|
1105
|
+
totalSuccessCount += successCount;
|
|
1106
|
+
allFailedTokens.push(...failedTokens);
|
|
1107
|
+
}
|
|
1108
|
+
console.log(
|
|
1109
|
+
`Sent push notification to ${totalSuccessCount}/${messages.length} tokens across ${chunks.length} chunks`
|
|
1110
|
+
);
|
|
1111
|
+
if (allFailedTokens.length > 0) {
|
|
1112
|
+
console.log(`Found ${allFailedTokens.length} failed push tokens`);
|
|
1113
|
+
}
|
|
1114
|
+
}
|
|
1115
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
1116
|
+
0 && (module.exports = {
|
|
1117
|
+
AdModel,
|
|
1118
|
+
CategorySchema,
|
|
1119
|
+
ChatModel,
|
|
1120
|
+
EventInfoModel,
|
|
1121
|
+
EventModel,
|
|
1122
|
+
NotificationModel,
|
|
1123
|
+
ParticipantSchema,
|
|
1124
|
+
PushTokenModel,
|
|
1125
|
+
RelationModel,
|
|
1126
|
+
RelationTypeSchema,
|
|
1127
|
+
ResourceActivityModel,
|
|
1128
|
+
ResourceImageTypeSchema,
|
|
1129
|
+
SocialMediaTypeSchema,
|
|
1130
|
+
StallTypeSchema,
|
|
1131
|
+
TesterModel,
|
|
1132
|
+
UserModel,
|
|
1133
|
+
VendorInfoModel,
|
|
1134
|
+
VendorModel,
|
|
1135
|
+
VerificationTokenModel,
|
|
1136
|
+
baseResourceFields,
|
|
1137
|
+
connectToDatabase,
|
|
1138
|
+
partnersSchema,
|
|
1139
|
+
relationDatesSchema,
|
|
1140
|
+
saveNotificationsInDb,
|
|
1141
|
+
sendPushNotifications,
|
|
1142
|
+
termsAgreementSchema
|
|
1143
|
+
});
|
|
1144
|
+
//# sourceMappingURL=index.cjs.map
|