Commit Graph

5 Commits

Author SHA1 Message Date
Flea Flicker 1e696ca684 fix(waitlist): address CTO review on PR #110
- Move client-facing POST/PATCH/DELETE waitlist routes to portalRouter
  so impersonation sessions can reach them (were blocked by requireRole guard)
- Fix portalRouter double-mount: remove from auth-protected api block,
  register publicly at app.route("/api/portal", ...) instead
- Replace N+1 queries in GET /waitlist with a single JOIN across
  clients, pets, and services tables
- Remove dead expiredIds variable in markExpiredEntries; use .some()
  instead of computing an array only for its length
- Fix stray indentation in appointments.ts DELETE handler (line 487)
- Update waitlist tests to exercise routes at new /portal/waitlist paths;
  add leftJoin and lt to chainable mock

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-26 08:30:35 +00:00
Scrubs McBarkley 84ab5a00f5 fix(waitlist): use slice instead of split to avoid TS strict null check errors
TypeScript's split()[0] is typed as string | undefined in strict mode.
Using slice(0, 10) is cleaner and avoids the type issue.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-26 08:30:35 +00:00
Scrubs McBarkley 1f56ba98f7 feat(waitlist): add lazy expiry for entries with past preferredDate (GRO-180)
When reading waitlist entries, active entries with preferredDate < today
are marked as expired both in the database and in the response.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-26 08:30:35 +00:00
Scrubs McBarkley 09cbf00157 fix(waitlist): address QA review comments - auth fixes and pgEnum type
- Add 401 when DELETE /waitlist/:id has no session (auth bypass fix)
- Add auth to PATCH /waitlist/:id (was zero auth)
- Add RBAC guard for /waitlist/* routes
- Fix migration to use proper ENUM type instead of TEXT
- Add unit tests for auth scenarios

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-26 08:29:41 +00:00
Scrubs McBarkley 232827ad29 feat: add waitlist entries table and API routes (GRO-105)
- Migration 0015: new waitlist_entries table with indexes
- Schema update: add waitlistEntries table and waitlistStatusEnum
- Staff API: GET /api/waitlist, GET /api/waitlist/:id
- Portal API: POST /api/waitlist (via impersonation session), DELETE /api/waitlist/:id
- Note: cancellation hook and email notification pending

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-03-26 08:28:18 +00:00