UNPKG

@adventurelabs/scout-core

Version:

Core utilities and helpers for Adventure Labs Scout applications

74 lines (73 loc) 2.86 kB
"use server"; import { newServerClient } from "../supabase/server"; import { EnumWebResponse, IWebResponse, } from "../types/requests"; // Get session by ID with coordinates export async function server_get_session_by_id(sessionId, client) { const supabase = client || (await newServerClient()); const { data, error } = await supabase.rpc("get_session_by_id", { session_id_caller: sessionId, }); if (error) { console.warn("Error fetching session by id:", error.message); return { status: EnumWebResponse.ERROR, msg: error.message, data: null, }; } // The RPC returns an array, but we want a single session or null const session = data && data.length > 0 ? data[0] : null; return IWebResponse.success(session).to_compatible(); } // Get session usage over time by herd export async function server_get_session_usage_over_time_by_herd(herd_id, client) { const supabase = client || (await newServerClient()); const { data, error } = await supabase.rpc("get_session_usage_over_time", { start_date_caller: undefined, end_date_caller: undefined, device_id_caller: undefined, herd_id_caller: herd_id, }); if (error) { return IWebResponse.error(error.message).to_compatible(); } if (!data) { return IWebResponse.error("No session usage data returned").to_compatible(); } return IWebResponse.success(data).to_compatible(); } // Get session usage over time by device export async function server_get_session_usage_over_time_by_device(device_id, client) { const supabase = client || (await newServerClient()); const { data, error } = await supabase.rpc("get_session_usage_over_time", { start_date_caller: undefined, end_date_caller: undefined, device_id_caller: device_id, herd_id_caller: undefined, }); if (error) { return IWebResponse.error(error.message).to_compatible(); } if (!data) { return IWebResponse.error("No session usage data returned").to_compatible(); } return IWebResponse.success(data).to_compatible(); } // Get events with tags by session id using RPC function export async function server_get_events_and_tags_by_session_id(sessionId, limit = 50, offset = 0) { const supabase = await newServerClient(); const { data, error } = await supabase.rpc("get_events_and_tags_for_session", { session_id_caller: sessionId, limit_caller: limit, offset_caller: offset, }); if (error) { console.warn("Error fetching events and tags by session id:", error.message); return { status: EnumWebResponse.ERROR, msg: error.message, data: [], }; } return IWebResponse.success(data || []).to_compatible(); }