You've already forked RekomenciBackend
add lints
This commit is contained in:
@@ -3,7 +3,6 @@ from typing import Protocol
|
||||
|
||||
from template_project.application.access_token.entity import AccessTokenId
|
||||
|
||||
|
||||
type RawAccessToken = str
|
||||
|
||||
|
||||
|
||||
@@ -10,6 +10,7 @@ from template_project.application.user.entity import UserId
|
||||
|
||||
AccessTokenId = NewType("AccessTokenId", UUID)
|
||||
|
||||
|
||||
@to_entity
|
||||
class AccessToken(Entity[AccessTokenId]):
|
||||
user_id: UserId
|
||||
@@ -32,17 +33,12 @@ class AccessToken(Entity[AccessTokenId]):
|
||||
revoked=False,
|
||||
)
|
||||
|
||||
|
||||
def ensure_expired(self) -> None:
|
||||
if self.expired_predicate():
|
||||
raise AccessTokenExpiredError(id_=self.id)
|
||||
|
||||
def expired_predicate(self) -> bool:
|
||||
return (
|
||||
(self.expires_in < datetime.now(tz=UTC))
|
||||
or self.revoked
|
||||
or self.deleted_at is not None
|
||||
)
|
||||
return (self.expires_in < datetime.now(tz=UTC)) or self.revoked or self.deleted_at is not None
|
||||
|
||||
def revoke(self) -> None:
|
||||
self.revoked = True
|
||||
|
||||
@@ -7,11 +7,11 @@ from typing import dataclass_transform
|
||||
eq_default=False,
|
||||
kw_only_default=True,
|
||||
)
|
||||
def to_data_structure[_InteractorClsT](interactor_cls: type[_InteractorClsT]) -> type[_InteractorClsT]:
|
||||
def to_data_structure[InteractorClsT](interactor_cls: type[InteractorClsT]) -> type[InteractorClsT]:
|
||||
return dataclass(
|
||||
kw_only=True,
|
||||
eq=False,
|
||||
match_args=False,
|
||||
frozen=True,
|
||||
slots=True,
|
||||
)(interactor_cls)
|
||||
)(interactor_cls)
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
from collections.abc import Hashable
|
||||
from dataclasses import dataclass
|
||||
from datetime import datetime
|
||||
from typing import dataclass_transform, override
|
||||
from typing import cast, dataclass_transform, override
|
||||
from uuid import UUID
|
||||
|
||||
from template_project.application.common.errors import EntityAlreadyDeletedError
|
||||
|
||||
|
||||
@dataclass_transform(kw_only_default=True)
|
||||
def to_entity[_EntityCLsT](entity_cls: type[_EntityCLsT]) -> type[_EntityCLsT]:
|
||||
def to_entity[EntityCLsT](entity_cls: type[EntityCLsT]) -> type[EntityCLsT]:
|
||||
return dataclass(kw_only=True)(entity_cls)
|
||||
|
||||
|
||||
@to_entity
|
||||
class Entity[_EntityId: UUID](Hashable):
|
||||
id: _EntityId
|
||||
class Entity[EntityId: UUID](Hashable):
|
||||
id: EntityId
|
||||
created_at: datetime
|
||||
deleted_at: datetime | None = None
|
||||
|
||||
@@ -25,7 +25,7 @@ class Entity[_EntityId: UUID](Hashable):
|
||||
@override
|
||||
def __eq__(self, other: object) -> bool:
|
||||
if isinstance(other, Entity):
|
||||
return self.id == other.id
|
||||
return cast(bool, self.id == other.id)
|
||||
return NotImplemented
|
||||
|
||||
@override
|
||||
|
||||
@@ -7,7 +7,7 @@ from typing import dataclass_transform
|
||||
eq_default=False,
|
||||
kw_only_default=True,
|
||||
)
|
||||
def to_interactor[_InteractorClsT](interactor_cls: type[_InteractorClsT]) -> type[_InteractorClsT]:
|
||||
def to_interactor[InteractorClsT](interactor_cls: type[InteractorClsT]) -> type[InteractorClsT]:
|
||||
return dataclass(
|
||||
kw_only=True,
|
||||
eq=False,
|
||||
@@ -15,4 +15,4 @@ def to_interactor[_InteractorClsT](interactor_cls: type[_InteractorClsT]) -> typ
|
||||
frozen=True,
|
||||
match_args=False,
|
||||
slots=True,
|
||||
)(interactor_cls)
|
||||
)(interactor_cls)
|
||||
|
||||
@@ -10,8 +10,5 @@ class UserDataGateway(Protocol):
|
||||
raise NotImplementedError
|
||||
|
||||
@abstractmethod
|
||||
async def exists_by_email(
|
||||
self,
|
||||
email: str
|
||||
) -> bool:
|
||||
raise NotImplementedError
|
||||
async def exists_by_email(self, email: str) -> bool:
|
||||
raise NotImplementedError
|
||||
|
||||
@@ -8,6 +8,7 @@ from template_project.application.common.entity import Entity, to_entity
|
||||
|
||||
UserId = NewType("UserId", UUID)
|
||||
|
||||
|
||||
@to_entity
|
||||
class User(Entity[UserId]):
|
||||
email: str
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
from typing import override
|
||||
|
||||
from template_project.application.common.errors import ApplicationError, to_error
|
||||
|
||||
|
||||
@@ -10,6 +11,7 @@ class UserWithEmailAlreadyExistsError(ApplicationError):
|
||||
def __str__(self) -> str:
|
||||
return f"User with the email={self.email!r} already exists"
|
||||
|
||||
|
||||
@to_error
|
||||
class UserUnauthorizedError(ApplicationError):
|
||||
pass
|
||||
|
||||
@@ -11,6 +11,7 @@ class GetMeResponse:
|
||||
id: UserId
|
||||
email: str
|
||||
|
||||
|
||||
response_converter = get_converter(User, GetMeResponse)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user