refactor: PartialInviteCodeをInviteCodeに統合

pull/105/head
yupix 10 months ago
parent ce48f90d02
commit 5580a42ea3
No known key found for this signature in database
GPG Key ID: 2FF705F5C56D9C06

@ -4,8 +4,8 @@ from typing import TYPE_CHECKING, AsyncGenerator, Literal
from mipac.abstract.action import AbstractAction from mipac.abstract.action import AbstractAction
from mipac.http import HTTPClient, Route from mipac.http import HTTPClient, Route
from mipac.models.invite import InviteCode, PartialInviteCode from mipac.models.invite import InviteCode
from mipac.types.invite import IInviteCode, IPartialInviteCode from mipac.types.invite import IInviteCode
from mipac.utils.format import remove_dict_empty from mipac.utils.format import remove_dict_empty
from mipac.utils.pagination import Pagination from mipac.utils.pagination import Pagination
@ -20,13 +20,13 @@ class AdminInviteActions(AbstractAction):
async def create_invite( async def create_invite(
self, count: int = 1, expires_at: str | None = None self, count: int = 1, expires_at: str | None = None
) -> list[PartialInviteCode]: ) -> list[InviteCode]:
raw_codes: list[IPartialInviteCode] = await self.__session.request( raw_codes: list[IInviteCode] = await self.__session.request(
route=Route(method="POST", path="/api/admin/invite/create"), route=Route(method="POST", path="/api/admin/invite/create"),
json={"count": count, "expiresAt": expires_at}, json={"count": count, "expiresAt": expires_at},
auth=True, auth=True,
) )
return [PartialInviteCode(raw_code, client=self.__client) for raw_code in raw_codes] return [InviteCode(raw_code, client=self.__client) for raw_code in raw_codes]
async def get_invite_list( async def get_invite_list(
self, self,

@ -1,78 +1,69 @@
from __future__ import annotations from __future__ import annotations
from datetime import datetime from datetime import datetime
from typing import TYPE_CHECKING, Generic, TypeVar from typing import TYPE_CHECKING
from mipac.abstract.model import AbstractModel
from mipac.models.lite.user import PartialUser from mipac.models.lite.user import PartialUser
from mipac.types.invite import IInviteCode, IPartialInviteCode from mipac.types.invite import IInviteCode
from mipac.utils.format import str_to_datetime from mipac.utils.format import str_to_datetime
if TYPE_CHECKING: if TYPE_CHECKING:
from mipac.manager.client import ClientManager from mipac.manager.client import ClientManager
T = TypeVar("T", bound=IPartialInviteCode) class InviteCode:
class PartialInviteCode(Generic[T], AbstractModel):
def __init__(self, raw_invite_code: T, *, client: ClientManager) -> None:
self._raw_invite_code: T = raw_invite_code
self._client = client
@property
def code(self) -> str:
return self._raw_invite_code["code"]
class InviteCode(PartialInviteCode[IInviteCode]):
def __init__(self, raw_invite_code: IInviteCode, *, client: ClientManager) -> None: def __init__(self, raw_invite_code: IInviteCode, *, client: ClientManager) -> None:
super().__init__(raw_invite_code=raw_invite_code, client=client) self.__raw_invite_code: IInviteCode = raw_invite_code
self.__client = client
@property @property
def id(self) -> str: def id(self) -> str:
return self._raw_invite_code["id"] return self.__raw_invite_code["id"]
@property
def code(self) -> str:
return self.__raw_invite_code["code"]
@property @property
def expires_at(self) -> datetime | None: def expires_at(self) -> datetime | None:
return ( return (
str_to_datetime(self._raw_invite_code["expires_at"]) str_to_datetime(self.__raw_invite_code["expires_at"])
if self._raw_invite_code["expires_at"] if self.__raw_invite_code["expires_at"]
else None else None
) )
@property @property
def created_at(self) -> datetime | None: def created_at(self) -> datetime | None:
return ( return (
str_to_datetime(self._raw_invite_code["created_at"]) str_to_datetime(self.__raw_invite_code["created_at"])
if self._raw_invite_code["created_at"] if self.__raw_invite_code["created_at"]
else None else None
) )
@property @property
def created_by(self) -> PartialUser | None: def created_by(self) -> PartialUser | None:
return ( return (
PartialUser(self._raw_invite_code["created_by"], client=self._client) PartialUser(self.__raw_invite_code["created_by"], client=self.__client)
if self._raw_invite_code["created_by"] if self.__raw_invite_code["created_by"]
else None else None
) )
@property @property
def used_by(self) -> PartialUser | None: def used_by(self) -> PartialUser | None:
return ( return (
PartialUser(self._raw_invite_code["used_by"], client=self._client) PartialUser(self.__raw_invite_code["used_by"], client=self.__client)
if self._raw_invite_code["used_by"] if self.__raw_invite_code["used_by"]
else None else None
) )
@property @property
def used_at(self) -> datetime | None: def used_at(self) -> datetime | None:
return ( return (
str_to_datetime(self._raw_invite_code["used_at"]) str_to_datetime(self.__raw_invite_code["used_at"])
if self._raw_invite_code["used_at"] if self.__raw_invite_code["used_at"]
else None else None
) )
@property @property
def used(self) -> bool: def used(self) -> bool:
return self._raw_invite_code["used"] return self.__raw_invite_code["used"]

@ -3,12 +3,9 @@ from typing import TypedDict
from mipac.types.user import IPartialUser from mipac.types.user import IPartialUser
class IPartialInviteCode(TypedDict): class IInviteCode(TypedDict):
code: str
class IInviteCode(IPartialInviteCode):
id: str id: str
code: str
expires_at: str | None expires_at: str | None
created_at: str created_at: str
created_by: IPartialUser | None created_by: IPartialUser | None

Loading…
Cancel
Save