"""
Decorators for registering cron tasks.
"""

from django_cronjob_utils.registry import TaskRegistry


def register_task(name: str, code: str, **config):
    """
    Decorator for registering a cron task.
    
    Args:
        name: Task name (e.g., 'calc-commission')
        code: Task code (e.g., 'A001')
        **config: Task configuration options:
            - execution_pattern: Execution pattern (STANDARD, ALWAYS, RERUN_ON_FAILURE, RATE_LIMITED)
            - retry_on_failure: Whether to retry on failure (default: False)
            - max_retries: Maximum number of retries (default: 0)
            - retry_delay: Delay between retries in seconds (default: 300)
            - timeout: Task timeout in seconds (default: None)
    
    Example:
        @register_task('calc-commission', 'A001',
                      execution_pattern=ExecutionPattern.RERUN_ON_FAILURE,
                      retry_on_failure=True,
                      max_retries=3,
                      timeout=3600)
        class CalcCommissionTask(CronTask):
            def execute(self, date: date) -> dict:
                # Business logic
                return {'error': False, 'message': 'Success'}
    """
    def decorator(cls):
        TaskRegistry.register(name, code, cls, **config)
        return cls
    return decorator
