diff --git a/server/src/score-import/framework/core/pb/process-pbs.ts b/server/src/score-import/framework/core/pb/process-pbs.ts new file mode 100644 index 000000000..b0e3727cd --- /dev/null +++ b/server/src/score-import/framework/core/pb/process-pbs.ts @@ -0,0 +1,27 @@ +import { integer, PBScoreDocument } from "kamaitachi-common"; +import db from "../../../../db/db"; +import { KtLogger } from "../../../../types"; +import { CreatePBDoc } from "./create-pb-doc"; + +export async function ProcessPBs(userID: integer, chartIDs: Set, logger: KtLogger) { + let promises = []; + + for (const chartID of chartIDs) { + promises.push(CreatePBDoc(userID, chartID, logger)); + } + + let pbDocs = (await Promise.all(promises)).filter((e) => !!e) as PBScoreDocument[]; + + let r = await db["score-pbs"].bulkWrite( + pbDocs.map((e) => ({ + updateOne: { + filter: { chartID: e.chartID, userID: e.userID }, + update: { $set: e }, + upsert: true, + }, + })) + ); + + // @ts-expect-error monk machine broken + return r.nUpserted; +}