Skip to content

Commit 275f127

Browse files
ImTotemclaude
andcommitted
feat(member): add filter fields + move detail fields to list type
- MemberType: add department, studentId, phone (from MemberDetail) - MemberFilterInput: add email, department, studentId, phone search - search_fields: name, email, department, studentId, phone (LIKE) - Remove paymentStatus from MemberType, FilterInput, FiltersResponse (will be managed separately) - MemberDetail simplified: only schoolEmail, joinDate, lastUpdated Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 7ae1b99 commit 275f127

5 files changed

Lines changed: 26 additions & 22 deletions

File tree

src/bcsd_api/filter/members.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,12 @@ class MemberFilter(BaseFilter):
55
status: str | None = None
66
track: str | None = None
77
team: str | None = None
8-
payment_status: str | None = None
98
name: str | None = None
9+
email: str | None = None
10+
department: str | None = None
11+
student_id: str | None = None
12+
phone: str | None = None
1013

11-
search_fields: list[str] = ["name"]
14+
search_fields: list[str] = [
15+
"name", "email", "department", "student_id", "phone",
16+
]

src/bcsd_api/member/resolvers.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,9 @@ def _to_filter(inp: MemberFilterInput) -> MemberFilter:
2121
page=inp.page, size=inp.size,
2222
sorts=to_sorts(inp.sorts),
2323
status=inp.status, track=inp.track,
24-
team=inp.team, payment_status=inp.payment_status,
25-
name=inp.name,
24+
team=inp.team, name=inp.name,
25+
email=inp.email, department=inp.department,
26+
student_id=inp.student_id, phone=inp.phone,
2627
)
2728

2829

src/bcsd_api/member/schema.py

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,24 +8,22 @@ class MemberResponse(BaseModel):
88
status: str
99
track: str
1010
team: str
11-
payment_status: str
12-
13-
14-
class MemberDetail(MemberResponse):
15-
department: str
11+
department: str = ""
1612
student_id: str = ""
17-
school_email: str
18-
phone: str
19-
join_date: str
20-
last_updated: str
13+
phone: str = ""
2114

2215
@field_validator("student_id", mode="before")
2316
@classmethod
2417
def coerce_student_id(cls, v):
2518
return str(v)
2619

2720

21+
class MemberDetail(MemberResponse):
22+
school_email: str
23+
join_date: str
24+
last_updated: str
25+
26+
2827
class FiltersResponse(BaseModel):
2928
tracks: list[str]
3029
statuses: list[str]
31-
payment_statuses: list[str]

src/bcsd_api/member/service.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from bcsd_api.exception import NotFound
44
from bcsd_api.filter.base import PagedResponse, apply_filter
55
from bcsd_api.filter.members import MemberFilter
6-
from bcsd_api.tables import payment_statuses, statuses, tracks
6+
from bcsd_api.tables import statuses, tracks
77

88
from .pg_repository import PgMemberRepository
99
from .schema import FiltersResponse, MemberDetail, MemberResponse
@@ -36,5 +36,4 @@ def get_filters(conn: Connection) -> FiltersResponse:
3636
return FiltersResponse(
3737
tracks=_names(conn, tracks),
3838
statuses=_names(conn, statuses),
39-
payment_statuses=_names(conn, payment_statuses),
4039
)

src/bcsd_api/member/types.py

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,14 @@ class MemberType:
1111
status: str
1212
track: str
1313
team: str
14-
payment_status: str
14+
department: str
15+
student_id: str
16+
phone: str
1517

1618

1719
@strawberry.type
1820
class MemberDetailType(MemberType):
19-
department: str
20-
student_id: str
2121
school_email: str
22-
phone: str
2322
join_date: str
2423
last_updated: str
2524

@@ -28,7 +27,6 @@ class MemberDetailType(MemberType):
2827
class FiltersType:
2928
tracks: list[str]
3029
statuses: list[str]
31-
payment_statuses: list[str]
3230

3331

3432
@strawberry.type
@@ -54,5 +52,8 @@ class MemberFilterInput:
5452
status: str | None = None
5553
track: str | None = None
5654
team: str | None = None
57-
payment_status: str | None = None
5855
name: str | None = None
56+
email: str | None = None
57+
department: str | None = None
58+
student_id: str | None = None
59+
phone: str | None = None

0 commit comments

Comments
 (0)