This repository has been archived on 2025-08-04. You can view files and clone it, but cannot push or open issues or pull requests.
rhaj/database/scripts/events.rhai
2025-04-04 08:28:07 +02:00

86 lines
2.5 KiB
Plaintext

// events.rhai - Functions for handling calendar events
import "utils" as utils;
import "../models/event_model" as event_model;
// Get all events
fn get_all_events() {
return event_model::get_sample_events();
}
// Get a specific event by ID
fn get_event(event_id) {
let events = get_all_events();
return utils::find_by_id(events, event_id);
}
// Get events for a specific calendar
fn get_events_by_calendar(calendar_id) {
let events = get_all_events();
return utils::filter_by_property(events, "calendar_id", calendar_id);
}
// Get events for a specific user (as attendee)
fn get_events_by_attendee(user_id) {
let events = get_all_events();
let user_events = [];
for event in events {
if utils::array_contains(event.attendees, user_id) {
user_events.push(event);
}
}
return user_events;
}
// Get events organized by a specific user
fn get_events_by_organizer(user_id) {
let events = get_all_events();
return utils::filter_by_property(events, "organizer_id", user_id);
}
// Get events for a specific date range
fn get_events_by_date_range(start_date, end_date) {
let events = get_all_events();
let filtered_events = [];
for event in events {
let event_start = event.start_time;
// Simple string comparison - in a real app, we would use proper date comparison
if event_start >= start_date && event_start <= end_date {
filtered_events.push(event);
}
}
return filtered_events;
}
// Create a new event
fn create_event(title, description, start_time, end_time, location, calendar_id, organizer_id, attendees, recurring, status) {
// Generate a simple ID (in a real app, we would use a proper ID generation method)
let id = "event" + (get_all_events().len() + 1).to_string();
return event_model::create_event(
id, title, description, start_time, end_time, location,
calendar_id, organizer_id, attendees, recurring, status
);
}
// Format event details for display
fn format_event(event) {
if utils::is_empty(event) {
return "Event not found";
}
let start_date = utils::format_date(event.start_time);
let start_time = utils::format_time(event.start_time);
let end_time = utils::format_time(event.end_time);
return `${event.title} (${start_date}, ${start_time} - ${end_time})
Location: ${event.location}
Description: ${event.description}
Status: ${event.status}`;
}