/
Kostyable
/
callmaster
Обзор
Документация
Войти
/
Kostyable
/
callmaster
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
app/views/client.py
51 строка
2 KB
Kostyable
feat: implement mvc model
29 окт 2024, 17:52
29 окт 2024, 17:52
0ad77c5
Код
Авторство
О чём код?
from fastapi import FastAPI, Path, Body, APIRouter from pydantic import EmailStr from app.utils.validators import validate_phone_number, validate_password from app.models.main import Client, ClientInput from app.controllers.client_controller import register_client_controller, get_client_controller, update_client_email_controller, update_client_phone_controller, update_client_password_controller app = FastAPI() router = APIRouter(prefix="/clients") # Register a new client @router.post("/", response_model=Client, status_code=201) async def register_client(client_input: ClientInput): validate_phone_number(client_input.phone_number) validate_password(client_input.password) client_data = client_input.model_dump() client_id = register_client_controller(client_data) client_data['id'] = client_id return Client(**client_data) # Get a client by ID @router.get("/{id}", response_model=Client) async def get_client(id: int = Path(..., title="Client ID", ge=1)): client = get_client_controller(id) return client # Update client email @router.put("/{id}/email", status_code=200) async def update_client_email( id: int = Path(..., title="Client ID", ge=1), email: EmailStr = Body(...) ): return update_client_email_controller(id, email) # Update client phone number @router.put("/{id}/phone", status_code=200) async def update_client_phone( id: int = Path(..., title="Client ID", ge=1), phone_number: str = Body(...) ): validate_phone_number(phone_number) return update_client_phone_controller(id, phone_number) # Change client password @router.put("/{id}/password", status_code=200) async def update_client_password( id: int = Path(..., title="Client ID", ge=1), password: str = Body(...) ): validate_password(password) return update_client_password_controller(id, password)