Coverage for /usr/lib/python3.10/site-packages/hyd/backend/project/service.py: 39%
28 statements
« prev ^ index » next coverage.py v7.0.3, created at 2023-02-05 17:14 +0000
« prev ^ index » next coverage.py v7.0.3, created at 2023-02-05 17:14 +0000
1from sqlalchemy.exc import IntegrityError
2from sqlalchemy.orm import Session
4from hyd.backend.exc import NameStrError, UnknownProjectError
5from hyd.backend.project.models import ProjectEntry
6from hyd.backend.util.models import NameStr, PrimaryKey
9def create_project(*, name: NameStr, db: Session) -> ProjectEntry:
10 project_entry = ProjectEntry(name=name)
11 db.add(project_entry)
13 try:
14 db.commit()
15 except IntegrityError:
16 raise NameStrError
18 return project_entry
21def read_project(*, project_id: PrimaryKey, db: Session) -> ProjectEntry:
22 project_entry = db.query(ProjectEntry).get(project_id)
24 if project_entry is None:
25 raise UnknownProjectError
27 return project_entry
30def read_project_by_name(*, project_name: NameStr, db: Session) -> list[ProjectEntry]:
31 try:
32 return db.query(ProjectEntry).filter(ProjectEntry.name == project_name).all()[0]
33 except IndexError:
34 raise UnknownProjectError
37def read_projects(*, db: Session) -> list[ProjectEntry]:
38 return db.query(ProjectEntry).all()
41def delete_project_by_ref(*, project_entry: ProjectEntry, db: Session) -> None:
42 db.delete(project_entry)
43 db.commit()