From bb4616af5593672bbb549b5d22cd9022c07d9741 Mon Sep 17 00:00:00 2001 From: chinlinlee Date: Sat, 6 Jan 2024 14:22:00 +0800 Subject: [PATCH] fix: Add method to increment delete status for hierarchical image deletion # Problems - Series and instances under study are not delete - Instances under series are not deleted # Solutions - Add methods to increment delete status for series and study models to facilitate hierarchical image deletion. This ensures proper update of delete status across related entities. --- models/mongodb/models/series.model.js | 11 +++++++++++ models/mongodb/models/study.model.js | 20 ++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/models/mongodb/models/series.model.js b/models/mongodb/models/series.model.js index 7d13a295..80d91580 100644 --- a/models/mongodb/models/series.model.js +++ b/models/mongodb/models/series.model.js @@ -13,6 +13,17 @@ let dicomSeriesSchemaOptions = _.merge( DicomSchemaOptionsFactory.get("series", SeriesDocDicomJsonHandler), { methods: { + incrementDeleteStatus: async function () { + await mongoose.model("dicom").updateMany({ + seriesUID: this.seriesUID + }, { + $inc: { + deleteStatus: 1 + } + }); + this.deleteStatus += 1; + await this.save(); + }, deleteDicomInstances: async function () { let seriesPath = this.seriesPath; logger.warn("Permanently delete series folder: " + seriesPath); diff --git a/models/mongodb/models/study.model.js b/models/mongodb/models/study.model.js index 9d804de6..13a28c33 100644 --- a/models/mongodb/models/study.model.js +++ b/models/mongodb/models/study.model.js @@ -13,6 +13,26 @@ let dicomStudySchemaOptions = _.merge( DicomSchemaOptionsFactory.get("study", StudyDocDicomJsonHandler), { methods: { + incrementDeleteStatus: async function() { + await Promise.all([ + mongoose.model("dicomSeries").updateMany({ + studyUID: this.studyUID + }, { + $inc : { + deleteStatus: 1 + } + }), + mongoose.model("dicom").updateMany({ + studyUID: this.studyUID + }, { + $inc: { + deleteStatus: 1 + } + }) + ]); + this.deleteStatus += 1; + await this.save(); + }, deleteDicomInstances: async function () { let studyPath = this.studyPath;