Initial FastAPI + SQLite + Alembic

This commit is contained in:
ShaBle
2026-02-06 17:06:35 +01:00
commit 465aa0f1c1
29 changed files with 826 additions and 0 deletions

View File

View 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)

View File

@@ -0,0 +1,8 @@
from fastapi import APIRouter
router = APIRouter(tags=["health"])
@router.get("/health")
def health():
return {"status": "ok"}