2025-05-16 15:18:02 +08:00

91 lines
2.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""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