sofhiaazzhr's picture
initial structure
efc0c0a
Raw
History Blame
713 Bytes
"""DbExecutor β€” runs compiled SQL on a user's external DB.
Pipeline:
IR β†’ SqlCompiler β†’ SQL string + params
↓
sqlglot validation (SELECT-only, whitelist tables/columns, LIMIT enforced)
↓
asyncpg / pymysql in read-only transaction with timeout (30s)
↓
QueryResult
"""
from ...catalog.models import Catalog
from ..compiler.sql import SqlCompiler
from ..ir.models import QueryIR
from .base import BaseExecutor, QueryResult
class DbExecutor(BaseExecutor):
def __init__(self, catalog: Catalog) -> None:
self._catalog = catalog
self._compiler = SqlCompiler(catalog)
async def run(self, ir: QueryIR) -> QueryResult:
raise NotImplementedError