Skip to content

Commit ef6c21d

Browse files
feat: implement api endpoint to export historical room environmental data
1 parent 0720b6e commit ef6c21d

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

src/main/kotlin/infrastructure/api/RoomApi.kt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ fun Application.roomAPI(apiPath: String, port: Int, provider: ManagerProvider) {
4242
getAllRooms(apiPath, port, provider)
4343
getRoom(apiPath, provider)
4444
deleteRoom(apiPath, provider)
45+
getHistoricalRoomEnvironmentData(apiPath, provider)
4546
}
4647
}
4748

@@ -101,3 +102,21 @@ private fun Route.deleteRoom(apiPath: String, provider: ManagerProvider) =
101102
}
102103
)
103104
}
105+
106+
private fun Route.getHistoricalRoomEnvironmentData(apiPath: String, provider: ManagerProvider) =
107+
get("$apiPath/rooms/data/{roomId}") {
108+
RoomService.ExportRoomEnvironmentalData(
109+
RoomID(call.parameters["roomId"].orEmpty()),
110+
RoomController(provider.roomDigitalTwinManager, provider.roomDatabaseManager),
111+
call.request.queryParameters["from"]?.let { rawDateTime -> Instant.parse(rawDateTime) }
112+
?: Instant.now(),
113+
call.request.queryParameters["to"]?.let { rawDateTime -> Instant.parse(rawDateTime) }
114+
).execute()?.map {
115+
ApiResponses.ResponseTimedEntry(it.second, it.first.toString())
116+
}.apply {
117+
when (this) {
118+
null -> call.respond(HttpStatusCode.NotFound)
119+
else -> call.respond(ApiResponses.ResponseEntryList(this))
120+
}
121+
}
122+
}

0 commit comments

Comments
 (0)