# /controllers/user_controller.py from flask import jsonify, request, current_app from services import UserService from schemas import RegisterSchema from pydantic import ValidationError from schemas import ResponseSchema from exception import AlreadyExistException class UserController: def __init__(self, userService: UserService): self.user_service = userService def register(self): try: request_data = request.get_json() register_data = RegisterSchema(**request_data) self.user_service.register_user(register_data) return jsonify(ResponseSchema(message="Register Success").model_dump()), 200 except ValidationError as e: current_app.logger.error(f"Validation error: {e}") response = ResponseSchema(message="Invalid input", data=None, meta=None) return jsonify(response.model_dump()), 400 except AlreadyExistException as e: return ( jsonify( ResponseSchema(message=str(e), data=None, meta=None).model_dump() ), 409, ) except Exception as e: current_app.logger.error( f"Error during Google login: {str(e)}", exc_info=True ) response = ResponseSchema( message="Internal server error", data=None, meta=None ) return jsonify(response.model_dump()), 500