diff options
| author | Sefa Eyeoglu <contact@scrumplex.net> | 2022-04-05 15:05:33 +0200 |
|---|---|---|
| committer | Sefa Eyeoglu <contact@scrumplex.net> | 2022-04-05 15:05:33 +0200 |
| commit | 6777305c000f997183646adef2d38ae10e603ebc (patch) | |
| tree | 6de2a2bab9884baeaf143dc475ae4d1b65684141 /meta | |
| parent | 6d0b9f34c81a3cee953fc8e74bccddf6ae16a23e (diff) | |
| download | Project-Tick-6777305c000f997183646adef2d38ae10e603ebc.tar.gz Project-Tick-6777305c000f997183646adef2d38ae10e603ebc.zip | |
refactor: move index to pydantic models
Diffstat (limited to 'meta')
| -rw-r--r-- | meta/model/index.py | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/meta/model/index.py b/meta/model/index.py new file mode 100644 index 0000000000..f7cdc36e0f --- /dev/null +++ b/meta/model/index.py @@ -0,0 +1,46 @@ +from datetime import datetime +from typing import Optional, List + +from pydantic import Field + +from meta.model import Dependency, MetaBase, Versioned, MetaVersion + + +class MetaVersionIndexEntry(MetaBase): + version: str + type: Optional[str] + release_time: datetime = Field(alias="releaseTime") + requires: Optional[List[Dependency]] + conflicts: Optional[List[Dependency]] + recommended: Optional[bool] + volatile: Optional[bool] + sha256: str + + @classmethod + def from_meta_version(cls, v: MetaVersion, recommended: bool, sha256: str): + return cls( + version=v.version, + type=v.type, + release_time=v.release_time, + requires=v.requires, + conflicts=v.conflicts, + recommended=recommended, + volatile=v.volatile, + sha256=sha256 + ) + + +class MetaVersionIndex(Versioned): + name: str + uid: str + versions: List[MetaVersionIndexEntry] = Field([]) + + +class MetaPackageIndexEntry(MetaBase): + name: str + uid: str + sha256: str + + +class MetaPackageIndex(Versioned): + packages: List[MetaPackageIndexEntry] = Field([]) |
