import logging from app.log import logger_reset # 1. Foundational connection and error state from SQL Core from app.lib_sql_core import ( db, engine, reconnect_db, sql_connect, get_last_sql_error, set_last_sql_error ) # 2. Foundational CRUD logic from SQL Crud library from app.lib_sql_crud import ( sql_insert, sql_update, sql_insert_or_update, sql_select, run_sql_select, sql_delete ) # 3. Search logic parts (delegated from search library) from app.lib_sql_search import ( sql_limit_offset_part as _sql_limit_offset_part, sql_and_like_part as _sql_and_like_part, sql_or_like_part as _sql_or_like_part, sql_and_in_dict_li_part as _sql_and_in_dict_li_part, sql_and_qry_part as _sql_and_qry_part, sql_fulltext_qry_part as _sql_fulltext_qry_part, sql_enable_part as _sql_enable_part, sql_hidden_part as _sql_hidden_part, sql_where_qry_part as _sql_where_qry_part, sql_search_qry_part as _sql_search_qry_part ) # 4. Redis and ID resolution helpers from app.lib_redis_helpers import ( redis_lookup_id_random as _redis_lookup_id_random, get_id_random as _get_id_random, reset_redis as _reset_redis, lookup_id_random_pop as _lookup_id_random_pop ) # ### BEGIN ### API DB SQL ### redis_lookup_id_random() ### @logger_reset def redis_lookup_id_random( record_id_random: int|str, table_name: str, check_int_id: bool = False, log_lvl: int = logging.WARNING, minutes: int = 30, reset_rate: int = 10, ): return _redis_lookup_id_random(record_id_random, table_name, check_int_id, log_lvl, minutes, reset_rate) # ### END ### API DB SQL ### redis_lookup_id_random() ### # ### BEGIN ### API DB SQL ### get_id_random() ### @logger_reset def get_id_random(record_id: int, table_name: str, log_lvl: int = logging.WARNING): return _get_id_random(record_id, table_name, log_lvl) # ### END ### API DB SQL ### get_id_random() ### @logger_reset def reset_redis(): return _reset_redis() # ### BEGIN ### API DB SQL ### lookup_id_random_pop() ### @logger_reset def lookup_id_random_pop(obj_data: dict, log_lvl: int = logging.WARNING): return _lookup_id_random_pop(obj_data, log_lvl) # ### END ### API DB SQL ### lookup_id_random_pop() ### # ### BEGIN ### API DB SQL Methods ### get_account_id_w_for_type_id() ### @logger_reset def get_account_id_w_for_type_id(for_type: str, for_id: int|str): if fid := redis_lookup_id_random(record_id_random=for_id, table_name=for_type): sql = f"SELECT account_id FROM `{for_type}` WHERE id = :fid LIMIT 1;" if result := sql_select(sql=sql, data={'fid': fid}): return result.get('account_id') return False # ### END ### API DB SQL Methods ### get_account_id_w_for_type_id() ### @logger_reset def sql_where_qry_part(qry_dict_li: list): return _sql_where_qry_part(qry_dict_li) @logger_reset def sql_fulltext_qry_part(fulltext_qry_dict: dict): return _sql_fulltext_qry_part(fulltext_qry_dict) @logger_reset def sql_and_qry_part(and_qry_dict_obj: dict): return _sql_and_qry_part(and_qry_dict_obj) @logger_reset def sql_and_like_part(and_like_dict_obj: dict): return _sql_and_like_part(and_like_dict_obj) @logger_reset def sql_or_like_part(or_like_dict_obj: dict): return _sql_or_like_part(or_like_dict_obj) @logger_reset def sql_and_in_dict_li_part(and_in_dict_li_dict_obj: dict): return _sql_and_in_dict_li_part(and_in_dict_li_dict_obj) @logger_reset def sql_enable_part(table_name: str, enabled: str): return _sql_enable_part(table_name, enabled) @logger_reset def sql_hidden_part(table_name: str, hidden: str): return _sql_hidden_part(table_name, hidden) @logger_reset def sql_limit_offset_part(limit: int, offset: int = 0): return _sql_limit_offset_part(limit, offset) @logger_reset def sql_search_qry_part(search_query: any, searchable_fields: list[str]|None = None, max_depth: int = 5, table_name: str|None = None): return _sql_search_qry_part(search_query, searchable_fields, max_depth, table_name) __all__ = [ 'db', 'engine', 'sql_connect', 'sql_insert', 'sql_update', 'sql_select', 'run_sql_select', 'sql_delete', 'redis_lookup_id_random', 'get_id_random', 'reset_redis', 'lookup_id_random_pop', 'sql_where_qry_part', 'sql_fulltext_qry_part', 'sql_and_qry_part', 'sql_and_like_part', 'sql_or_like_part', 'sql_and_in_dict_li_part', 'sql_enable_part', 'sql_hidden_part', 'sql_limit_offset_part', 'sql_search_qry_part', 'sql_insert_or_update', 'get_account_id_w_for_type_id', 'reconnect_db', 'get_last_sql_error', 'set_last_sql_error' ]