shri-jai commited on
Commit
fa1cbc5
·
1 Parent(s): 198a2e8

chore: app versioning

Browse files
Files changed (4) hide show
  1. src/core/models.py +4 -0
  2. src/core/router.py +23 -0
  3. src/core/schemas.py +4 -1
  4. src/main.py +2 -1
src/core/models.py CHANGED
@@ -26,6 +26,10 @@ class Emotion(str, Enum):
26
  ANXIOUS = "anxious"
27
  SAD = "sad"
28
  FRUSTRATED = "frustrated"
 
 
 
 
29
 
30
  class Users(SQLModel, table=True):
31
  __tablename__ = "users"
 
26
  ANXIOUS = "anxious"
27
  SAD = "sad"
28
  FRUSTRATED = "frustrated"
29
+
30
+ class AppVersion(SQLModel, table=True):
31
+ __tablename__ = "app_version"
32
+ version: str = Field(primary_key=True)
33
 
34
  class Users(SQLModel, table=True):
35
  __tablename__ = "users"
src/core/router.py ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import APIRouter, Depends
2
+ from sqlmodel.ext.asyncio.session import AsyncSession
3
+ from sqlmodel import select
4
+
5
+ from src.core.database import get_async_session
6
+ from src.core.schemas import BaseResponse
7
+ from src.core.models import AppVersion
8
+ from .schemas import AppConfigResponse
9
+
10
+ router = APIRouter(prefix="/app", tags=["AppConfig"])
11
+
12
+
13
+ @router.get("/config", response_model=BaseResponse[AppConfigResponse])
14
+ async def get_app_config(
15
+ session: AsyncSession = Depends(get_async_session),
16
+ ):
17
+ result = await session.exec(select(AppVersion))
18
+ row = result.first()
19
+
20
+ min_version = row.version if row else "0.0.0"
21
+
22
+ return BaseResponse(status_code=200,
23
+ data=AppConfigResponse(version=min_version))
src/core/schemas.py CHANGED
@@ -1,5 +1,5 @@
1
  from typing import Generic, TypeVar
2
-
3
  from pydantic import BaseModel
4
 
5
  T = TypeVar("T")
@@ -8,3 +8,6 @@ T = TypeVar("T")
8
  class BaseResponse(BaseModel, Generic[T]):
9
  status_code: int
10
  data: T
 
 
 
 
1
  from typing import Generic, TypeVar
2
+ from sqlmodel import SQLModel
3
  from pydantic import BaseModel
4
 
5
  T = TypeVar("T")
 
8
  class BaseResponse(BaseModel, Generic[T]):
9
  status_code: int
10
  data: T
11
+
12
+ class AppConfigResponse(SQLModel):
13
+ version: str
src/main.py CHANGED
@@ -10,6 +10,7 @@ from src.notifications.router import router as notifications_router
10
  from src.payslip.router import router as payslip_router
11
  from src.profile.router import router as profile
12
  from src.journaling.router import router as journal
 
13
  from fastapi.staticfiles import StaticFiles
14
 
15
 
@@ -23,7 +24,7 @@ async def on_startup():
23
 
24
  app.include_router(home_router, prefix="/home", tags=["Home"])
25
 
26
- # init_db()
27
 
28
  app.include_router(profile)
29
 
 
10
  from src.payslip.router import router as payslip_router
11
  from src.profile.router import router as profile
12
  from src.journaling.router import router as journal
13
+ from src.core.router import router as app_config
14
  from fastapi.staticfiles import StaticFiles
15
 
16
 
 
24
 
25
  app.include_router(home_router, prefix="/home", tags=["Home"])
26
 
27
+ app.include_router(app_config)
28
 
29
  app.include_router(profile)
30