corgi/src/models/IDCounter.ts

24 lines
606 B
TypeScript

import { getModelForClass, modelOptions, prop } from '@typegoose/typegoose'
import { dbconn } from '../decorators/dbconn'
@dbconn()
@modelOptions({ schemaOptions: { collection: 'id_counter' } })
class IDCounterClass {
@prop()
public _id: string
@prop({ default: 1 })
public seq: number
static nextCount() {
return IDCounter.findOneAndUpdate(
{ _id: 'userShortId' },
{ $inc: { seq: 1 } },
{
upsert: true,
setDefaultsOnInsert: true,
},
)
}
}
export const IDCounter = getModelForClass(IDCounterClass, { existingConnection: IDCounterClass['db'] })