Initial FastAPI + SQLite + Alembic
This commit is contained in:
0
fastapi_demo/app/api/routes/__init__.py
Normal file
0
fastapi_demo/app/api/routes/__init__.py
Normal file
45
fastapi_demo/app/api/routes/assets.py
Normal file
45
fastapi_demo/app/api/routes/assets.py
Normal file
@@ -0,0 +1,45 @@
|
||||
from fastapi import APIRouter, Depends
|
||||
from uuid import UUID
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from fastapi_demo.app.db.deps import get_db
|
||||
from fastapi_demo.app.repositories.sql_assets_repo import SqlAssetsRepo
|
||||
from fastapi_demo.app.services.assets_service import AssetsService
|
||||
from fastapi_demo.app.schemas.asset import (
|
||||
AssetCreate,
|
||||
AssetOut,
|
||||
AssetTransitionIn,
|
||||
AssetEventOut,
|
||||
)
|
||||
|
||||
router = APIRouter(prefix="/assets", tags=["assets"])
|
||||
|
||||
|
||||
def get_service(db: Session = Depends(get_db)) -> AssetsService:
|
||||
repo = SqlAssetsRepo(db)
|
||||
return AssetsService(repo)
|
||||
|
||||
|
||||
@router.post("", response_model=AssetOut, status_code=201)
|
||||
def create_asset(payload: AssetCreate, svc: AssetsService = Depends(get_service)):
|
||||
return svc.create_asset(payload)
|
||||
|
||||
|
||||
@router.get("/{asset_id}", response_model=AssetOut)
|
||||
def get_asset(asset_id: UUID, svc: AssetsService = Depends(get_service)):
|
||||
return svc.get_asset(asset_id)
|
||||
|
||||
|
||||
@router.post("/{asset_id}/transition", response_model=AssetOut)
|
||||
def transition_asset(
|
||||
asset_id: UUID,
|
||||
payload: AssetTransitionIn,
|
||||
svc: AssetsService = Depends(get_service),
|
||||
):
|
||||
asset, _event = svc.transition(asset_id, payload)
|
||||
return asset
|
||||
|
||||
|
||||
@router.get("/{asset_id}/events", response_model=list[AssetEventOut])
|
||||
def list_events(asset_id: UUID, svc: AssetsService = Depends(get_service)):
|
||||
return svc.list_events(asset_id)
|
||||
8
fastapi_demo/app/api/routes/health.py
Normal file
8
fastapi_demo/app/api/routes/health.py
Normal file
@@ -0,0 +1,8 @@
|
||||
from fastapi import APIRouter
|
||||
|
||||
router = APIRouter(tags=["health"])
|
||||
|
||||
|
||||
@router.get("/health")
|
||||
def health():
|
||||
return {"status": "ok"}
|
||||
Reference in New Issue
Block a user