reorganize module
This commit is contained in:
118
database/main.rhai
Normal file
118
database/main.rhai
Normal file
@@ -0,0 +1,118 @@
|
||||
// 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
|
||||
};
|
||||
}
|
Reference in New Issue
Block a user