From 271461799d35b150d9fcc7a918d3d09a8c437853 Mon Sep 17 00:00:00 2001 From: Robert Date: Wed, 28 Feb 2024 18:41:32 +0700 Subject: [PATCH] refactored --- .../services/progress_action/base.py | 14 +++++++++++-- .../comment_progress_action.py | 21 ++++++++++++++++--- .../services/progress_action/factory.py | 17 +++++++++++---- .../progress_action/wait_progress_action.py | 9 +++++--- .../services/progress_chain_runner.py | 4 ++-- 5 files changed, 51 insertions(+), 14 deletions(-) diff --git a/chain_service/services/progress_action/base.py b/chain_service/services/progress_action/base.py index 2d5d110..898bcc8 100644 --- a/chain_service/services/progress_action/base.py +++ b/chain_service/services/progress_action/base.py @@ -1,9 +1,19 @@ +from chain_service.database.models.progress_chain import ( + ProgressChain, + BaseProgressAction, +) + from abc import ABC, abstractmethod -from chain_service.database.models.progress_chain import BaseProgressAction class BaseProgressActionService(ABC): + def __init__( + self, progress_chain: ProgressChain, progress_action: BaseProgressAction + ): + self.progress_chain = progress_chain + self.progress_action = progress_action + @abstractmethod - async def process(self, progress_action: BaseProgressAction): + async def process(): pass diff --git a/chain_service/services/progress_action/comment_progress_action.py b/chain_service/services/progress_action/comment_progress_action.py index a5409ee..e51bb70 100644 --- a/chain_service/services/progress_action/comment_progress_action.py +++ b/chain_service/services/progress_action/comment_progress_action.py @@ -1,8 +1,23 @@ from .base import BaseProgressActionService -from chain_service.database.models.progress_chain import CommentProgressAction + +from chain_service.database.models.progress_chain import ( + BaseProgressAction, + ProgressChain, +) + +from planfix_client import PlanfixClient class CommentProgressActionService(BaseProgressActionService): - async def process(self, progress_action: CommentProgressAction): - print("Comment service", progress_action) + def __init__( + self, + planfix_client: PlanfixClient, + progress_chain: ProgressChain, + progress_action: BaseProgressAction, + ): + self.planfix_client = planfix_client + super().__init__(progress_chain, progress_action) + + async def process(self): + print("Comment service", self.progress_action, self.planfix_client) diff --git a/chain_service/services/progress_action/factory.py b/chain_service/services/progress_action/factory.py index dc2ac1d..2c7f34a 100644 --- a/chain_service/services/progress_action/factory.py +++ b/chain_service/services/progress_action/factory.py @@ -1,4 +1,7 @@ -from chain_service.database.models.progress_chain import BaseProgressAction +from chain_service.database.models.progress_chain import ( + ProgressChain, + BaseProgressAction, +) from .base import BaseProgressActionService from .wait_progress_action import WaitProgressActionService @@ -13,13 +16,19 @@ class ProgressActionServiceFactory: self.planfix_client = planfix_client def __call__( - self, progress_action: BaseProgressAction + self, progress_chain: ProgressChain, progress_action: BaseProgressAction ) -> BaseProgressActionService: match progress_action.action_type: case "wait": - return WaitProgressActionService() + return WaitProgressActionService( + progress_chain=progress_chain, progress_action=progress_action + ) case "comment": - return CommentProgressActionService(planfix_client=self.planfix_client) + return CommentProgressActionService( + planfix_client=self.planfix_client, + progress_chain=progress_chain, + progress_action=progress_action, + ) diff --git a/chain_service/services/progress_action/wait_progress_action.py b/chain_service/services/progress_action/wait_progress_action.py index 1d928e0..86b908c 100644 --- a/chain_service/services/progress_action/wait_progress_action.py +++ b/chain_service/services/progress_action/wait_progress_action.py @@ -1,10 +1,13 @@ from .base import BaseProgressActionService -from chain_service.database.models.progress_chain import WaitProgressAction +from chain_service.database.models.progress_chain import ( + ProgressChain, + WaitProgressAction, +) import asyncio class WaitProgressActionService(BaseProgressActionService): - async def process(self, progress_action: WaitProgressAction): - await asyncio.sleep(progress_action.wait_for) + async def process(self): + await asyncio.sleep(self.progress_action.wait_for) diff --git a/chain_service/services/progress_chain_runner.py b/chain_service/services/progress_chain_runner.py index c8e4925..6ae9886 100644 --- a/chain_service/services/progress_chain_runner.py +++ b/chain_service/services/progress_chain_runner.py @@ -44,10 +44,10 @@ class ProgressChainRunnerService: progress_action.started_at = datetime.utcnow() progress_action_service = self.progress_action_service_factory( - progress_action + progress_chain=progress_chain, progress_action=progress_action ) - await progress_action_service.process(progress_action) + await progress_action_service.process() progress_action.status = ProgressActionStatusEnum.DONE return True