diff --git a/src/logic/database/Schemas.py b/src/logic/database/Schemas.py index 78bc9c8bfcd2eb5efbd4c876176378e4bd5eb48c..5137f72b7454d80d4c1038891ce0cd47eec326b0 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 81938bceaaa7b928dd777fc0456d781b08a164d0..43b7478c0f462476b54464509ebb5e774accbbb1 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) +