Skip to content

Commit

Permalink
refactor: centralize retrieve delete controller
Browse files Browse the repository at this point in the history
- Using inherit class may be redundant
- Set `dicomLevel`, `logger` in request object and use them in after process
  • Loading branch information
Chinlinlee committed Jan 13, 2024
1 parent 363b6e1 commit 50935d5
Show file tree
Hide file tree
Showing 5 changed files with 42 additions and 81 deletions.
Original file line number Diff line number Diff line change
@@ -1,18 +1,14 @@
const { Controller } = require("@root/api/controller.class");
const { ApiLogger } = require("@root/utils/logs/api-logger");
const { DeleteService } = require("@api/dicom-web/controller/WADO-RS/deletion/service/delete");
const { ApiErrorArrayHandler } = require("@error/api-errors.handler");

class BaseDeleteController extends Controller {
constructor(req, res) {
super(req, res);
this.apiLogger = new ApiLogger(this.request, "WADO-RS");
this.apiLogger.addTokenValue();
this.level = "study";
}

async mainProcess() {
let deleteService = new DeleteService(this.request, this.response, this.level);
let deleteService = new DeleteService(this.request, this.response, this.request.dicomLevel);

try {
await deleteService.delete();
Expand All @@ -24,13 +20,13 @@ class BaseDeleteController extends Controller {
Method: "DELETE"
});
} catch(e) {
let apiErrorArrayHandler = new ApiErrorArrayHandler(this.response, this.apiLogger, e);
let apiErrorArrayHandler = new ApiErrorArrayHandler(this.response, this.request.logger, e);
return apiErrorArrayHandler.doErrorResponse();
}
}

getDeleteSuccessfulMessage() {
return `Delete Study permanently, StudyInstanceUID: ${this.request.params.studyUID}`;
return `Delete ${this.request.dicomLevel} permanently, ${JSON.stringify(this.request.params)}`;
}

}
Expand Down
25 changes: 0 additions & 25 deletions api/dicom-web/controller/WADO-RS/deletion/instance.js

This file was deleted.

25 changes: 0 additions & 25 deletions api/dicom-web/controller/WADO-RS/deletion/series.js

This file was deleted.

21 changes: 0 additions & 21 deletions api/dicom-web/controller/WADO-RS/deletion/study.js

This file was deleted.

42 changes: 39 additions & 3 deletions api/dicom-web/delete.route.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,50 @@ const Joi = require("joi");
const { validateParams, intArrayJoi } = require("../validator");
const router = express();

const { BaseDeleteController } = require("./controller/WADO-RS/deletion/delete.controller");
const { ApiLogger } = require("@root/utils/logs/api-logger");
const DeleteController = async (req, res) => {
let deleteController = new BaseDeleteController(req, res);
await deleteController.doPipeline();
};

//#region Delete

router.delete("/studies/:studyUID", require("./controller/WADO-RS/deletion/study"));
router.delete(
"/studies/:studyUID",
(req, res, next) => {
req.logger = new ApiLogger(req, "WADO-RS");
req.logger.addTokenValue();
req.logger.logger.info(`delete study: ${req.params.studyUID}`);
req.dicomLevel = "study";
next();
},
DeleteController
);

router.delete("/studies/:studyUID/series/:seriesUID", require("./controller/WADO-RS/deletion/series"));
router.delete(
"/studies/:studyUID/series/:seriesUID",
(req, res, next) => {
req.logger = new ApiLogger(req, "WADO-RS");
req.logger.addTokenValue();
req.logger.logger.info(`delete series, study: ${req.params.studyUID}, series: ${req.params.seriesUID}`);
req.dicomLevel = "series";
next();
},
DeleteController
);

router.delete("/studies/:studyUID/series/:seriesUID/instances/:instanceUID", require("./controller/WADO-RS/deletion/instance"));
router.delete(
"/studies/:studyUID/series/:seriesUID/instances/:instanceUID",
(req, res, next) => {
req.logger = new ApiLogger(req, "WADO-RS");
req.logger.addTokenValue();
req.logger.logger.info(`delete instance, study: ${req.params.studyUID}, series: ${req.params.seriesUID}, instance: ${req.params.instanceUID}`);
req.dicomLevel = "instance";
next();
},
DeleteController
);

//#endregion

Expand Down

0 comments on commit 50935d5

Please sign in to comment.