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