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
« 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
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
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)
25 try:
26 db.commit()
27 except IntegrityError:
28 raise NameStrError
30 return version_entry
33def read_version(project_id: PrimaryKey, version: NameStr, db=Session) -> VersionEntry:
34 project_entry = project_service.read_project(project_id=project_id, db=db)
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
41 raise UnknownVersionError
44def read_versions(project_id: PrimaryKey, db: Session) -> list[VersionEntry]:
45 return db.query(VersionEntry).filter(VersionEntry.project_id == project_id).all()
48def delete_version_by_ref(*, version_entry: VersionEntry, db=Session) -> None:
49 db.delete(version_entry)
50 db.commit()