Update main.py
This commit is contained in:
@@ -290,19 +290,22 @@ async def update_service(service_id: int, updates: dict):
|
|||||||
|
|
||||||
# Allowed fields to update
|
# Allowed fields to update
|
||||||
allowed_fields = {"alias", "git_url"}
|
allowed_fields = {"alias", "git_url"}
|
||||||
update_fields = {k: v for k, v in updates.items() if k in allowed_fields and v is not None}
|
update_fields = {k: v for k, v in updates.items() if k in allowed_fields}
|
||||||
|
|
||||||
if not update_fields:
|
if not update_fields:
|
||||||
return dict(service)
|
return dict(service)
|
||||||
|
|
||||||
# Build dynamic UPDATE query
|
# Build dynamic UPDATE query
|
||||||
set_clauses = [f"{field} = ${i+1}" for i, field in enumerate(update_fields.keys())]
|
set_clauses = [f"{field} = ${i+1}" for i, field in enumerate(update_fields.keys())]
|
||||||
values = list(update_fields.values()) + [service_id]
|
values = list(update_fields.values())
|
||||||
|
|
||||||
await conn.execute(
|
# Add last_updated and service_id to query
|
||||||
f"UPDATE services SET {', '.join(set_clauses)}, last_updated = ${ len(values)} WHERE id = ${len(values)+1}",
|
set_clauses.append(f"last_updated = ${len(values) + 1}")
|
||||||
*values, datetime.utcnow(), service_id
|
values.append(datetime.utcnow())
|
||||||
)
|
values.append(service_id)
|
||||||
|
|
||||||
|
query = f"UPDATE services SET {', '.join(set_clauses)} WHERE id = ${len(values)}"
|
||||||
|
await conn.execute(query, *values)
|
||||||
|
|
||||||
updated_service = await conn.fetchrow("SELECT * FROM services WHERE id = $1", service_id)
|
updated_service = await conn.fetchrow("SELECT * FROM services WHERE id = $1", service_id)
|
||||||
return dict(updated_service)
|
return dict(updated_service)
|
||||||
|
|||||||
Reference in New Issue
Block a user