42 lines
1.5 KiB
Python
42 lines
1.5 KiB
Python
# /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
|