// calendar_script.rhai // Example Rhai script for working with Calendar models // Constants for AttendanceStatus const NO_RESPONSE = "NoResponse"; const ACCEPTED = "Accepted"; const DECLINED = "Declined"; const TENTATIVE = "Tentative"; // Create a new calendar using builder pattern let my_calendar = new_calendar() .name("Team Calendar") .description("Calendar for team events and meetings"); print(`Created calendar: ${my_calendar.name} (${my_calendar.id})`); // Add attendees to the event let alice = new_attendee() .with_contact_id(1) .with_status(NO_RESPONSE); let bob = new_attendee() .with_contact_id(2) .with_status(ACCEPTED); let charlie = new_attendee() .with_contact_id(3) .with_status(TENTATIVE); // Create a new event using builder pattern // Note: Timestamps are in seconds since epoch let now = timestamp_now(); let one_hour = 60 * 60; let meeting = new_event() .title("Weekly Sync") .reschedule(now, now + one_hour) .location("Conference Room A") .description("Regular team sync meeting") .add_attendee(alice) .add_attendee(bob) .add_attendee(charlie) .save_event(); print(`Created event: ${meeting.title}`); meeting.delete_event(); print(`Deleted event: ${meeting.title}`); // Print attendees info let attendees = meeting.attendees; print(`Added attendees to the event`); // Update Charlie's attendee status directly meeting.update_attendee_status(3, ACCEPTED); print(`Updated Charlie's status to: ${ACCEPTED}`); // Add the event to the calendar my_calendar.add_event_to_calendar(meeting); // Print events info print(`Added event to calendar`); // Save the calendar to the database let saved_calendar = my_calendar.save_calendar(); print(`Calendar saved to database with ID: ${saved_calendar.id}`); // Retrieve the calendar from the database using the ID from the saved calendar let retrieved_calendar = get_calendar_by_id(saved_calendar.id); if retrieved_calendar != () { print(`Retrieved calendar: ${retrieved_calendar.name}`); print(`Retrieved calendar successfully`); } else { print("Failed to retrieve calendar from database"); } // List all calendars in the database let all_calendars = list_calendars(); print("\nListing all calendars in database:"); let calendar_count = 0; for calendar in all_calendars { print(` - Calendar: ${calendar.name} (ID: ${calendar.id})`); calendar_count += 1; } print(`Total calendars: ${calendar_count}`); // List all events in the database let all_events = list_events(); print("\nListing all events in database:"); let event_count = 0; for event in all_events { print(` - Event: ${event.title} (ID: ${event.id})`); event_count += 1; } print(`Total events: ${event_count}`); // Helper function to get current timestamp fn timestamp_now() { // This would typically be provided by the host application // For this example, we'll use a fixed timestamp 1685620800 // June 1, 2023, 12:00 PM }