38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
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 |