from dataclasses import dataclass from typing import Any from app.common.security.password_hasher import verify_password from app.constants.model.admin_user.admin_user_status_code import AdminUserStatusCode @dataclass(slots=True) class AdminUser: id: int username: str password: str user_type: str nickname: str phone: str email: str status: AdminUserStatusCode login_ip: str login_time: str remark: str @classmethod def from_row(cls, row: dict[str, Any]) -> "AdminUser": return cls( id=int(row["id"]), username=str(row["username"]), password=str(row["password"]), user_type=str(row["user_type"]), nickname=str(row["nickname"]), phone=str(row["phone"]), email=str(row["email"]), status=AdminUserStatusCode(int(row["status"])), login_ip=str(row["login_ip"]), login_time=str(row["login_time"]), remark=str(row["remark"]), ) def verify_password(self, password: str) -> bool: return verify_password(password, self.password) def to_public_dict(self) -> dict: return { "id": self.id, "username": self.username, "user_type": self.user_type, "nickname": self.nickname, "phone": self.phone, "email": self.email, "status": int(self.status), "login_ip": self.login_ip, "login_time": self.login_time, "remark": self.remark, }