From 86b0af1e1700e2ea84af2f64990380bf82ccef9b Mon Sep 17 00:00:00 2001 From: Robert Date: Wed, 28 Feb 2024 18:09:12 +0700 Subject: [PATCH] progress action logic --- chain_service/services/__init__.py | 0 .../services/progress_action/__init__.py | 0 .../services/progress_action/base.py | 9 +++++++++ .../comment_progress_action.py | 8 ++++++++ .../services/progress_action/factory.py | 20 +++++++++++++++++++ .../progress_action/wait_progress_action.py | 10 ++++++++++ 6 files changed, 47 insertions(+) create mode 100644 chain_service/services/__init__.py create mode 100644 chain_service/services/progress_action/__init__.py create mode 100644 chain_service/services/progress_action/base.py create mode 100644 chain_service/services/progress_action/comment_progress_action.py create mode 100644 chain_service/services/progress_action/factory.py create mode 100644 chain_service/services/progress_action/wait_progress_action.py diff --git a/chain_service/services/__init__.py b/chain_service/services/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/chain_service/services/progress_action/__init__.py b/chain_service/services/progress_action/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/chain_service/services/progress_action/base.py b/chain_service/services/progress_action/base.py new file mode 100644 index 0000000..2d5d110 --- /dev/null +++ b/chain_service/services/progress_action/base.py @@ -0,0 +1,9 @@ +from abc import ABC, abstractmethod +from chain_service.database.models.progress_chain import BaseProgressAction + + +class BaseProgressActionService(ABC): + + @abstractmethod + async def process(self, progress_action: BaseProgressAction): + pass diff --git a/chain_service/services/progress_action/comment_progress_action.py b/chain_service/services/progress_action/comment_progress_action.py new file mode 100644 index 0000000..a5409ee --- /dev/null +++ b/chain_service/services/progress_action/comment_progress_action.py @@ -0,0 +1,8 @@ +from .base import BaseProgressActionService +from chain_service.database.models.progress_chain import CommentProgressAction + + +class CommentProgressActionService(BaseProgressActionService): + + async def process(self, progress_action: CommentProgressAction): + print("Comment service", progress_action) diff --git a/chain_service/services/progress_action/factory.py b/chain_service/services/progress_action/factory.py new file mode 100644 index 0000000..e6d6683 --- /dev/null +++ b/chain_service/services/progress_action/factory.py @@ -0,0 +1,20 @@ +from chain_service.database.models.progress_chain import BaseProgressAction + +from .base import BaseProgressActionService +from .wait_progress_action import WaitProgressActionService +from .comment_progress_action import CommentProgressActionService + + +class ProgressActionServiceFactory: + + def __call__( + self, progress_action: BaseProgressAction + ) -> BaseProgressActionService: + + match progress_action.action_type: + + case "wait": + return WaitProgressActionService() + + case "comment": + return CommentProgressActionService() diff --git a/chain_service/services/progress_action/wait_progress_action.py b/chain_service/services/progress_action/wait_progress_action.py new file mode 100644 index 0000000..1d928e0 --- /dev/null +++ b/chain_service/services/progress_action/wait_progress_action.py @@ -0,0 +1,10 @@ +from .base import BaseProgressActionService +from chain_service.database.models.progress_chain import WaitProgressAction + +import asyncio + + +class WaitProgressActionService(BaseProgressActionService): + + async def process(self, progress_action: WaitProgressAction): + await asyncio.sleep(progress_action.wait_for)