From ee7f4f6440fea1177a85b1859ee33e4a8921c002 Mon Sep 17 00:00:00 2001 From: giacomo accursi Date: Mon, 13 Mar 2023 11:19:56 +0100 Subject: [PATCH] feat: implement getLatestTrackingData query --- .../infrastructure/database/MongoClient.kt | 34 +++++++++---------- 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/src/main/kotlin/infrastructure/database/MongoClient.kt b/src/main/kotlin/infrastructure/database/MongoClient.kt index be6fc6b1..d94353fd 100644 --- a/src/main/kotlin/infrastructure/database/MongoClient.kt +++ b/src/main/kotlin/infrastructure/database/MongoClient.kt @@ -10,11 +10,16 @@ package infrastructure.database import application.controller.manager.StaffTrackingDatabaseManager import application.presenter.database.TimeSeriesTrackingData +import application.presenter.database.TimeSeriesTrackingDataMetadata +import application.presenter.database.toTimeSeriesTrackingData import application.presenter.database.toTrackingData +import com.mongodb.MongoException import entity.HealthProfessionalId import entity.RoomId import entity.TrackingData +import entity.TrackingType import org.litote.kmongo.KMongo +import org.litote.kmongo.div import org.litote.kmongo.getCollection import java.time.Instant @@ -36,17 +41,6 @@ class MongoClient( private val trackingDataCollection = database.getCollection("tracking_data") -// override fun insertPatient(patient: Patient): Boolean = -// patientsCollection.insertOne(patient).run { -// getPatient(patient.taxCode) != null -// } -// -// override fun deletePatient(taxCode: PatientData.TaxCode): Boolean = -// patientsCollection.deleteOne(Patient::taxCode eq taxCode).deletedCount > 0 -// -// override fun getPatient(taxCode: PatientData.TaxCode): Patient? = -// patientsCollection.findOne(Patient::taxCode eq taxCode) - override fun addTrackingData(trackingData: TrackingData) = try { trackingDataCollection.insertOne(trackingData.toTimeSeriesTrackingData()).wasAcknowledged() @@ -80,13 +74,17 @@ class MongoClient( it.toTrackingData() }.toSet() - override fun getRoomTrackingData(roomId: RoomId, from: Instant?, to: Instant?): Set { - TODO("Not yet implemented") - } - - override fun getLatestTrackingData(from: Instant?, to: Instant?): Set { - TODO("Not yet implemented") - } + override fun getLatestTrackingData(from: Instant?, to: Instant?): Set = + if (from != null) { + trackingDataCollection.find() + .map { + it.toTrackingData() + }.filter { + it.dateTime.isAfter(from) && it.dateTime.isBefore(to) + }.toSet() + } else { + getBlockCurrentTrackingData() + } companion object { /**