Skip to content
Snippets Groups Projects
Commit e02f2cba authored by Robert Goldmann's avatar Robert Goldmann
Browse files

v2.2.0; added new rout to retrieve database info (e.g. size on disk and number of measurements)

parent 19065ecd
No related branches found
No related tags found
No related merge requests found
...@@ -3,15 +3,17 @@ import os ...@@ -3,15 +3,17 @@ import os
import uvicorn import uvicorn
from TheCodeLabs_BaseUtils.DefaultLogger import DefaultLogger from TheCodeLabs_BaseUtils.DefaultLogger import DefaultLogger
from fastapi import FastAPI from fastapi import FastAPI, Depends
from fastapi.openapi.docs import get_swagger_ui_html, get_redoc_html from fastapi.openapi.docs import get_swagger_ui_html, get_redoc_html
from fastapi.middleware.cors import CORSMiddleware from fastapi.middleware.cors import CORSMiddleware
from sqlalchemy.orm import Session
from starlette.responses import RedirectResponse, FileResponse from starlette.responses import RedirectResponse, FileResponse
from Settings import SETTINGS from Settings import SETTINGS
from logic import Constants from logic import Constants
from logic.Dependencies import get_database
from logic.DiscoveryService import DiscoveryService from logic.DiscoveryService import DiscoveryService
from logic.database import Models, Schemas from logic.database import Models, Schemas, Crud
from logic.database.Database import engine from logic.database.Database import engine
from logic.routers import DeviceRouter from logic.routers import DeviceRouter
from logic.routers import SensorRouter, MeasurementRouter from logic.routers import SensorRouter, MeasurementRouter
...@@ -72,6 +74,20 @@ def overridden_redoc(): ...@@ -72,6 +74,20 @@ def overridden_redoc():
redoc_favicon_url=app.url_path_for('favicon')) redoc_favicon_url=app.url_path_for('favicon'))
@app.get('/databaseInfo',
summary='Gets information about the database version',
tags=['general'],
response_model=Schemas.DatabaseInfo)
async def databaseInfo(db: Session = Depends(get_database)):
numberOfMeasurements = Crud.get_total_number_of_measurements(db)
sizeInBytes = os.path.getsize(databaseSettings['databasePath'])
sizeInMegaBytes = sizeInBytes // 1024 // 1024
return Schemas.DatabaseInfo(number_of_measurements=numberOfMeasurements,
size_on_disk_in_mb=sizeInMegaBytes)
app.include_router(DeviceRouter.router) app.include_router(DeviceRouter.router)
app.include_router(SensorRouter.router) app.include_router(SensorRouter.router)
app.include_router(MeasurementRouter.router) app.include_router(MeasurementRouter.router)
......
...@@ -168,5 +168,9 @@ def delete_measurement(db: Session, measurement: Schemas.Measurement): ...@@ -168,5 +168,9 @@ def delete_measurement(db: Session, measurement: Schemas.Measurement):
db.commit() db.commit()
def get_total_number_of_measurements(db: Session) -> List[int]:
return db.query(Models.Measurement).count()
def __get_current_datetime(): def __get_current_datetime():
return datetime.strftime(datetime.now(), DATE_FORMAT) return datetime.strftime(datetime.now(), DATE_FORMAT)
...@@ -25,6 +25,19 @@ class Version(BaseModel): ...@@ -25,6 +25,19 @@ class Version(BaseModel):
} }
class DatabaseInfo(BaseModel):
number_of_measurements: int
size_on_disk_in_mb: int
class Config:
schema_extra = {
'example': {
'number_of_measurements': 1000,
'size_on_disk_in_mb': 14
}
}
class MinMax(BaseModel): class MinMax(BaseModel):
min: float = None min: float = None
max: float = None max: float = None
......
{ {
"version": { "version": {
"name": "v2.1.0", "name": "v2.2.0",
"code": 15, "code": 16,
"date": "17.05.21" "date": "18.08.21"
} }
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment