141 lines
4.5 KiB
Python
141 lines
4.5 KiB
Python
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'
|
|
] |