mirror of
https://github.com/PretendoNetwork/BOSS.git
synced 2026-08-19 23:54:08 -05:00
feat: remove CECSlot references while clearing old CECData
This commit is contained in:
@@ -217,15 +217,15 @@ export async function getRandomCECData(pids: number[], gameID: number): Promise<
|
||||
return null;
|
||||
}
|
||||
|
||||
export async function deleteOldCECData(olderThan: Date, limit: number): Promise<{ _id: string; file_key: string }[]> {
|
||||
export async function deleteOldCECData(olderThan: Date, limit: number): Promise<{ id: string; file_key: string }[]> {
|
||||
verifyConnected();
|
||||
|
||||
const toDelete = await CECData.find({
|
||||
created: {
|
||||
$lt: olderThan.getTime()
|
||||
}
|
||||
}, { file_key: 1 }, { limit });
|
||||
const ids = toDelete.map(v => v.data);
|
||||
}).limit(limit).sort({ created: 1 }).select({ file_key: 1 });
|
||||
const ids = toDelete.map(v => v.id);
|
||||
|
||||
await CECData.deleteMany({
|
||||
_id: {
|
||||
@@ -233,5 +233,13 @@ export async function deleteOldCECData(olderThan: Date, limit: number): Promise<
|
||||
}
|
||||
});
|
||||
|
||||
return toDelete.map(v => ({ _id: v._id.toString(), file_key: v.file_key }));
|
||||
// Remove slot if their newest data is what we've just deleted
|
||||
// This is safe because everything older than the deleted data is also gone
|
||||
await CECSlot.deleteMany({
|
||||
latest_data_id: {
|
||||
$in: ids
|
||||
}
|
||||
});
|
||||
|
||||
return toDelete.map(v => ({ id: v.id, file_key: v.file_key }));
|
||||
}
|
||||
|
||||
@@ -8,5 +8,6 @@ const CECSlotSchema = new mongoose.Schema<ICECSlot, CECSlotModel, ICECSlotMethod
|
||||
});
|
||||
|
||||
CECSlotSchema.index({ creator_pid: 1, game_id: 1 });
|
||||
CECSlotSchema.index({ latest_data_id: 1 });
|
||||
|
||||
export const CECSlot = mongoose.model<ICECSlot, CECSlotModel>('CECSlot', CECSlotSchema);
|
||||
|
||||
Reference in New Issue
Block a user