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

1# SPDX-FileCopyrightText: 2021 Forschungszentrum Jülich GmbH 

2# SPDX-License-Identifier: MIT 

3 

4""" 

5Simple test API for variable management 

6""" 

7 

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 

13 

14router = APIRouter() 

15 

16 

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) 

28 

29 

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 

41 

42 

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 

49 

50 

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