Quoting heimdall column order so it is not mistaken by sqlite
Homelab Main / deploy (push) Successful in 1m22s Details

This commit is contained in:
juvdiaz 2026-06-02 10:13:15 -06:00
parent 62ed2c1f6d
commit ccb8247577
1 changed files with 8 additions and 4 deletions

View File

@ -113,6 +113,9 @@ data:
def columns(conn, table): def columns(conn, table):
return {row[1] for row in conn.execute(f"pragma table_info({table})")} return {row[1] for row in conn.execute(f"pragma table_info({table})")}
def quote_identifier(name):
return '"' + name.replace('"', '""') + '"'
def wait_for_items_table(db_path): def wait_for_items_table(db_path):
while True: while True:
try: try:
@ -130,7 +133,7 @@ data:
for order, link in enumerate(links): for order, link in enumerate(links):
existing = conn.execute( existing = conn.execute(
"select id from items where title = ?", 'select "id" from "items" where "title" = ?',
(link["title"],), (link["title"],),
).fetchone() ).fetchone()
values = { values = {
@ -155,10 +158,10 @@ data:
name for name in values name for name in values
if name in item_columns and name not in ("id", "title", "created_at") if name in item_columns and name not in ("id", "title", "created_at")
] ]
assignments = ", ".join(f"{name} = ?" for name in update_columns) assignments = ", ".join(f"{quote_identifier(name)} = ?" for name in update_columns)
params = [values[name] for name in update_columns] params = [values[name] for name in update_columns]
params.append(existing[0]) params.append(existing[0])
conn.execute(f"update items set {assignments} where id = ?", params) conn.execute(f'update "items" set {assignments} where "id" = ?', params)
continue continue
insert_columns = [ insert_columns = [
@ -166,8 +169,9 @@ data:
if name in item_columns and name != "deleted_at" if name in item_columns and name != "deleted_at"
] ]
placeholders = ", ".join("?" for _ in insert_columns) placeholders = ", ".join("?" for _ in insert_columns)
quoted_insert_columns = ", ".join(quote_identifier(name) for name in insert_columns)
conn.execute( conn.execute(
f"insert into items ({', '.join(insert_columns)}) values ({placeholders})", f'insert into "items" ({quoted_insert_columns}) values ({placeholders})',
[values[name] for name in insert_columns], [values[name] for name in insert_columns],
) )