JustCaptain kod-buduschego
llm/middle-8396c3
Перейти к файлу
Код
main.py
from dataclasses import dataclass

from litestar import Litestar, get, post


@dataclass
class UserSchemaDataclass:
    email: str
    password: str
    name: str


DB: dict = {}
COUNT: int = 0


@post(path="/api/v1/users/register")
def register_handler(data: UserSchemaDataclass) -> UserSchemaDataclass | None:
    global DB, COUNT
    COUNT += 1
    if 8 > len(data.password) or 50 < len(data.password):
        return None
    if 3 > len(data.name) or 31 < len(data.name):
        return None
    if valid_email(email=data.email) and uniq_email(email=data.email):
        new_user = {"email": data.email, "password": data.password, "name": data.name}
        DB[COUNT] = new_user
        return data


@get(path="/api/v1/users/")
def get_users() -> list[UserSchemaDataclass]:
    response: list[UserSchemaDataclass] = []
    for user_dict in DB.values():
        user = UserSchemaDataclass(
            email=user_dict["email"],
            password=user_dict["password"],
            name=user_dict["name"],
        )
        response.append(user)
    return response


def uniq_email(email: str) -> bool:
    for user_dict in DB.values():
        if user_dict["email"] == email:
            return False
    return True


def valid_email(email: str) -> bool:
    valid = [False, False, False]
    if email.count("@") == 1:
        valid[0] = True
    if valid[0]:
        return True
    return False


app = Litestar([register_handler, get_users])


if __name__ == "__main__":
    import uvicorn

    uvicorn.run(app="main:app", reload=True)