# plateforme.core.database.expressions
# ------------------------------------
# Copyright (c) 2023 Plateforme
# This module is part of Plateforme and is released under the MIT License.
# For the full license text, see the LICENSE file at the root directory of the
# project repository or visit https://opensource.org/license/mit.

"""
This module provides utilities for managing database expressions within the
Plateforme framework using SQLAlchemy features.
"""

from sqlalchemy.sql import (
    LABEL_STYLE_DEFAULT,
    LABEL_STYLE_DISAMBIGUATE_ONLY,
    LABEL_STYLE_NONE,
    LABEL_STYLE_TABLENAME_PLUS_COL,
    Executable,
    Select,
    Selectable,
    alias,
    all_,
    and_,
    any_,
    asc,
    between,
    bindparam,
    case,
    cast,
    collate,
    column,
    cte,
    delete,
    desc,
    distinct,
    except_,
    except_all,
    exists,
    extract,
    false,
    func,
    funcfilter,
    insert,
    intersect,
    intersect_all,
    join,
    label,
    lambda_stmt,
    lateral,
    literal,
    literal_column,
    modifier,
    not_,
    null,
    nulls_first,
    nulls_last,
    nullsfirst,
    nullslast,
    or_,
    outerjoin,
    outparam,
    over,
    select,
    table,
    tablesample,
    text,
    true,
    tuple_,
    type_coerce,
    union,
    union_all,
    update,
    values,
    within_group,
)
from sqlalchemy.sql.base import ExecutableOption
from sqlalchemy.sql.elements import (
    BinaryExpression,
    OperatorExpression,
    UnaryExpression,
)

__all__ = (
    'LABEL_STYLE_DEFAULT',
    'LABEL_STYLE_DISAMBIGUATE_ONLY',
    'LABEL_STYLE_NONE',
    'LABEL_STYLE_TABLENAME_PLUS_COL',
    'BinaryExpression',
    'Executable',
    'ExecutableOption',
    'OperatorExpression',
    'Select',
    'Selectable',
    'UnaryExpression',
    'alias',
    'all_',
    'and_',
    'any_',
    'asc',
    'between',
    'bindparam',
    'case',
    'cast',
    'collate',
    'column',
    'cte',
    'delete',
    'desc',
    'distinct',
    'except_',
    'except_all',
    'exists',
    'extract',
    'false',
    'func',
    'funcfilter',
    'insert',
    'intersect',
    'intersect_all',
    'join',
    'label',
    'lambda_stmt',
    'lateral',
    'literal',
    'literal_column',
    'modifier',
    'not_',
    'null',
    'nulls_first',
    'nulls_last',
    'nullsfirst',
    'nullslast',
    'or_',
    'outerjoin',
    'outparam',
    'over',
    'select',
    'table',
    'tablesample',
    'text',
    'true',
    'tuple_',
    'type_coerce',
    'union',
    'union_all',
    'update',
    'values',
    'within_group',
)
