Source code for neosqlite.collection.expr_evaluator.sql_converters
"""
SQL converters for expression evaluation.
Composes domain-specific mixins into SqlConvertersMixin, which provides
all _convert_* methods for translating MongoDB $expr operators to SQL.
This package was split from the monolithic sql_converters.py (1990 lines)
into 13 focused modules mirroring the python_evaluators/ structure.
"""
from __future__ import annotations
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from ...jsonb_support import JSONBContext
from ..context import AggregationContext
from .arithmetic import ArithmeticMixin
from .array import ArrayMixin
from .comparison import ComparisonMixin
from .conditional import ConditionalMixin
from .core import CoreMixin
from .data_size import DataSizeMixin
from .date import DateMixin
from .logical import LogicalMixin
from .math_trig import MathTrigMixin
from .object import ObjectMixin
from .set import SetMixin
from .string import StringMixin
from .type_converters import TypeConvertersMixin
__all__ = ["SqlConvertersMixin"]
[docs]
class SqlConvertersMixin(
CoreMixin,
LogicalMixin,
ComparisonMixin,
ArithmeticMixin,
ConditionalMixin,
ArrayMixin,
SetMixin,
StringMixin,
MathTrigMixin,
DateMixin,
ObjectMixin,
TypeConvertersMixin,
DataSizeMixin,
):
"""
Mixin class providing SQL conversion methods for expression evaluation.
This class is designed to be composed into ExprEvaluator and provides
all the _convert_* methods for converting MongoDB operators to SQL.
Required attributes from parent class:
- data_column: Name of the JSON data column
- json_function_prefix: 'json' or 'jsonb' based on support
- json_each_function: 'json_each' or 'jsonb_each'
- json_group_array_function: 'json_group_array' or 'jsonb_group_array'
- jsonb: JSONBContext with JSONB capability flags
- _log2_warned: Boolean tracking if $log2 warning was issued
- _current_context: Optional AggregationContext for variable scoping
"""
# Type annotations for simple attributes expected from parent class
data_column: str
jsonb: "JSONBContext"
_log2_warned: bool
_current_context: "AggregationContext | None"