diff --git a/src/main/kotlin/application/service/MedicalTechnologyService.kt b/src/main/kotlin/application/service/MedicalTechnologyService.kt index ee2e124e..d146cedb 100644 --- a/src/main/kotlin/application/service/MedicalTechnologyService.kt +++ b/src/main/kotlin/application/service/MedicalTechnologyService.kt @@ -44,4 +44,15 @@ object MedicalTechnologyService { override fun execute(): MedicalTechnology? = this.medicalTechnologyRepository.findBy(medicalTechnologyId, dateTime) } + + /** + * Application Service that has the objective of deleting a medical technology + * identified by its [medicalTechnologyId] using the provided [medicalTechnologyId]. + */ + class DeleteMedicalTechnology( + private val medicalTechnologyId: MedicalTechnologyID, + private val medicalTechnologyRepository: MedicalTechnologyRepository + ) : ApplicationService { + override fun execute(): Boolean = this.medicalTechnologyRepository.deleteMedicalTechnology(medicalTechnologyId) + } } diff --git a/src/main/kotlin/infrastructure/api/APIController.kt b/src/main/kotlin/infrastructure/api/APIController.kt index 8e66d6db..9ebc601b 100644 --- a/src/main/kotlin/infrastructure/api/APIController.kt +++ b/src/main/kotlin/infrastructure/api/APIController.kt @@ -180,7 +180,17 @@ class APIController(private val provider: ManagerProvider) { ) } delete("$apiPath/medical-technologies/{technologyId}") { - call.respondText("[${Thread.currentThread().name}] Medical Technology DELETE!") + call.respond( + MedicalTechnologyService.DeleteMedicalTechnology( + MedicalTechnologyID(call.parameters["technologyId"].orEmpty()), + MedicalTechnologyController( + provider.medicalTechnologyDigitalTwinManager, + provider.medicalTechnologyDatabaseManager + ), + ).execute().let { result -> + if (result) HttpStatusCode.NoContent else HttpStatusCode.NotFound + } + ) } patch("$apiPath/medical-technologies/{technologyId}") { call.respondText("[${Thread.currentThread().name}] Medical Technology PATCH!") diff --git a/src/main/kotlin/infrastructure/database/DatabaseManager.kt b/src/main/kotlin/infrastructure/database/DatabaseManager.kt index f4326dc1..992c5bf1 100644 --- a/src/main/kotlin/infrastructure/database/DatabaseManager.kt +++ b/src/main/kotlin/infrastructure/database/DatabaseManager.kt @@ -94,9 +94,10 @@ class DatabaseManager(customConnectionString: String? = null) : RoomDatabaseMana insertOne(medicalTechnology).wasAcknowledged() } - override fun deleteMedicalTechnology(medicalTechnologyId: MedicalTechnologyID): Boolean { - TODO("Not yet implemented") - } + override fun deleteMedicalTechnology(medicalTechnologyId: MedicalTechnologyID): Boolean = + this.medicalTechnologiesCollection.safeMongoDbWrite(defaultResult = false) { + deleteOne(MedicalTechnology::id eq medicalTechnologyId).deletedCount > 0 + } override fun findBy(medicalTechnologyId: MedicalTechnologyID, dateTime: Instant): MedicalTechnology? = this.medicalTechnologiesCollection.findOne { MedicalTechnology::id eq medicalTechnologyId }?.copy(