From ce8985ebd83c7369db286336c53c223a1101c545 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Wed, 18 Aug 2021 22:08:36 +0200
Subject: [PATCH] #9 - new route for manually triggering the cleanup

---
 src/logic/database/Schemas.py      |  6 ++++++
 src/logic/routers/GeneralRouter.py | 18 ++++++++++++++++++
 2 files changed, 24 insertions(+)

diff --git a/src/logic/database/Schemas.py b/src/logic/database/Schemas.py
index 78bc9c8..5137f72 100644
--- a/src/logic/database/Schemas.py
+++ b/src/logic/database/Schemas.py
@@ -38,6 +38,12 @@ class DatabaseInfo(BaseModel):
         }
 
 
+class DatabaseCleanupInfo(BaseModel):
+    before: DatabaseInfo
+    after: DatabaseInfo
+    difference: DatabaseInfo
+
+
 class MinMax(BaseModel):
     min: float = None
     max: float = None
diff --git a/src/logic/routers/GeneralRouter.py b/src/logic/routers/GeneralRouter.py
index 81938bc..43b7478 100644
--- a/src/logic/routers/GeneralRouter.py
+++ b/src/logic/routers/GeneralRouter.py
@@ -23,3 +23,21 @@ async def version():
             response_model=Schemas.DatabaseInfo)
 async def databaseInfo(db: Session = Depends(get_database)):
     return DatabaseInfoProvider.get_database_info(db)
+
+
+@router.get('/databaseCleanup',
+            summary='Cleans up the database by enforcing the configured retention policies',
+            response_model=Schemas.DatabaseCleanupInfo)
+async def databaseCleanup(db: Session = Depends(get_database)):
+    infoBefore = DatabaseInfoProvider.get_database_info(db)
+
+    # TODO
+
+    infoAfter = DatabaseInfoProvider.get_database_info(db)
+
+    deletedMeasurements = infoBefore.number_of_measurements - infoAfter.number_of_measurements
+    sizeFreed = infoBefore.size_on_disk_in_mb - infoAfter.size_on_disk_in_mb
+    infoDifference = Schemas.DatabaseInfo(number_of_measurements=deletedMeasurements, size_on_disk_in_mb=sizeFreed)
+
+    return Schemas.DatabaseCleanupInfo(before=infoBefore,  after=infoAfter,  difference=infoDifference)
+
-- 
GitLab