feat: 批量更新也能够支持按需更新

This commit is contained in:
martsforever
2025-10-14 21:55:00 +08:00
parent e7d06dcb8f
commit b530cb95b7
+3 -7
View File
@@ -203,16 +203,12 @@ async def update(session: AsyncSessionDep, query_config, module_config, debug_da
row = get_value(query_config, 'row', None) row = get_value(query_config, 'row', None)
update_by_fields = get_value(query_config, 'updateByFields', env.default_update_by_fields) update_by_fields = get_value(query_config, 'updateByFields', env.default_update_by_fields)
update_fields = get_value(query_config, 'updateFields', None)
if row is None: if row is None:
return { return {
"error": "row parameter is missing", "error": "row parameter is missing",
} }
if not update_fields and update_by_fields:
update_fields = row.keys()
row_id = get_value(row, 'id', None) row_id = get_value(row, 'id', None)
if row_id is None: if row_id is None:
@@ -223,7 +219,7 @@ async def update(session: AsyncSessionDep, query_config, module_config, debug_da
create_convertor(module_config)['encode_list']([row]) create_convertor(module_config)['encode_list']([row])
try: try:
sql, values = build_update_sql(module_config, row, update_fields) sql, values = build_update_sql(module_config, row, row.keys() if update_by_fields else None)
debug_data.append({"sql": sql, "values": values}) debug_data.append({"sql": sql, "values": values})
await conn.exec_driver_sql(sql, tuple(values)) await conn.exec_driver_sql(sql, tuple(values))
@@ -257,7 +253,7 @@ async def batch_update(session: AsyncSessionDep, query_config, module_config, de
conn = await session.connection() conn = await session.connection()
rows = get_value(query_config, 'rows', None) rows = get_value(query_config, 'rows', None)
update_fields = get_value(query_config, 'updateFields', None) update_by_fields = get_value(query_config, 'updateByFields', env.default_update_by_fields)
if rows is None or len(rows) == 0: if rows is None or len(rows) == 0:
return { return {
@@ -274,7 +270,7 @@ async def batch_update(session: AsyncSessionDep, query_config, module_config, de
try: try:
for row in rows: for row in rows:
sql, values = build_update_sql(module_config, row, update_fields) sql, values = build_update_sql(module_config, row, row.keys() if update_by_fields else None)
debug_data.append({"sql": sql, "values": values}) debug_data.append({"sql": sql, "values": values})
await conn.exec_driver_sql(sql, tuple(values)) await conn.exec_driver_sql(sql, tuple(values))