28 lines
894 B
Python
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
|