fix: add logging to service update endpoint and improve error handling

- Log received scheduled_date and parsed value on PUT /service/update/{id}
- Wrap datetime.fromisoformat in try/except to return 400 on bad format
- Add db.refresh after commit to confirm persisted value in logs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-18 14:39:22 -04:00
parent 07865480c7
commit 8c8bb4db66
2 changed files with 14 additions and 1 deletions
+11
View File
@@ -293,9 +293,18 @@ async def update_service_call(
if not data: if not data:
return error_response("No data provided", 400) return error_response("No data provided", 400)
logger.info(f"PUT /service/update/{id} - received scheduled_date={data.get('scheduled_date')!r}, type={data.get('type_service_call')!r}")
scheduled_datetime_str = data.get('scheduled_date') scheduled_datetime_str = data.get('scheduled_date')
if scheduled_datetime_str: if scheduled_datetime_str:
try:
service_record.scheduled_date = datetime.fromisoformat(scheduled_datetime_str) service_record.scheduled_date = datetime.fromisoformat(scheduled_datetime_str)
logger.info(f"PUT /service/update/{id} - parsed scheduled_date={service_record.scheduled_date}")
except ValueError as e:
logger.error(f"PUT /service/update/{id} - failed to parse scheduled_date: {e}")
return error_response(f"Invalid scheduled_date format: {scheduled_datetime_str}", 400)
else:
logger.warning(f"PUT /service/update/{id} - scheduled_date is empty/missing, not updating time")
service_record.type_service_call = data.get('type_service_call', service_record.type_service_call) service_record.type_service_call = data.get('type_service_call', service_record.type_service_call)
service_record.description = data.get('description', service_record.description) service_record.description = data.get('description', service_record.description)
@@ -303,6 +312,8 @@ async def update_service_call(
try: try:
db.commit() db.commit()
db.refresh(service_record)
logger.info(f"PUT /service/update/{id} - committed, scheduled_date now={service_record.scheduled_date}")
return success_response({"service": serialize_service(service_record)}) return success_response({"service": serialize_service(service_record)})
except Exception as e: except Exception as e:
db.rollback() db.rollback()
+2
View File
@@ -8,6 +8,7 @@ from config import load_config
from sqlalchemy import create_engine, text from sqlalchemy import create_engine, text
from sqlalchemy.orm import sessionmaker from sqlalchemy.orm import sessionmaker
# TODO: Consider using a more robust configuration management system
from app.routers import service from app.routers import service
@@ -90,6 +91,7 @@ app.add_middleware(
@app.get("/") @app.get("/")
def health_check(): def health_check():
# TODO: Add more comprehensive health checks including DB status
return {"ok": True, "service": "eamco_service"} return {"ok": True, "service": "eamco_service"}