## @strpc 기존 RPC를 package화 ### @strpc/express express의 middleware + router 결함 ## @sammo 게임 전체 - server, client - gateway_server, gateway_client
25 lines
594 B
TypeScript
25 lines
594 B
TypeScript
import type { StateIncrementer } from '@sammo/server_util';
|
|
import SchemaSequence from './schema/SchemaSequence.js';
|
|
import { InvalidArgument } from '@sammo/util';
|
|
|
|
export function MongoSequenceFactory(collectionName: string): StateIncrementer{
|
|
|
|
return async (increase: number) => {
|
|
if(increase <= 0){
|
|
throw new InvalidArgument('increase must be > 0');
|
|
}
|
|
increase = Math.ceil(increase);
|
|
|
|
const result = await SchemaSequence.findOneAndUpdate({
|
|
collectionName,
|
|
}, {
|
|
$inc: {
|
|
nextSeq: increase,
|
|
},
|
|
}, {
|
|
upsert: true,
|
|
new: true,
|
|
});
|
|
return result.nextSeq;
|
|
}
|
|
} |