Implement complete event series endpoints with full CRUD support

## Backend Implementation
- Add dedicated series endpoints: create, update, delete
- Implement RFC 5545 compliant RRULE generation and modification
- Support all scope operations: this_only, this_and_future, all_in_series
- Add comprehensive series-specific request/response models
- Implement EXDATE and RRULE modification for precise occurrence control

## Frontend Integration
- Add automatic series detection and smart endpoint routing
- Implement scope-aware event operations with backward compatibility
- Enhance API payloads with series-specific fields
- Integrate existing RecurringEditModal for scope selection UI

## Testing
- Add comprehensive integration tests for all series endpoints
- Validate scope handling, RRULE generation, and error scenarios
- All 14 integration tests passing

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Connor Johnstone
2025-08-30 13:21:44 -04:00
parent b195208ddc
commit e21430f6ff
6 changed files with 1344 additions and 58 deletions

View File

@@ -45,6 +45,10 @@ pub async fn run_server() -> Result<(), Box<dyn std::error::Error>> {
.route("/api/calendar/events/update", post(handlers::update_event))
.route("/api/calendar/events/delete", post(handlers::delete_event))
.route("/api/calendar/events/:uid", get(handlers::refresh_event))
// Event series-specific endpoints
.route("/api/calendar/events/series/create", post(handlers::create_event_series))
.route("/api/calendar/events/series/update", post(handlers::update_event_series))
.route("/api/calendar/events/series/delete", post(handlers::delete_event_series))
.layer(
CorsLayer::new()
.allow_origin(Any)