Vision ID: Standardize Site Domain and Journal objects with string-only IDs and searchable mapping
This commit is contained in:
@@ -9,8 +9,9 @@ from sqlalchemy import text, Time
|
||||
from sqlalchemy.exc import IntegrityError, OperationalError, ProgrammingError
|
||||
|
||||
from app.log import log, logger_reset
|
||||
# CRITICAL: Import the global connection state from lib_sql_core
|
||||
from app.lib_sql_core import db, sql_connect, set_last_sql_error
|
||||
# CRITICAL: Import the core module to access current global state
|
||||
from app import lib_sql_core
|
||||
from app.lib_sql_core import sql_connect, set_last_sql_error
|
||||
|
||||
# Helper for resolving random IDs
|
||||
from app.lib_redis_helpers import lookup_id_random_pop
|
||||
@@ -50,9 +51,9 @@ def sql_insert(
|
||||
log.error('SQL INSERT statement could not be created. Missing params.')
|
||||
return False
|
||||
|
||||
trans = db.begin()
|
||||
trans = lib_sql_core.db.begin()
|
||||
try:
|
||||
result_insert = db.execute(sql_insert_stmt, data)
|
||||
result_insert = lib_sql_core.db.execute(sql_insert_stmt, data)
|
||||
trans.commit()
|
||||
except IntegrityError as e:
|
||||
trans.rollback()
|
||||
@@ -122,16 +123,16 @@ def sql_update(
|
||||
else:
|
||||
return False
|
||||
|
||||
trans = db.begin()
|
||||
trans = lib_sql_core.db.begin()
|
||||
try:
|
||||
result_update = db.execute(sql_update_stmt, data)
|
||||
result_update = lib_sql_core.db.execute(sql_update_stmt, data)
|
||||
trans.commit()
|
||||
except OperationalError:
|
||||
trans.rollback()
|
||||
log.error('Operational error (gone away?). Retrying once...')
|
||||
sql_connect(current_db=db)
|
||||
sql_connect(current_db=lib_sql_core.db)
|
||||
try:
|
||||
result_update = db.execute(sql_update_stmt, data)
|
||||
result_update = lib_sql_core.db.execute(sql_update_stmt, data)
|
||||
trans.commit()
|
||||
except Exception as e:
|
||||
set_last_sql_error(e)
|
||||
@@ -182,9 +183,9 @@ def sql_insert_or_update(
|
||||
else:
|
||||
return False
|
||||
|
||||
trans = db.begin()
|
||||
trans = lib_sql_core.db.begin()
|
||||
try:
|
||||
res = db.execute(stmt, data)
|
||||
res = lib_sql_core.db.execute(stmt, data)
|
||||
trans.commit()
|
||||
return res.lastrowid if res.lastrowid > 0 else True
|
||||
except Exception as e:
|
||||
@@ -300,38 +301,32 @@ def sql_select(
|
||||
# ### END ### Core Help CRUD ### sql_select() ###
|
||||
|
||||
|
||||
# ### BEGIN ### Core Help CRUD ### run_sql_select() ###
|
||||
# ### BEGIN ### API DB SQL ### run_sql_select() ###
|
||||
@logger_reset
|
||||
def run_sql_select(
|
||||
sql: Any,
|
||||
sql: text,
|
||||
data: dict|None = None,
|
||||
commit: bool = False,
|
||||
log_lvl: int = logging.WARNING,
|
||||
) -> Any:
|
||||
log.setLevel(log_lvl)
|
||||
if not db:
|
||||
return False
|
||||
|
||||
|
||||
print(f"Executing SQL: {sql} with data: {data}", flush=True)
|
||||
|
||||
try:
|
||||
if commit: trans = db.begin()
|
||||
sql = sql.columns(recurring_start_time=Time, recurring_end_time=Time)
|
||||
result = db.execute(sql, data) if data else db.execute(sql)
|
||||
if commit: trans.commit()
|
||||
return result
|
||||
except (OperationalError, ProgrammingError):
|
||||
log.error('DB Error. Retrying once...')
|
||||
sql_connect(current_db=db)
|
||||
return lib_sql_core.db.execute(sql, data)
|
||||
except (OperationalError, ProgrammingError) as e:
|
||||
log.error(f'DB Error: {e}. Retrying once...')
|
||||
sql_connect(current_db=lib_sql_core.db)
|
||||
try:
|
||||
if commit: trans = db.begin()
|
||||
result = db.execute(sql, data) if data else db.execute(sql)
|
||||
if commit: trans.commit()
|
||||
return result
|
||||
except Exception:
|
||||
return False
|
||||
return lib_sql_core.db.execute(sql, data)
|
||||
except Exception as e2:
|
||||
set_last_sql_error(e2)
|
||||
raise e2 # RAISING instead of returning False
|
||||
except Exception as e:
|
||||
log.exception(e)
|
||||
return False
|
||||
# ### END ### Core Help CRUD ### run_sql_select() ###
|
||||
set_last_sql_error(e)
|
||||
raise e # RAISING instead of returning False
|
||||
# ### END ### API DB SQL ### run_sql_select() ###
|
||||
|
||||
# ### BEGIN ### Core Help CRUD ### sql_delete() ###
|
||||
@logger_reset
|
||||
@@ -360,7 +355,7 @@ def sql_delete(
|
||||
return False
|
||||
|
||||
try:
|
||||
result = db.execute(stmt, data) if data else db.execute(stmt)
|
||||
result = lib_sql_core.db.execute(stmt, data) if data else lib_sql_core.db.execute(stmt)
|
||||
return True if result.rowcount >= 1 else None
|
||||
except Exception as e:
|
||||
log.exception(e)
|
||||
|
||||
Reference in New Issue
Block a user