JustCaptain kod-buduschego
165ce666a9e627f765b3a6a87972121fd91731c1
Перейти к файлу
Код
db.py
import json
from dataclasses import dataclass

DB_URL: str = "database.json"


class DatabaseJSON:
    def __init__(self, path: str) -> None:
        self.path: str = path

    def read(self) -> dict:
        with open(file=self.path, mode="r", encoding="utf-8") as file:
            data = json.load(fp=file)
            return data

    def write(self, data: dict) -> None:
        with open(file=self.path, mode="w", encoding="utf-8") as file:
            json.dump(obj=data, fp=file, ensure_ascii=False, indent=2)


@dataclass
class User:
    id: int
    nickname: str
    token: str | None


class UserCRUD:
    def __init__(self, path_db: str) -> None:
        self.db: DatabaseJSON = DatabaseJSON(path=path_db)

    def get_user(self, id: str) -> User | None:
        data: dict = self.db.read()
        if data.get(id) is None:
            return None
        user = User(id=data[id]["id"], nickname=data[id]["nickname"], token=None)
        if data[id].get("token"):
            user.token = data[id]["token"]
        return user

    def get_users(self) -> list[User]:
        data: dict = self.db.read()
        result: list[User] = []
        for user_raw in data.values():
            print(user_raw)
            user = User(id=user_raw["id"], nickname=user_raw["nickname"], token=None)
            if user_raw.get("token"):
                user.token = user_raw["token"]
            result.append(user)
        return result


database = DatabaseJSON(path=DB_URL)