Files
CMT/backend/app/api/clients/endpoints.py
T
linmihigo e60489715a WIP: initial fastapi endpoint implementation
Client endpoint - GET & POST implemented
2025-06-08 23:17:58 +02:00

32 lines
993 B
Python

"""
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