Coverage for /usr/lib/python3.10/site-packages/hyd/backend/version/service.py: 38%

26 statements  

« prev     ^ index     » next       coverage.py v7.0.3, created at 2023-01-05 15:47 +0000

1from sqlalchemy.exc import IntegrityError 

2from sqlalchemy.orm import Session 

3 

4import hyd.backend.project.service as project_service 

5from hyd.backend.exc import NameStrError, UnknownVersionError 

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

7from hyd.backend.version.models import VersionEntry 

8 

9 

10def create_version( 

11 project_id: PrimaryKey, 

12 version: NameStr, 

13 filename: NameStr, 

14 content_type: NameStr, 

15 db=Session, 

16) -> VersionEntry: 

17 version_entry = VersionEntry( 

18 project_id=project_id, 

19 version=version, 

20 filename=filename, 

21 content_type=content_type, 

22 ) 

23 db.add(version_entry) 

24 

25 try: 

26 db.commit() 

27 except IntegrityError: 

28 raise NameStrError 

29 

30 return version_entry 

31 

32 

33def read_version(project_id: PrimaryKey, version: NameStr, db=Session) -> VersionEntry: 

34 project_entry = project_service.read_project(project_id=project_id, db=db) 

35 

36 version_entries: list[VersionEntry] = project_entry.version_entries 

37 for tag_entry in version_entries: 

38 if tag_entry.version == version: 

39 return tag_entry 

40 

41 raise UnknownVersionError 

42 

43 

44def read_versions(project_id: PrimaryKey, db: Session) -> list[VersionEntry]: 

45 return db.query(VersionEntry).filter(VersionEntry.project_id == project_id).all() 

46 

47 

48def delete_version_by_ref(*, version_entry: VersionEntry, db=Session) -> None: 

49 db.delete(version_entry) 

50 db.commit()