fix(todo-backend): implement recurrence handling and fix N+1 query

- Implement recurring task handling using rrule library
  - createNextOccurrence() creates next task instance when completing recurring task
  - calculateNextStartDate() maintains offset between start/due dates
  - Copies labels, subtasks (reset), and metadata to new occurrence
  - Respects recurrenceEndDate limit

- Fix N+1 query problem for task labels
  - Replace individual loadTaskLabels() calls with batch loadTaskLabelsBatch()
  - Reduces database queries from O(2n) to O(2) for task lists
  - Uses Maps for O(1) lookups when combining tasks with labels

- Add Jest test coverage (25 tests)
  - CRUD operations, task status changes, recurrence
  - Special queries (inbox, today, completed)
  - Batch loading efficiency verification

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Till-JS 2025-12-10 14:11:17 +01:00 committed by Wuesteon
parent 59324cae1c
commit d8f1bbbbce
5 changed files with 1123 additions and 248 deletions

641
pnpm-lock.yaml generated

File diff suppressed because it is too large Load diff