from chain_service.database.models.progress_chain import ( ProgressChain, BaseProgressAction, ) from .base import BaseProgressActionService from .wait_progress_action import WaitProgressActionService from .comment_progress_action import CommentProgressActionService from planfix_client import PlanfixClient class ProgressActionServiceFactory: def __init__(self, planfix_client: PlanfixClient): self.planfix_client = planfix_client def __call__( self, progress_chain: ProgressChain, progress_action: BaseProgressAction ) -> BaseProgressActionService: match progress_action.action_type: case "wait": return WaitProgressActionService( progress_chain=progress_chain, progress_action=progress_action ) case "comment": return CommentProgressActionService( planfix_client=self.planfix_client, progress_chain=progress_chain, progress_action=progress_action, )