Skip to content

Latest commit

 

History

History
64 lines (58 loc) · 1.31 KB

File metadata and controls

64 lines (58 loc) · 1.31 KB
// Get Events
const { data, error } = await supabase
  .from('Events')
  .select('*, Communities(name), EventAttendees(count)')
  .order('event_date', { ascending: true });

// Get Event by ID
const { data, error } = await supabase
  .from('Events')
  .select('*, Communities(name), EventAttendees(*)')
  .eq('id', eventId)
  .single();

// Create Event
const { data, error } = await supabase
  .from('Events')
  .insert({
    title,
    description,
    event_date,
    location,
    is_virtual,
    meeting_link,
    max_attendees,
    image_url,
    tags,
    organizer_id: user.id,
    community_id
  })
  .select()
  .single();

// Update Event
const { data, error } = await supabase
  .from('Events')
  .update({ title, description, event_date })
  .eq('id', eventId)
  .eq('organizer_id', user.id);

// Delete Event
const { error } = await supabase
  .from('Events')
  .delete()
  .eq('id', eventId)
  .eq('organizer_id', user.id);

// Register for Event
const { data, error } = await supabase
  .from('EventAttendees')
  .insert({
    event_id: eventId,
    user_id: user.id,
    status: 'attending'
  });

// Filter Events
const { data, error } = await supabase
  .from('Events')
  .select('*')
  .gte('event_date', startDate)
  .contains('tags', [tag])
  .or(`title.ilike.%${query}%,description.ilike.%${query}%`);