feat: Blockingモデルを追加

pull/109/head
yupix 7 months ago
parent cfad9fb23e
commit b44336d235
No known key found for this signature in database
GPG Key ID: 2FF705F5C56D9C06

@ -0,0 +1,82 @@
from __future__ import annotations
from datetime import datetime
from typing import TYPE_CHECKING, Any
from mipac.manager.blocking import ClinetBlockingManager
from mipac.models.user import UserDetailedNotMe, packed_user
from mipac.types.blocking import IBlocking
from mipac.utils.format import str_to_datetime
if TYPE_CHECKING:
from mipac.manager.client import ClientManager
class Blocking:
def __init__(self, *, raw_blocking: IBlocking, client: ClientManager) -> None:
self.__raw_blocking: IBlocking = raw_blocking
self.__client: ClientManager = client
@property
def id(self) -> str:
"""ブロックID
Returns
-------
str
ブロックID
"""
return self.__raw_blocking["id"]
@property
def created_at(self) -> datetime:
"""ブロックした日時
Returns
-------
datetime
ブロックした日時
"""
return str_to_datetime(self.__raw_blocking["created_at"])
@property
def blockee_id(self) -> str:
"""ブロック対象のユーザーID
Returns
-------
str
ブロック対象のユーザーID
"""
return self.__raw_blocking["blockee_id"]
@property
def blockee(self) -> UserDetailedNotMe:
"""ブロック対象のユーザー情報
Returns
-------
UserDetailedNotMe
ブロック対象のユーザー情報
"""
return packed_user(self.__raw_blocking["blockee"], client=self.__client)
def _get(self, key: str) -> Any | None:
return self.__raw_blocking.get(key)
@property
def api(self) -> ClinetBlockingManager:
"""ブロック対象に対するAPIを利用するためのManager
Returns
-------
ClinetBlockingManager
ブロック対象に対するAPIを利用するためのManager
"""
return self.__client.user._create_client_blocking_manager(user_id=self.blockee.id)
def __eq__(self, __value: object) -> bool:
return isinstance(__value, Blocking) and self.id == __value.id
def __ne__(self, __value: object) -> bool:
return not self.__eq__(__value)

@ -0,0 +1,10 @@
from typing import TypedDict
from mipac.types.user import IUserDetailedNotMeSchema
class IBlocking(TypedDict):
id: str
created_at: str
blockee_id: str
blockee: IUserDetailedNotMeSchema
Loading…
Cancel
Save