"""Base adapter interface for rule storage.""" from abc import ABC, abstractmethod from typing import List, Optional, Dict, Any, Union from ...models.rule_models import AnyRule, RuleQuery, BaseRule class BaseRuleStorageAdapter(ABC): """Base class for rule storage adapters.""" @abstractmethod def initialize(self) -> None: """初始化适配器(例如,连接到数据库,验证文件路径等)。""" pass @abstractmethod def load_rule_by_id(self, rule_id: str, version: Optional[str] = None) -> Optional[AnyRule]: """ 按ID加载单个规则。 Args: rule_id: 规则的唯一标识符。 version: 可选的版本标识符。如果未提供,则使用配置的默认版本策略。 Returns: 找到的规则对象,或者如果未找到则返回None。 """ pass @abstractmethod def query_rules(self, query: RuleQuery) -> List[AnyRule]: """ 根据查询条件返回匹配的规则列表。 Args: query: 规则查询条件。 Returns: 匹配规则的列表。 """ pass @abstractmethod def save_rule(self, rule: BaseRule) -> bool: """ 保存单个规则。 Args: rule: 要保存的规则对象。 Returns: 操作是否成功。 """ pass @abstractmethod def delete_rule(self, rule_id: str, version: Optional[str] = None) -> bool: """ 删除单个规则。 Args: rule_id: 规则的唯一标识符。 version: 可选的版本标识符。如果未提供,通常会删除所有版本。 Returns: 操作是否成功。 """ pass @abstractmethod def list_all_rule_ids(self) -> List[str]: """ 列出存储中的所有规则ID。 Returns: 规则ID的列表。 """ pass @abstractmethod def get_rule_versions(self, rule_id: str) -> List[str]: """ 获取特定规则ID的所有可用版本。 Args: rule_id: 规则的唯一标识符。 Returns: 版本标识符的列表。 """ pass