WIP: initial fastapi endpoint implementation

Client endpoint - GET & POST implemented
This commit is contained in:
2025-06-08 23:17:58 +02:00
parent aa64491313
commit e60489715a
25 changed files with 207 additions and 88 deletions
View File
+31
View File
@@ -0,0 +1,31 @@
"""
The Client table
"""
from fastapi import APIRouter, HTTPException
from sqlmodel import Session, select
from app.api.deps import SessionDep, exists
from app.schemas.models import Client
from app.schemas.schemas import ClientCreate
from typing import Sequence
router = APIRouter(prefix="/clients", tags=["clients"])
@router.get("/", response_model=Client)
def fetch_clients(client: Client, session: SessionDep) -> Sequence[Client]:
"""Fetch client list
"""
clients = session.exec(select(Client)).all()
return clients
@router.post("/", response_model=ClientCreate)
def create_client(client_data: ClientCreate, session: SessionDep) -> Client:
existing = exists(session, Client, tin_number=client_data.tin_number)
if existing:
raise HTTPException(status_code=400, detail="Client with this tin number already exists")
client = Client.model_validate(client_data)
session.add(client)
session.commit()
session.refresh(client)
return client