Rifqi Hafizuddin
[KM-512] create folder for querying from bd/tabular docs
2c8a3e8
raw
history blame
653 Bytes
"""Shared contract for query executors."""
from abc import ABC, abstractmethod
from dataclasses import dataclass, field
from src.rag.base import RetrievalResult
@dataclass
class QueryResult:
source_type: str # "database" or "document"
source_id: str # database_client_id or document_id
table_or_file: str
columns: list[str]
rows: list[dict]
row_count: int
metadata: dict = field(default_factory=dict)
class BaseExecutor(ABC):
@abstractmethod
async def execute(
self,
results: list[RetrievalResult],
user_id: str,
limit: int = 100,
) -> list[QueryResult]: ...