// main.rhai - Main script for the calendar backend // Import all modules import "scripts/events" as events; import "scripts/users" as users; import "scripts/calendars" as calendars; import "scripts/utils" as utils; // Example function to get a user's upcoming events fn get_user_upcoming_events(user_id, days_ahead) { let user = users::get_user(user_id); if utils::is_empty(user) { return "User not found"; } // Get current date let current_date = utils::get_current_date(); // Calculate end date let end_date = utils::add_days_to_date(current_date, days_ahead); // Get events in the date range let upcoming_events = events::get_events_by_date_range(current_date, end_date); // Filter to only include events where the user is an attendee let user_events = []; for event in upcoming_events { if utils::array_contains(event.attendees, user_id) { user_events.push(event); } } return user_events; } // Example function to get a user's calendar summary fn get_user_calendar_summary(user_id) { let user = users::get_user(user_id); if utils::is_empty(user) { return "User not found"; } let user_calendars = calendars::get_accessible_calendars(user_id); let calendar_count = user_calendars.len(); let user_events = events::get_events_by_attendee(user_id); let event_count = user_events.len(); let organized_events = events::get_events_by_organizer(user_id); let organized_count = organized_events.len(); return #{ user_name: user.name, calendar_count: calendar_count, event_count: event_count, organized_count: organized_count }; } // Example function to get details of a specific event fn get_event_details(event_id) { let event = events::get_event(event_id); if utils::is_empty(event) { return "Event not found"; } let organizer = users::get_user(event.organizer_id); let calendar = calendars::get_calendar(event.calendar_id); let attendees_info = []; for attendee_id in event.attendees { let attendee = users::get_user(attendee_id); if !utils::is_empty(attendee) { attendees_info.push(attendee.name); } } return #{ title: event.title, description: event.description, start_time: event.start_time, end_time: event.end_time, location: event.location, organizer: organizer.name, calendar: calendar.name, attendees: attendees_info, status: event.status }; } // Example function to create a new event fn create_new_event(title, description, start_time, end_time, location, calendar_id, organizer_id, attendees) { // Validate inputs let calendar = calendars::get_calendar(calendar_id); if utils::is_empty(calendar) { return "Calendar not found"; } let organizer = users::get_user(organizer_id); if utils::is_empty(organizer) { return "Organizer not found"; } // Create the event let new_event = events::create_event( title, description, start_time, end_time, location, calendar_id, organizer_id, attendees, false, "confirmed" ); return #{ message: "Event created successfully", event_id: new_event.id, title: new_event.title }; }