From e01249c3ae8af6e39e7d897cc43dd674b26c5c46 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Sat, 16 Jan 2021 19:24:04 +0100
Subject: [PATCH] improved response schema for version route

---
 src/{main.py => StorageLeaf.py}  |  7 ++++---
 src/logic/databaseNew/Schemas.py | 17 +++++++++++++++++
 2 files changed, 21 insertions(+), 3 deletions(-)
 rename src/{main.py => StorageLeaf.py} (93%)

diff --git a/src/main.py b/src/StorageLeaf.py
similarity index 93%
rename from src/main.py
rename to src/StorageLeaf.py
index 5732f36..36ec324 100644
--- a/src/main.py
+++ b/src/StorageLeaf.py
@@ -7,7 +7,7 @@ from starlette.responses import RedirectResponse, JSONResponse
 
 from Settings import SETTINGS
 from logic import Constants
-from logic.databaseNew import Models
+from logic.databaseNew import Models, Schemas
 from logic.databaseNew.Database import engine
 from routers import DeviceRouter, SensorRouter, MeasurementRouter
 
@@ -32,9 +32,10 @@ async def root():
 
 @app.get('/version',
          summary='Gets information about the server version',
-         tags=['general'])
+         tags=['general'],
+         response_model=Schemas.Version)
 async def version():
-    return JSONResponse(content=VERSION)
+    return Schemas.Version(**VERSION)
 
 
 app.include_router(DeviceRouter.router)
diff --git a/src/logic/databaseNew/Schemas.py b/src/logic/databaseNew/Schemas.py
index e42c49a..4a535eb 100644
--- a/src/logic/databaseNew/Schemas.py
+++ b/src/logic/databaseNew/Schemas.py
@@ -3,10 +3,27 @@ from typing import List
 from pydantic import BaseModel
 
 
+# ===== special =====
+
 class Status(BaseModel):
     message: str
 
 
+class Version(BaseModel):
+    name: str
+    code: int
+    date: str
+
+    class Config:
+        schema_extra = {
+            'example': {
+                'name': 'v1.0.0',
+                'code': 1,
+                'date': '28.12.20',
+            }
+        }
+
+
 class MinMax(BaseModel):
     min: float or None
     max: float or None
-- 
GitLab