Skip to content

Commit 3b5e850

Browse files
authored
fix: member 필터링 (#109)
* member을 쿼리 스트링으로 불러올 수 있도록 수정했습니다. * alembic 파일에 ANDROID, IOS 타입이 제외되어 있는것 같아 추가했습니다.
1 parent bfa4421 commit 3b5e850

File tree

4 files changed

+65
-6
lines changed

4 files changed

+65
-6
lines changed

wacruit/src/apps/member/repositories.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from fastapi import Depends
22
from sqlalchemy.orm import Session
33

4+
from wacruit.src.apps.common.enums import Position
45
from wacruit.src.apps.member.models import Member
56
from wacruit.src.database.connection import get_db_session
67
from wacruit.src.database.connection import Transaction
@@ -23,8 +24,17 @@ def create_member(self, member: Member) -> Member:
2324
self.session.add(member)
2425
return member
2526

26-
def get_all_members(self) -> list[Member]:
27-
return self.session.query(Member).all()
27+
def get_all_members(
28+
self, position: Position | None, offset: int, limit: int
29+
) -> list[Member]:
30+
query = self.session.query(Member)
31+
32+
if position is not None:
33+
query = query.where(Member.position == position)
34+
35+
members = query.offset(offset).limit(limit).all()
36+
37+
return members
2838

2939
def update_member(self, member: Member) -> Member:
3040
with self.transaction:

wacruit/src/apps/member/services.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from fastapi import Depends
22
from sqlalchemy.exc import IntegrityError
33

4+
from wacruit.src.apps.common.enums import Position
45
from wacruit.src.apps.common.schemas import ListResponse
56
from wacruit.src.apps.member.exceptions import MemberAlreadyExistsException
67
from wacruit.src.apps.member.exceptions import MemberNotFoundException
@@ -48,9 +49,13 @@ def get_member_by_id(self, member_id: int) -> MemberInfoResponse:
4849
return MemberInfoResponse.from_orm(member)
4950

5051
def get_members(
51-
self, waffle_sso_id: str | None
52+
self,
53+
waffle_sso_id: str | None,
54+
position: Position | None,
55+
offset: int,
56+
limit: int,
5257
) -> ListResponse[MemberBriefResponse] | ListResponse[MemberInfoResponse]:
53-
members = self.member_repository.get_all_members()
58+
members = self.member_repository.get_all_members(position, offset, limit)
5459
if waffle_sso_id:
5560
user = self.user_repository.get_user_by_sso_id(waffle_sso_id)
5661
if user and user.is_admin:

wacruit/src/apps/member/views.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,19 @@
33

44
from fastapi import APIRouter
55
from fastapi import Depends
6+
from fastapi import Query
67
from fastapi import Response
78
from fastapi import Security
89
from fastapi.security import APIKeyHeader
910

11+
from wacruit.src.apps.common.enums import Position
1012
from wacruit.src.apps.common.schemas import ListResponse
1113
from wacruit.src.apps.member.schemas import MemberBriefResponse
1214
from wacruit.src.apps.member.schemas import MemberCreateRequest
1315
from wacruit.src.apps.member.schemas import MemberInfoResponse
1416
from wacruit.src.apps.member.schemas import MemberUpdateRequest
1517
from wacruit.src.apps.member.services import MemberService
1618
from wacruit.src.apps.user.dependencies import AdminUser
17-
from wacruit.src.apps.user.dependencies import CurrentUser
1819

1920
v3_router = APIRouter(prefix="/v3/members", tags=["members"])
2021

@@ -48,8 +49,11 @@ def get_members(
4849
),
4950
],
5051
member_service: Annotated[MemberService, Depends()],
52+
position: Annotated[Position | None, Query()] = None,
53+
offset: Annotated[int, Query()] = 0,
54+
limit: Annotated[int, Query()] = 20,
5155
) -> ListResponse[MemberInfoResponse] | ListResponse[MemberBriefResponse]:
52-
return member_service.get_members(waffle_sso_id)
56+
return member_service.get_members(waffle_sso_id, position, offset, limit)
5357

5458

5559
@v3_router.patch("/{member_id}")
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
"""fix enum type
2+
3+
Revision ID: 12665783c993
4+
Revises: f1532cef4ac5
5+
Create Date: 2025-09-14 22:11:40.030127
6+
7+
"""
8+
from alembic import op
9+
import sqlalchemy as sa
10+
from sqlalchemy.dialects import mysql
11+
12+
# revision identifiers, used by Alembic.
13+
revision = "12665783c993"
14+
down_revision = "f1532cef4ac5"
15+
branch_labels = None
16+
depends_on = None
17+
18+
19+
def upgrade() -> None:
20+
# ### commands auto generated by Alembic - please adjust! ###
21+
op.alter_column(
22+
"member",
23+
"position",
24+
existing_type=mysql.ENUM("FRONTEND", "BACKEND", "DESIGNER"),
25+
type_=mysql.ENUM("FRONTEND", "BACKEND", "DESIGNER", "ANDROID", "IOS"),
26+
existing_nullable=True,
27+
)
28+
# ### end Alembic commands ###
29+
30+
31+
def downgrade() -> None:
32+
# ### commands auto generated by Alembic - please adjust! ###
33+
op.alter_column(
34+
"member",
35+
"position",
36+
existing_type=mysql.ENUM("FRONTEND", "BACKEND", "DESIGNER", "ANDROID", "IOS"),
37+
type_=mysql.ENUM("FRONTEND", "BACKEND", "DESIGNER"),
38+
existing_nullable=True,
39+
)
40+
# ### end Alembic commands ###

0 commit comments

Comments
 (0)