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 = {"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:
|
||||
return dict(service)
|
||||
|
||||
# Build dynamic UPDATE query
|
||||
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(
|
||||
f"UPDATE services SET {', '.join(set_clauses)}, last_updated = ${ len(values)} WHERE id = ${len(values)+1}",
|
||||
*values, datetime.utcnow(), service_id
|
||||
)
|
||||
# Add last_updated and service_id to query
|
||||
set_clauses.append(f"last_updated = ${len(values) + 1}")
|
||||
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)
|
||||
return dict(updated_service)
|
||||
|
||||
Reference in New Issue
Block a user