91 lines
2.3 KiB
Python
91 lines
2.3 KiB
Python
"""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 |