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
Branches
Tags v2.2.0
No related merge requests found
......@@ -3,15 +3,17 @@ import os
import uvicorn
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.middleware.cors import CORSMiddleware
from sqlalchemy.orm import Session
from starlette.responses import RedirectResponse, FileResponse
from Settings import SETTINGS
from logic import Constants
from logic.Dependencies import get_database
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.routers import DeviceRouter
from logic.routers import SensorRouter, MeasurementRouter
......@@ -72,6 +74,20 @@ def overridden_redoc():
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(SensorRouter.router)
app.include_router(MeasurementRouter.router)
......
......@@ -168,5 +168,9 @@ def delete_measurement(db: Session, measurement: Schemas.Measurement):
db.commit()
def get_total_number_of_measurements(db: Session) -> List[int]:
return db.query(Models.Measurement).count()
def __get_current_datetime():
return datetime.strftime(datetime.now(), DATE_FORMAT)
......@@ -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):
min: float = None
max: float = None
......
{
"version": {
"name": "v2.1.0",
"code": 15,
"date": "17.05.21"
"name": "v2.2.0",
"code": 16,
"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