Coverage for toardb/variables/variables.py: 100%
28 statements
« prev ^ index » next coverage.py v7.11.0, created at 2025-11-03 20:32 +0000
« prev ^ index » next coverage.py v7.11.0, created at 2025-11-03 20:32 +0000
1# SPDX-FileCopyrightText: 2021 Forschungszentrum Jülich GmbH
2# SPDX-License-Identifier: MIT
4"""
5Simple test API for variable management
6"""
8from typing import List
9from fastapi import APIRouter, Depends, HTTPException, Request
10from sqlalchemy.orm import Session
11from toardb.variables import crud, schemas
12from toardb.utils.database import get_db
14router = APIRouter()
17# plain views to post and get variables
18@router.post("/variables/", response_model=schemas.Variable)
19def create_variable(
20 variable: schemas.VariableCreate, db: Session = Depends(get_db)
21):
22 db_variable = crud.get_variable_by_name(db, name=variable.name)
23 if db_variable:
24 raise HTTPException(
25 status_code=400, detail="Variable already registered."
26 )
27 return crud.create_variable(db=db, variable=variable)
30@router.get(
31 "/variables/",
32 response_model=List[schemas.Variable],
33 response_model_exclude_none=True,
34 response_model_exclude_unset=True,
35)
36def get_variables(request: Request, db: Session = Depends(get_db)):
37 variables = crud.get_variables(
38 db, path_params=request.path_params, query_params=request.query_params
39 )
40 return variables
43@router.get("/variables/{name}", response_model=schemas.Variable)
44def get_variable_by_name(name: str, db: Session = Depends(get_db)):
45 db_variable = crud.get_variable_by_name(db, name=name)
46 if db_variable is None:
47 raise HTTPException(status_code=404, detail="Variable not found.")
48 return db_variable
51@router.get("/variables/id/{variable_id}", response_model=schemas.Variable)
52def get_variable_by_id(variable_id: int, db: Session = Depends(get_db)):
53 db_variable = crud.get_variable(db, variable_id=variable_id)
54 if db_variable is None:
55 raise HTTPException(status_code=404, detail="Variable not found.")
56 return db_variable