# -*- coding: utf-8 -*-
"""
V2-009 BaseAdapter

역할:
- V2 Adapter 계층의 공통 부모 클래스.
- Stage는 Adapter의 결과 dict만 보고 동작한다.
- 실제 V1 기능 연결은 각 Adapter(Session/Collect/Draft/Publish)에서 담당한다.
"""

from abc import ABC, abstractmethod
from typing import Any


class BaseAdapter(ABC):
    name = "base_adapter"

    def ok(self, message: str = "", data: dict[str, Any] | None = None, **extra) -> dict:
        result = {
            "success": True,
            "message": message,
            "data": data or {},
        }
        result.update(extra)
        return result

    def fail(self, message: str = "", data: dict[str, Any] | None = None, **extra) -> dict:
        result = {
            "success": False,
            "message": message,
            "data": data or {},
        }
        result.update(extra)
        return result

    @abstractmethod
    def run(self, context) -> dict:
        """
        모든 Adapter는 run(context)를 구현한다.

        반환 기본 형식:
        {
            "success": bool,
            "message": str,
            "data": dict
        }
        """
        raise NotImplementedError
