Implement history API endpoint (P2.8)
Add GET /api/history for paginated historical daily logs with: - Pagination support (page/limit query params, default 20 per page) - Date filtering (startDate/endDate in YYYY-MM-DD format) - Validation for all parameters with descriptive error messages - Sort by date descending (most recent first) - Response includes items, total, page, limit, totalPages, hasMore Includes 19 tests covering pagination, date filtering, auth, and validation. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -22,7 +22,7 @@ This file is maintained by Ralph. Run `./ralph-sandbox.sh plan 3` to generate ta
|
||||
- ~~`src/lib/auth-middleware.ts`~~ - **CREATED** in P0.2
|
||||
- ~~`src/middleware.ts`~~ - **CREATED** in P0.2
|
||||
|
||||
### API Routes (12 total)
|
||||
### API Routes (15 total)
|
||||
| Route | Status | Notes |
|
||||
|-------|--------|-------|
|
||||
| GET /api/user | **COMPLETE** | Returns user profile with `withAuth()` |
|
||||
@@ -39,6 +39,7 @@ This file is maintained by Ralph. Run `./ralph-sandbox.sh plan 3` to generate ta
|
||||
| POST /api/calendar/regenerate-token | **COMPLETE** | Generates 32-char token, returns URL (9 tests) |
|
||||
| POST /api/cron/garmin-sync | **COMPLETE** | Syncs Garmin data for all users, creates DailyLogs (22 tests) |
|
||||
| POST /api/cron/notifications | **COMPLETE** | Sends daily emails with timezone matching, DailyLog handling (20 tests) |
|
||||
| GET /api/history | **COMPLETE** | Paginated historical daily logs with date filtering (19 tests) |
|
||||
|
||||
### Pages (7 total)
|
||||
| Page | Status | Notes |
|
||||
@@ -88,6 +89,7 @@ This file is maintained by Ralph. Run `./ralph-sandbox.sh plan 3` to generate ta
|
||||
| `src/app/api/cron/notifications/route.test.ts` | **EXISTS** - 20 tests (timezone matching, DailyLog handling, email sending) |
|
||||
| `src/app/api/calendar/[userId]/[token].ics/route.test.ts` | **EXISTS** - 10 tests (token validation, ICS generation, caching, error handling) |
|
||||
| `src/app/api/calendar/regenerate-token/route.test.ts` | **EXISTS** - 9 tests (token generation, URL formatting, auth) |
|
||||
| `src/app/api/history/route.test.ts` | **EXISTS** - 19 tests (pagination, date filtering, auth, validation) |
|
||||
| E2E tests | **NONE** |
|
||||
|
||||
### Critical Business Rules (from Spec)
|
||||
@@ -357,12 +359,18 @@ Full feature set for production use.
|
||||
- **Why:** Security feature for calendar URLs
|
||||
- **Depends On:** P0.1, P0.2
|
||||
|
||||
### P2.8: GET /api/history Implementation
|
||||
- [ ] Return paginated historical daily logs
|
||||
### P2.8: GET /api/history Implementation ✅ COMPLETE
|
||||
- [x] Return paginated historical daily logs
|
||||
- **Files:**
|
||||
- `src/app/api/history/route.ts` - Query DailyLog with pagination
|
||||
- `src/app/api/history/route.ts` - Query DailyLog with pagination, date filtering, validation
|
||||
- **Tests:**
|
||||
- `src/app/api/history/route.test.ts` - Test pagination, date filtering
|
||||
- `src/app/api/history/route.test.ts` - 19 tests covering pagination, date filtering, auth, validation
|
||||
- **Features Implemented:**
|
||||
- Pagination with page/limit parameters (default: page=1, limit=20)
|
||||
- Date filtering with startDate/endDate query params (YYYY-MM-DD format)
|
||||
- Validation for all parameters with descriptive error messages
|
||||
- Sort by date descending (most recent first)
|
||||
- Returns items, total, page, limit, totalPages, hasMore
|
||||
- **Why:** Users want to see their training history
|
||||
- **Depends On:** P0.1, P0.2
|
||||
|
||||
@@ -601,6 +609,7 @@ P2.14 Mini calendar
|
||||
- [x] **POST /api/cron/notifications** - Sends daily email notifications with timezone matching, DailyLog handling, nutrition guidance, 20 tests (P2.5)
|
||||
- [x] **GET /api/calendar/[userId]/[token].ics** - Returns ICS feed with 90-day phase events, token validation, caching headers, 10 tests (P2.6)
|
||||
- [x] **POST /api/calendar/regenerate-token** - Generates new 32-char calendar token, returns URL, 9 tests (P2.7)
|
||||
- [x] **GET /api/history** - Paginated historical daily logs with date filtering, validation, 19 tests (P2.8)
|
||||
|
||||
### Pages
|
||||
- [x] **Login Page** - Email/password form with PocketBase auth, error handling, loading states, redirect, 14 tests (P1.6)
|
||||
|
||||
Reference in New Issue
Block a user