From d6173ac1ebe33520e012c7828e1540217c091199 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=94=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9=20=D0=90=D0=BD?= =?UTF-8?q?=D1=84=D0=B8=D0=BC=D0=BE=D0=B2?= Date: Thu, 28 Sep 2023 17:59:49 +0300 Subject: [PATCH] feat: add components support --- ya_tracker_client/domain/entities/checklist.py | 1 - ya_tracker_client/domain/entities/component.py | 14 ++++++++++++++ .../domain/repositories/__init__.py | 4 +++- .../domain/repositories/component.py | 16 ++++++++++++++++ ya_tracker_client/service/api.py | 4 +++- 5 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 ya_tracker_client/domain/entities/component.py create mode 100644 ya_tracker_client/domain/repositories/component.py diff --git a/ya_tracker_client/domain/entities/checklist.py b/ya_tracker_client/domain/entities/checklist.py index 3188caf..6ed6246 100644 --- a/ya_tracker_client/domain/entities/checklist.py +++ b/ya_tracker_client/domain/entities/checklist.py @@ -1,4 +1,3 @@ - from ya_tracker_client.domain.entities.base import AbstractEntity from ya_tracker_client.domain.entities.deadline import Deadline from ya_tracker_client.domain.entities.user import UserShort diff --git a/ya_tracker_client/domain/entities/component.py b/ya_tracker_client/domain/entities/component.py new file mode 100644 index 0000000..8962707 --- /dev/null +++ b/ya_tracker_client/domain/entities/component.py @@ -0,0 +1,14 @@ +from ya_tracker_client.domain.entities.base import AbstractEntity +from ya_tracker_client.domain.entities.queue import QueueShort +from ya_tracker_client.domain.entities.user import UserShort + + +class Component(AbstractEntity): + url: str + id: int + version: int + name: str + queue: QueueShort + description: str + lead: UserShort | None = None + assign_auto: bool diff --git a/ya_tracker_client/domain/repositories/__init__.py b/ya_tracker_client/domain/repositories/__init__.py index 8e32fe6..595b31d 100644 --- a/ya_tracker_client/domain/repositories/__init__.py +++ b/ya_tracker_client/domain/repositories/__init__.py @@ -1,4 +1,5 @@ from ya_tracker_client.domain.repositories.checklist import ChecklistRepository +from ya_tracker_client.domain.repositories.component import ComponentRepository from ya_tracker_client.domain.repositories.issue import IssueRepository from ya_tracker_client.domain.repositories.issue_relationship import IssueRelationshipRepository from ya_tracker_client.domain.repositories.queue import QueueRepository @@ -7,8 +8,9 @@ __all__ = [ "ChecklistRepository", - "IssueRepository", + "ComponentRepository", "IssueRelationshipRepository", + "IssueRepository", "QueueRepository", "UserRepository", ] diff --git a/ya_tracker_client/domain/repositories/component.py b/ya_tracker_client/domain/repositories/component.py new file mode 100644 index 0000000..a05a79a --- /dev/null +++ b/ya_tracker_client/domain/repositories/component.py @@ -0,0 +1,16 @@ +from json import loads + +from ya_tracker_client.domain.entities.component import Component +from ya_tracker_client.domain.repositories.base import EntityRepository + + +class ComponentRepository(EntityRepository): + async def get_components(self) -> list[Component]: + """ + YT docs: https://cloud.yandex.com/en/docs/tracker/get-components + """ + raw_response = await self._client.request( + method="GET", + uri="/components", + ) + return [Component(**raw_component) for raw_component in loads(raw_response)] diff --git a/ya_tracker_client/service/api.py b/ya_tracker_client/service/api.py index 191f90a..196dad0 100644 --- a/ya_tracker_client/service/api.py +++ b/ya_tracker_client/service/api.py @@ -1,5 +1,6 @@ from ya_tracker_client.domain.repositories import ( ChecklistRepository, + ComponentRepository, IssueRelationshipRepository, IssueRepository, QueueRepository, @@ -9,11 +10,12 @@ class YaTrackerClient( + ChecklistRepository, + ComponentRepository, IssueRelationshipRepository, IssueRepository, QueueRepository, UserRepository, - ChecklistRepository, ): def __init__( self,