Skip to content

Commit a552aff

Browse files
ImTotemclaude
andcommitted
feat(api): dynamic filters from Sheets, remove Alumni status
- Move statuses and payment_statuses to Google Sheets (dynamic) - Add statuses and payment_statuses sheets with seed defaults - Remove Alumni from default statuses - Fix seed() early return bug (return → continue) - Add *.json to .gitignore for credential safety Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent e01caf4 commit a552aff

4 files changed

Lines changed: 23 additions & 5 deletions

File tree

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -506,5 +506,10 @@ $RECYCLE.BIN/
506506
# Windows shortcuts
507507
*.lnk
508508

509+
# Credentials
510+
*.json
511+
!package.json
512+
!tsconfig.json
513+
509514
# End of https://www.toptal.com/developers/gitignore/api/intellij+all,pycharm+all,visualstudiocode,python,pythonvanilla,macos,windows,linux,git,jetbrains+all
510515

src/bcsd_api/member/service.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
from .repository import MemberRepository
77
from .schema import FiltersResponse, MemberDetail, MemberResponse
88

9-
STATUSES = ["Beginner", "Regular", "Mentor", "Alumni"]
10-
PAYMENT_STATUSES = ["Unpaid", "Paid", "Exempt"]
9+
def _names(sheets: SheetsClient, sheet: str) -> list[str]:
10+
return [r["name"] for r in sheets.get_records(sheet)]
1111

1212

1313
def list_members(
@@ -29,7 +29,8 @@ def get_member(repo: MemberRepository, member_id: str) -> MemberDetail:
2929

3030

3131
def get_filters(sheets: SheetsClient) -> FiltersResponse:
32-
tracks = [r["name"] for r in sheets.get_records("tracks")]
3332
return FiltersResponse(
34-
tracks=tracks, statuses=STATUSES, payment_statuses=PAYMENT_STATUSES
33+
tracks=_names(sheets, "tracks"),
34+
statuses=_names(sheets, "statuses"),
35+
payment_statuses=_names(sheets, "payment_statuses"),
3536
)

src/bcsd_api/sheets/client.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
"input_data", "output_data", "error_message",
3232
],
3333
"tracks": ["name"],
34+
"statuses": ["name"],
35+
"payment_statuses": ["name"],
3436
}
3537

3638

src/bcsd_api/sheets/defaults.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,22 @@
1111
{"name": "Data Analysis"},
1212
{"name": "Game"},
1313
],
14+
"statuses": [
15+
{"name": "Beginner"},
16+
{"name": "Regular"},
17+
{"name": "Mentor"},
18+
],
19+
"payment_statuses": [
20+
{"name": "Unpaid"},
21+
{"name": "Paid"},
22+
{"name": "Exempt"},
23+
],
1424
}
1525

1626

1727
def seed(sheets: SheetsClient) -> None:
1828
for sheet_name, rows in _DEFAULTS.items():
1929
if sheets.get_records(sheet_name):
20-
return
30+
continue
2131
for row in rows:
2232
sheets.append_row(sheet_name, row)

0 commit comments

Comments
 (0)