feat(core,backends,frontends,storage): conversations, inject queue, session pool, gateway mcp tools, api frontend

This commit is contained in:
hh committed 2026-08-28 03:08:30 +02:00
1 parent 50b7057fa4
commit 33ccc78fec
28 files changed
+3543 -345

No files matched your search

+23 -3
View File
@@ -105,9 +105,29 @@ def _add_missing_columns(conn: Connection) -> None:
if column.name in existing:
continue
kind = column.type.compile(conn.dialect)
conn.execute(
text(f"ALTER TABLE {table.name} ADD COLUMN {column.name} {kind}")
)
ddl = f"ALTER TABLE {table.name} ADD COLUMN {column.name} {kind}"
default = _column_default(column)
if default is not None:
ddl += f" DEFAULT {default}"
conn.execute(text(ddl))
def _column_default(column: Any) -> str | None:
"""Literal for ``ADD COLUMN ... DEFAULT`` so old rows get the model default."""
server_default = getattr(column, "server_default", None)
if server_default is not None:
return str(server_default.arg.text)
default = getattr(column, "default", None)
if default is None or default.is_callable:
return None
value = default.arg
if isinstance(value, bool):
return "TRUE" if value else "FALSE"
if isinstance(value, int | float):
return repr(value)
if isinstance(value, str):
return "'" + value.replace("'", "''") + "'"
return None
# ---- Token CRUD ---------------------------------------------------------