from fastapi import APIRouter, HTTPException, status, Depends from sqlalchemy.orm import Session from typing import List import uuid from app.schemas import Dewar as DewarSchema, DewarCreate from app.models import Dewar as DewarModel from app.dependencies import get_db router = APIRouter() @router.get("/", response_model=List[DewarSchema]) async def get_dewars(db: Session = Depends(get_db)): return db.query(DewarModel).all() @router.post("/", response_model=DewarSchema, status_code=status.HTTP_201_CREATED) async def create_dewar(dewar: DewarCreate, db: Session = Depends(get_db)) -> DewarSchema: dewar_id = f'DEWAR-{uuid.uuid4().hex[:8].upper()}' db_dewar = DewarModel( id=dewar_id, dewar_name=dewar.dewar_name, tracking_number=dewar.tracking_number, number_of_pucks=dewar.number_of_pucks, number_of_samples=dewar.number_of_samples, status=dewar.status, ready_date=dewar.ready_date, shipping_date=dewar.shipping_date, arrival_date=dewar.arrival_date, returning_date=dewar.returning_date, qrcode=dewar.qrcode, contact_person_id=dewar.contact_person_id, return_address_id=dewar.return_address_id ) db.add(db_dewar) db.commit() db.refresh(db_dewar) return db_dewar