feat: remove CECSlot references while clearing old CECData

This commit is contained in:
mrjvs
2025-09-17 11:40:38 +02:00
parent 193bbcee07
commit 33bad47332
2 changed files with 13 additions and 4 deletions

View File

@@ -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 }));
}

View File

@@ -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);