@lyxa.ai/core 1.0.78-debug.1 → 1.0.78-debug.3

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.
@@ -84,11 +84,21 @@ exports.Order = Order = __decorate([
84
84
  },
85
85
  options: { allowMixed: typegoose_1.Severity.ALLOW },
86
86
  }),
87
- (0, typegoose_1.pre)('save', async function (next) {
87
+ (0, typegoose_1.pre)('save', async function () {
88
88
  if (this.isNew && !this.orderId) {
89
- this.orderId = await generateOrderId();
89
+ const OrderModel = this.constructor;
90
+ const currentDate = getCurrentDateFormat();
91
+ const startOfDay = getStartOfDay();
92
+ const endOfDay = getEndOfDay();
93
+ const todayOrderCount = await OrderModel.countDocuments({
94
+ createdAt: {
95
+ $gte: startOfDay,
96
+ $lt: endOfDay
97
+ }
98
+ });
99
+ const orderSequence = incrementWithPadding(todayOrderCount, 6);
100
+ this.orderId = `${currentDate}${orderSequence}`;
90
101
  }
91
- next();
92
102
  }),
93
103
  (0, typegoose_1.Index)({ 'deliveryAddress.location': '2dsphere' }),
94
104
  (0, typegoose_1.Index)({
@@ -1 +1 @@
1
- {"version":3,"file":"order.model.js","sourceRoot":"/","sources":["libraries/mongo/models/order.model.ts"],"names":[],"mappings":"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","sourcesContent":["import { prop, Ref, modelOptions, Severity, Index, pre, getModelForClass } from '@typegoose/typegoose';\nimport { TimeStamps } from '@typegoose/typegoose/lib/defaultClasses';\nimport { OrderType } from '../../../utilities/enum';\nimport { OrderCancel } from './embedded/order-cancel.model';\nimport { User } from './user.model';\nimport { Rider } from './rider.model';\n\n@modelOptions({\n\tschemaOptions: {\n\t\tcollection: 'orders',\n\t\tdiscriminatorKey: 'orderType',\n\t\ttoJSON: { virtuals: true },\n\t\ttoObject: { virtuals: true },\n\t},\n\toptions: { allowMixed: Severity.ALLOW },\n})\n@pre<Order>('save', async function(next) {\n\t// Only generate orderId if it's a new document and orderId is not already set\n\tif (this.isNew && !this.orderId) {\n\t\tthis.orderId = await generateOrderId();\n\t}\n\tnext();\n})\n@Index({ 'deliveryAddress.location': '2dsphere' })\n@Index({\n\tshop: 1,\n\torderType: 1,\n\tstatus: 1,\n\t'statusTimeline.status': 1,\n\t'statusTimeline.timestamp': 1,\n\tdeletedAt: 1,\n})\n@Index({ shop: 1, orderType: 1, status: 1, 'finance.processedAt': 1, deletedAt: 1 })\n@Index({ shop: 1, orderType: 1, status: 1, 'deliveryAddress.location': 1, deletedAt: 1 })\n@Index({ shop: 1, orderType: 1, status: 1, deletedAt: 1 })\n@Index({\n\tparent: 1,\n\torderType: 1,\n\tstatus: 1,\n\t'statusTimeline.status': 1,\n\t'statusTimeline.timestamp': 1,\n\tdeletedAt: 1,\n})\n@Index({ parent: 1, orderType: 1, status: 1, 'finance.processedAt': 1, deletedAt: 1 })\nexport class Order extends TimeStamps {\n\t@prop({ required: true, type: String, unique: true })\n\tpublic orderId: string;\n\n\t@prop({ type: String, enum: OrderType, default: OrderType.REGULAR })\n\tpublic orderType?: OrderType;\n\n\t@prop({ required: true, ref: () => User })\n\tpublic user: Ref<User>;\n\n\t@prop({ ref: () => Rider, index: true })\n\tpublic rider?: Ref<Rider>;\n\n\t@prop({ type: Number })\n\tpublic deliveredTimeInMinutes: number;\n\n\t@prop({ type: String })\n\tpublic instruction?: string;\n\n\t@prop({ type: String })\n\tpublic note?: string;\n\n\t@prop({ type: Date })\n\tpublic scheduledFor?: Date;\n\n\t@prop({ type: () => OrderCancel })\n\tpublic orderCancel?: OrderCancel;\n\n\t@prop({ type: Boolean, default: false })\n\tpublic isLateOrder?: boolean;\n\n\t@prop({ type: Boolean, default: false })\n\tpublic isUrgentOrder?: boolean;\n}\n\nasync function generateOrderId(): Promise<string> {\n\tconst OrderModel = getModelForClass(Order);\n\t\n\t// Get current date in server time format\n\tconst currentDate = getCurrentDateFormat();\n\t\n\t// Count orders created today to get the sequence number\n\tconst startOfDay = getStartOfDay();\n\tconst endOfDay = getEndOfDay();\n\t\n\tconst todayOrderCount = await OrderModel.countDocuments({\n\t\tcreatedAt: {\n\t\t\t$gte: startOfDay,\n\t\t\t$lt: endOfDay\n\t\t}\n\t});\n\t\n\t// Increment and pad the count\n\tconst orderSequence = incrementWithPadding(todayOrderCount, 6);\n\t\n\treturn `${currentDate}${orderSequence}`;\n}\n\nfunction incrementWithPadding(\n\tvalue: number | string,\n\twidth: number = 1,\n\tpadChar: string = '0',\n\tincrement: number = 1\n): string {\n\tconst numericValue = typeof value === 'string' ? parseInt(value, 10) : value;\n\tconst incrementedValue = numericValue + increment;\n\treturn String(incrementedValue).padStart(width, padChar);\n}\n\nfunction getCurrentDateFormat(): string {\n\tconst now = new Date();\n\t\n\tconst day = String(now.getDate()).padStart(2, '0');\n\tconst month = String(now.getMonth() + 1).padStart(2, '0'); // getMonth() is 0-indexed\n\tconst year = String(now.getFullYear()).slice(-2); // Get last 2 digits of year\n\t\n\treturn `${day}${month}${year}`;\n}\n\nfunction getStartOfDay(): Date {\n\tconst now = new Date();\n\tconst startOfDay = new Date(now);\n\tstartOfDay.setHours(0, 0, 0, 0);\n\treturn startOfDay;\n}\n\nfunction getEndOfDay(): Date {\n\tconst now = new Date();\n\tconst endOfDay = new Date(now);\n\tendOfDay.setHours(23, 59, 59, 999);\n\treturn endOfDay;\n}\n"]}
1
+ {"version":3,"file":"order.model.js","sourceRoot":"/","sources":["libraries/mongo/models/order.model.ts"],"names":[],"mappings":"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","sourcesContent":["import { prop, Ref, modelOptions, Severity, Index, pre, getModelForClass } from '@typegoose/typegoose';\nimport { TimeStamps } from '@typegoose/typegoose/lib/defaultClasses';\nimport { OrderType } from '../../../utilities/enum';\nimport { OrderCancel } from './embedded/order-cancel.model';\nimport { User } from './user.model';\nimport { Rider } from './rider.model';\n\n@modelOptions({\n\tschemaOptions: {\n\t\tcollection: 'orders',\n\t\tdiscriminatorKey: 'orderType',\n\t\ttoJSON: { virtuals: true },\n\t\ttoObject: { virtuals: true },\n\t},\n\toptions: { allowMixed: Severity.ALLOW },\n})\n@pre<Order>('save', async function() {\n\t// Only generate orderId if it's a new document and orderId is not already set\n\tif (this.isNew && !this.orderId) {\n\t\t// Get the model constructor from the document\n\t\tconst OrderModel = this.constructor as any;\n\t\t\n\t\t// Get current date in server time format\n\t\tconst currentDate = getCurrentDateFormat();\n\t\t\n\t\t// Count orders created today to get the sequence number\n\t\tconst startOfDay = getStartOfDay();\n\t\tconst endOfDay = getEndOfDay();\n\t\t\n\t\tconst todayOrderCount = await OrderModel.countDocuments({\n\t\t\tcreatedAt: {\n\t\t\t\t$gte: startOfDay,\n\t\t\t\t$lt: endOfDay\n\t\t\t}\n\t\t});\n\t\t\n\t\t// Increment and pad the count\n\t\tconst orderSequence = incrementWithPadding(todayOrderCount, 6);\n\t\t\n\t\tthis.orderId = `${currentDate}${orderSequence}`;\n\t}\n})\n@Index({ 'deliveryAddress.location': '2dsphere' })\n@Index({\n\tshop: 1,\n\torderType: 1,\n\tstatus: 1,\n\t'statusTimeline.status': 1,\n\t'statusTimeline.timestamp': 1,\n\tdeletedAt: 1,\n})\n@Index({ shop: 1, orderType: 1, status: 1, 'finance.processedAt': 1, deletedAt: 1 })\n@Index({ shop: 1, orderType: 1, status: 1, 'deliveryAddress.location': 1, deletedAt: 1 })\n@Index({ shop: 1, orderType: 1, status: 1, deletedAt: 1 })\n@Index({\n\tparent: 1,\n\torderType: 1,\n\tstatus: 1,\n\t'statusTimeline.status': 1,\n\t'statusTimeline.timestamp': 1,\n\tdeletedAt: 1,\n})\n@Index({ parent: 1, orderType: 1, status: 1, 'finance.processedAt': 1, deletedAt: 1 })\nexport class Order extends TimeStamps {\n\t@prop({ required: true, type: String, unique: true })\n\tpublic orderId: string;\n\n\t@prop({ type: String, enum: OrderType, default: OrderType.REGULAR })\n\tpublic orderType?: OrderType;\n\n\t@prop({ required: true, ref: () => User })\n\tpublic user: Ref<User>;\n\n\t@prop({ ref: () => Rider, index: true })\n\tpublic rider?: Ref<Rider>;\n\n\t@prop({ type: Number })\n\tpublic deliveredTimeInMinutes: number;\n\n\t@prop({ type: String })\n\tpublic instruction?: string;\n\n\t@prop({ type: String })\n\tpublic note?: string;\n\n\t@prop({ type: Date })\n\tpublic scheduledFor?: Date;\n\n\t@prop({ type: () => OrderCancel })\n\tpublic orderCancel?: OrderCancel;\n\n\t@prop({ type: Boolean, default: false })\n\tpublic isLateOrder?: boolean;\n\n\t@prop({ type: Boolean, default: false })\n\tpublic isUrgentOrder?: boolean;\n}\n\nasync function generateOrderId(): Promise<string> {\n\tconst OrderModel = getModelForClass(Order);\n\t\n\t// Get current date in server time format\n\tconst currentDate = getCurrentDateFormat();\n\t\n\t// Count orders created today to get the sequence number\n\tconst startOfDay = getStartOfDay();\n\tconst endOfDay = getEndOfDay();\n\t\n\tconst todayOrderCount = await OrderModel.countDocuments({\n\t\tcreatedAt: {\n\t\t\t$gte: startOfDay,\n\t\t\t$lt: endOfDay\n\t\t}\n\t});\n\t\n\t// Increment and pad the count\n\tconst orderSequence = incrementWithPadding(todayOrderCount, 6);\n\t\n\treturn `${currentDate}${orderSequence}`;\n}\n\nfunction incrementWithPadding(\n\tvalue: number | string,\n\twidth: number = 1,\n\tpadChar: string = '0',\n\tincrement: number = 1\n): string {\n\tconst numericValue = typeof value === 'string' ? parseInt(value, 10) : value;\n\tconst incrementedValue = numericValue + increment;\n\treturn String(incrementedValue).padStart(width, padChar);\n}\n\nfunction getCurrentDateFormat(): string {\n\tconst now = new Date();\n\t\n\tconst day = String(now.getDate()).padStart(2, '0');\n\tconst month = String(now.getMonth() + 1).padStart(2, '0'); // getMonth() is 0-indexed\n\tconst year = String(now.getFullYear()).slice(-2); // Get last 2 digits of year\n\t\n\treturn `${day}${month}${year}`;\n}\n\nfunction getStartOfDay(): Date {\n\tconst now = new Date();\n\tconst startOfDay = new Date(now);\n\tstartOfDay.setHours(0, 0, 0, 0);\n\treturn startOfDay;\n}\n\nfunction getEndOfDay(): Date {\n\tconst now = new Date();\n\tconst endOfDay = new Date(now);\n\tendOfDay.setHours(23, 59, 59, 999);\n\treturn endOfDay;\n}"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lyxa.ai/core",
3
- "version": "1.0.78-debug.1",
3
+ "version": "1.0.78-debug.3",
4
4
  "description": "The Core system of the Lyxa services.",
5
5
  "author": "elie <42282499+Internalizable@users.noreply.github.com>",
6
6
  "license": "MIT",