JustCaptain kod-buduschego
165ce666a9e627f765b3a6a87972121fd91731c1
Перейти к файлу
Код
main.py
import secrets

from litestar import Litestar, get, post

from db import DB_URL, User, UserCRUD, database

user_crud = UserCRUD(path_db=DB_URL)


@get("/health")
async def health() -> dict[str, str]:
    return {"status": "ok"}


@get("/users/{id:str}/token")
def generate_token(id: str) -> dict[str, str | int] | None:
    data = database.read()
    user = data.get(id)
    if user is None:
        return None
    data[id]["token"] = secrets.token_hex()
    database.write(data=data)
    return user


@get("/users/{id:str}")
def get_user(id: str) -> User | None:
    response = user_crud.get_user(id)
    return response


@get("/users")
async def get_users() -> list[User]:
    response = user_crud.get_users()
    return response


@post("users/create")
def create_user(data: dict) -> dict | None:
    pass


"""
@get("/search/users/{username: str}")
def search_users(username: str) -> list[dict] | None:
    db: dict = read_db()
    result: list[dict] = []
    for user in db.values():
        if user.get("nickname") and user["nickname"] == username:
            result.append(user)
    if len(result) == 0:
        return None
    return result
"""
app = Litestar([health, get_user, generate_token, get_users])

if __name__ == "__main__":
    import uvicorn

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