TIF_E41211115_Genso_quiz_ba.../app/helpers/response_helper.py

28 lines
894 B
Python

from flask import jsonify, current_app
from typing import Optional, Union
from schemas import ResponseSchema
def make_response(
message: str,
data: Optional[dict] = None,
meta: Optional[dict] = None,
status_code: int = 200,
):
response = ResponseSchema(message=message, data=data, meta=meta)
return jsonify(response.model_dump()), status_code
def make_error_response(
err: Union[Exception, str],
log_message: Optional[str] = None,
status_code: int = 500,
):
"""Logs the error and returns a standardized error response"""
error_message = str(err) if isinstance(err, Exception) else err
log_msg = log_message or f"An error occurred: {error_message}"
current_app.logger.error(log_msg, exc_info=True)
response = ResponseSchema(message="Internal server error", data=None, meta=None)
return jsonify(response.model_dump()), status_code