feat: use mongoose-sequence to increment order number

This commit is contained in:
RustamRu
2025-02-02 14:51:55 +03:00
parent b3d4aa3c86
commit 759aad2d80
5 changed files with 55 additions and 21 deletions

View File

@@ -1,5 +1,6 @@
const { Schema, model } = require('mongoose')
const { orderStatus } = require('./const')
const { OrderNumberModel } = require('./order.number')
const schema = new Schema({
phone: {
@@ -28,9 +29,6 @@ const schema = new Schema({
required: true
},
orderNumber: {
type: String,
required: true,
unique: true
},
status: {
type: String,
@@ -52,6 +50,18 @@ const schema = new Schema({
},
})
schema.pre('save', async function (next) {
if (this.isNew) {
const counter = await OrderNumberModel.findOneAndUpdate(
{ _id: 'orderNumber' },
{ $inc: { sequenceValue: 1 } },
{ new: true, upsert: true }
)
this.orderNumber = counter.sequenceValue.toString()
}
next()
})
schema.set('toJSON', {
virtuals: true,
versionKey: false,

View File

@@ -0,0 +1,14 @@
const { Schema, model } = require('mongoose')
const schema = new Schema({
_id: {
type: String,
required: true,
},
sequenceValue: {
type: Number,
default: 0
}
})
exports.OrderNumberModel = model('dry-wash-order-number', schema)