added sample tracker on the frontend
This commit is contained in:
@ -5,7 +5,7 @@ from fastapi.middleware.cors import CORSMiddleware
|
||||
from app import ssl_heidi
|
||||
from pathlib import Path
|
||||
|
||||
from app.routers import address, contact, proposal, dewar, shipment, puck, spreadsheet, logistics, auth
|
||||
from app.routers import address, contact, proposal, dewar, shipment, puck, spreadsheet, logistics, auth, sample
|
||||
from app.database import Base, engine, SessionLocal, load_sample_data
|
||||
|
||||
app = FastAPI()
|
||||
@ -48,6 +48,7 @@ app.include_router(shipment.router, prefix="/shipments", tags=["shipments"])
|
||||
app.include_router(puck.router, prefix="/pucks", tags=["pucks"])
|
||||
app.include_router(spreadsheet.router, tags=["spreadsheet"])
|
||||
app.include_router(logistics.router, prefix="/logistics", tags=["logistics"])
|
||||
app.include_router(sample.router, prefix="/samples", tags=["samples"])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
36
backend/app/routers/sample.py
Normal file
36
backend/app/routers/sample.py
Normal file
@ -0,0 +1,36 @@
|
||||
from fastapi import APIRouter, HTTPException, status, Depends
|
||||
from sqlalchemy.orm import Session
|
||||
from typing import List
|
||||
from app.schemas import Puck as PuckSchema, Sample as SampleSchema, SampleEventCreate
|
||||
from app.models import Puck as PuckModel, Sample as SampleModel, SampleEvent as SampleEventModel
|
||||
from app.dependencies import get_db
|
||||
import logging
|
||||
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
@router.get("/{puck_id}/samples", response_model=List[SampleSchema])
|
||||
async def get_samples_with_events(puck_id: str, db: Session = Depends(get_db)):
|
||||
puck = db.query(PuckModel).filter(PuckModel.id == puck_id).first()
|
||||
if not puck:
|
||||
raise HTTPException(status_code=404, detail="Puck not found")
|
||||
|
||||
samples = db.query(SampleModel).filter(SampleModel.puck_id == puck_id).all()
|
||||
|
||||
for sample in samples:
|
||||
sample.events = db.query(SampleEventModel).filter(SampleEventModel.sample_id == sample.id).all()
|
||||
|
||||
return samples
|
||||
|
||||
@router.get("/pucks-samples", response_model=List[PuckSchema])
|
||||
async def get_all_pucks_with_samples_and_events(db: Session = Depends(get_db)):
|
||||
logging.info("Fetching all pucks with samples and events")
|
||||
|
||||
pucks = db.query(PuckModel).all()
|
||||
logging.info(f"Found {len(pucks)} pucks in the database")
|
||||
for puck in pucks:
|
||||
logging.info(f"Puck ID: {puck.id}, Name: {puck.puck_name}")
|
||||
|
||||
if not pucks:
|
||||
raise HTTPException(status_code=404, detail="No pucks found in the database") # More descriptive
|
||||
return pucks
|
@ -137,6 +137,7 @@ class Sample(BaseModel):
|
||||
puck_id: int
|
||||
crystalname: Optional[str] = Field(None)
|
||||
positioninpuck: Optional[int] = Field(None)
|
||||
events: List[SampleEventCreate] = []
|
||||
|
||||
|
||||
class SampleCreate(BaseModel):
|
||||
|
Reference in New Issue
Block a user