Skip to content

Commit 0791072

Browse files
committed
♻️ refactor: base schema
1 parent d725d8e commit 0791072

File tree

4 files changed

+23
-27
lines changed

4 files changed

+23
-27
lines changed

app/schemas/base.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
from app.core.configs import configs
99

1010

11-
class BaseSchemaRequest(BaseModel, abc.ABC):
11+
class BaseRequest(BaseModel, abc.ABC):
1212
model_config = ConfigDict(from_attributes=True)
1313

1414

15-
class BaseSchemaResponse(BaseModel, abc.ABC):
15+
class BaseResponse(BaseModel, abc.ABC):
1616
model_config = ConfigDict(from_attributes=True)
1717
id: int
1818
created_at: datetime

app/schemas/users.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
from typing import Optional
22

33
from app.models.enums import OAuthProvider, Role
4-
from app.schemas.base import BaseSchemaRequest, BaseSchemaResponse
4+
from app.schemas.base import BaseRequest, BaseResponse
55

66

7-
class UserRequest(BaseSchemaRequest):
7+
class UserRequest(BaseRequest):
88
name: str
99
# TODO: Email 검증
1010
email: str
@@ -14,18 +14,18 @@ class UserRegisterRequest(UserRequest):
1414
password: str
1515

1616

17-
class UserPasswordRequest(BaseSchemaRequest):
17+
class UserPasswordRequest(BaseRequest):
1818
email: str
1919
password: str
2020

2121

22-
class UserPatchRequest(BaseSchemaRequest):
22+
class UserPatchRequest(BaseRequest):
2323
name: Optional[str] = None
2424
email: Optional[str] = None
2525
password: Optional[str] = None
2626

2727

28-
class UserResponse(BaseSchemaResponse):
28+
class UserResponse(BaseResponse):
2929
name: str
3030
email: str
3131
oauth: OAuthProvider

app/services/base.py

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from app.core.database import database
44
from app.models.base import BaseModel
55
from app.repositories.base import BaseRepository
6-
from app.schemas.base import BaseSchemaRequest, BaseSchemaResponse
6+
from app.schemas.base import BaseRequest, BaseResponse
77

88
T = TypeVar("T", bound=BaseModel)
99

@@ -13,51 +13,47 @@ def __init__(self, repository: BaseRepository[T]) -> None:
1313
self.repository = repository
1414

1515
@overload
16-
def mapper(self, data: BaseSchemaRequest) -> T: ...
16+
def mapper(self, data: BaseRequest) -> T: ...
1717

1818
@overload
19-
def mapper(self, data: T) -> BaseSchemaResponse: ...
19+
def mapper(self, data: T) -> BaseResponse: ...
2020

21-
def mapper(self, data: BaseSchemaRequest | T) -> T | BaseSchemaResponse:
22-
if isinstance(data, BaseSchemaRequest):
21+
def mapper(self, data: BaseRequest | T) -> T | BaseResponse:
22+
if isinstance(data, BaseRequest):
2323
return self.repository.model(**data.model_dump())
24-
return BaseSchemaResponse.model_validate(data)
24+
return BaseResponse.model_validate(data)
2525

2626
@database.transactional
27-
async def create(self, schema: BaseSchemaRequest) -> BaseSchemaResponse:
27+
async def create(self, schema: BaseRequest) -> BaseResponse:
2828
entity = self.mapper(schema)
2929
entity = await self.repository.create(entity=entity)
3030
return self.mapper(entity)
3131

3232
@database.transactional
33-
async def get_by_id(self, id: int) -> BaseSchemaResponse:
33+
async def get_by_id(self, id: int) -> BaseResponse:
3434
entity = await self.repository.read_by_id(id=id)
3535
return self.mapper(entity)
3636

3737
@database.transactional
38-
async def put_by_id(self, id: int, schema: BaseSchemaRequest) -> BaseSchemaResponse:
38+
async def put_by_id(self, id: int, schema: BaseRequest) -> BaseResponse:
3939
entity = await self.repository.update_by_id(id=id, data=schema.model_dump())
4040
return self.mapper(entity)
4141

4242
@database.transactional
43-
async def patch_by_id(
44-
self, id: int, schema: BaseSchemaRequest
45-
) -> BaseSchemaResponse:
43+
async def patch_by_id(self, id: int, schema: BaseRequest) -> BaseResponse:
4644
entity = await self.repository.update_by_id(
4745
id=id, data=schema.model_dump(exclude_none=True)
4846
)
4947
return self.mapper(entity)
5048

5149
@database.transactional
52-
async def patch_attr_by_id(
53-
self, id: int, attr: str, value: Any
54-
) -> BaseSchemaResponse:
50+
async def patch_attr_by_id(self, id: int, attr: str, value: Any) -> BaseResponse:
5551
entity = await self.repository.update_attr_by_id(
5652
id=id, column=attr, value=value
5753
)
5854
return self.mapper(entity)
5955

6056
@database.transactional
61-
async def delete_by_id(self, id: int) -> BaseSchemaResponse:
57+
async def delete_by_id(self, id: int) -> BaseResponse:
6258
entity = await self.repository.delete_by_id(id=id)
6359
return self.mapper(entity)

app/services/users.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from app.models.users import User
1515
from app.repositories.users import UserRepository
1616
from app.schemas.auth import JwtAccessToken, JwtRefreshToken, JwtToken
17-
from app.schemas.base import BaseSchemaRequest
17+
from app.schemas.base import BaseRequest
1818
from app.schemas.users import (
1919
UserIn,
2020
UserOut,
@@ -36,13 +36,13 @@ def __init__(self, user_repository: UserRepository):
3636
self.github_service = GitHubService()
3737

3838
@overload
39-
def mapper(self, data: BaseSchemaRequest) -> User: ...
39+
def mapper(self, data: BaseRequest) -> User: ...
4040

4141
@overload
4242
def mapper(self, data: User) -> UserResponse: ...
4343

44-
def mapper(self, data: BaseSchemaRequest | User) -> User | UserResponse:
45-
if isinstance(data, BaseSchemaRequest):
44+
def mapper(self, data: BaseRequest | User) -> User | UserResponse:
45+
if isinstance(data, BaseRequest):
4646
return self.repository.model(**data.model_dump())
4747
return UserResponse.model_validate(data)
4848

0 commit comments

Comments
 (0)