Coverage for packages/sql-smith/src/sql_smith/query/abstract_query.py: 100%
14 statements
« prev ^ index » next coverage.py v7.11.0, created at 2024-01-01 00:00 +0000
« prev ^ index » next coverage.py v7.11.0, created at 2024-01-01 00:00 +0000
1from abc import abstractmethod
3from sql_smith.interfaces import EngineInterface, QueryInterface
4from sql_smith.query.query import Query
7class AbstractQuery(QueryInterface):
8 """Base class for queries."""
10 def __init__(self, engine: "EngineInterface"):
11 super().__init__()
12 self._engine = engine
14 @abstractmethod
15 def as_expression(self) -> "ExpressionInterface":
16 raise NotImplementedError("Must override as_expression")
18 @abstractmethod
19 def start_expression(self) -> "ExpressionInterface":
20 raise NotImplementedError("Must override start_expression")
22 def compile(self) -> "Query":
23 """Compiles the query and returns the Query object"""
24 query = self.as_expression()
25 return Query(query.sql(self._engine), query.params(self._engine))
27 def sql(self, engine: "EngineInterface") -> str:
28 return self.as_expression().sql(engine)
30 def params(self, engine: "EngineInterface") -> str:
31 return self.as_expression().params(engine)