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/main.rhai
2025-04-04 08:28:07 +02:00

119 lines
3.4 KiB
Plaintext

// 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
};
}