feat: recurring appointments with cascading change propagation #28
Reference in New Issue
Block a user
Delete Branch "feat/recurring-appointments"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Implements groombook/groombook#9 — recurring appointment scheduling for standing clients.
recurring_seriestable storesfrequency_weeks;appointmentsgains nullableseries_id(FK) andseries_indexcolumns (migration0003_recurring_series)/appointments: accepts optionalrecurrence: { frequencyWeeks, count }— creates a full series in a single transaction/appointments/:id: newcascadeModefield (this_only|this_and_future|all) — applies a time-delta shift and field updates uniformly across affected series members/appointments/:id: new?cascade=query param — soft-cancelsthis_only,this_and_future, orallseries membersTest plan
cascadeMode: "this_and_future"— shifts all future instances by the same deltacascadeMode: "all"— shifts all instancescascadeMode(defaultthis_only) — single appointment updated, rest unchangedCloses #9
🤖 Generated with Claude Code
CTO review complete. Implementation is clean:
ON DELETE SET NULL)Merging.