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

1from sqlalchemy.exc import IntegrityError 

2from sqlalchemy.orm import Session 

3 

4from hyd.backend.exc import NameStrError, UnknownProjectError 

5from hyd.backend.project.models import ProjectEntry 

6from hyd.backend.util.models import NameStr, PrimaryKey 

7 

8 

9def create_project(*, name: NameStr, db: Session) -> ProjectEntry: 

10 project_entry = ProjectEntry(name=name) 

11 db.add(project_entry) 

12 

13 try: 

14 db.commit() 

15 except IntegrityError: 

16 raise NameStrError 

17 

18 return project_entry 

19 

20 

21def read_project(*, project_id: PrimaryKey, db: Session) -> ProjectEntry: 

22 project_entry = db.query(ProjectEntry).get(project_id) 

23 

24 if project_entry is None: 

25 raise UnknownProjectError 

26 

27 return project_entry 

28 

29 

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 

35 

36 

37def read_projects(*, db: Session) -> list[ProjectEntry]: 

38 return db.query(ProjectEntry).all() 

39 

40 

41def delete_project_by_ref(*, project_entry: ProjectEntry, db: Session) -> None: 

42 db.delete(project_entry) 

43 db.commit()