from abc import abstractmethod
from datetime import timedelta
from typing import Any

from csirtmu.core.temporal import ScheduledTemporalWorkflow
from temporalio import workflow


class LoggedScheduledWorkflow(ScheduledTemporalWorkflow):
    @classmethod
    @abstractmethod
    def get_schedule_interval(cls) -> timedelta: ...

    @classmethod
    @abstractmethod
    def get_schedule_args(cls) -> tuple[Any, ...]: ...

    @classmethod
    @abstractmethod
    def get_schedule_task_queue(cls) -> str: ...

    @classmethod
    def log_workflow(cls) -> None:
        workflow.logger.info("Starting workflow: ")
