summaryrefslogtreecommitdiff
path: root/meta
diff options
context:
space:
mode:
authorSefa Eyeoglu <contact@scrumplex.net>2022-04-05 15:05:33 +0200
committerSefa Eyeoglu <contact@scrumplex.net>2022-04-05 15:05:33 +0200
commit6777305c000f997183646adef2d38ae10e603ebc (patch)
tree6de2a2bab9884baeaf143dc475ae4d1b65684141 /meta
parent6d0b9f34c81a3cee953fc8e74bccddf6ae16a23e (diff)
downloadProject-Tick-6777305c000f997183646adef2d38ae10e603ebc.tar.gz
Project-Tick-6777305c000f997183646adef2d38ae10e603ebc.zip
refactor: move index to pydantic models
Diffstat (limited to 'meta')
-rw-r--r--meta/model/index.py46
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([])