@adventurelabs/scout-core
Version:
Core utilities and helpers for Adventure Labs Scout applications
65 lines (64 loc) • 2.26 kB
JavaScript
"use server";
import { newServerClient } from "../supabase/server";
import { EnumWebResponse, IWebResponse, } from "../types/requests";
// Get operators by session id (server id)
export async function server_get_operators_by_session_id(sessionId) {
const supabase = await newServerClient();
const { data, error } = await supabase
.from("operators")
.select("*")
.eq("session_id", sessionId)
.order("created_at", { ascending: false });
if (error) {
console.warn("Error fetching operators by session id:", error.message);
return {
status: EnumWebResponse.ERROR,
msg: error.message,
data: [],
};
}
return IWebResponse.success(data || []).to_compatible();
}
// Get all operators for a specific user
export async function server_get_operators_by_user_id(userId) {
const supabase = await newServerClient();
const { data, error } = await supabase
.from("operators")
.select("*")
.eq("user_id", userId)
.order("created_at", { ascending: false });
if (error) {
console.warn("Error fetching operators by user id:", error.message);
return {
status: EnumWebResponse.ERROR,
msg: error.message,
data: [],
};
}
return IWebResponse.success(data || []).to_compatible();
}
// Get operators by session id with additional filters
export async function server_get_operators_by_session_id_filtered(sessionId, action, timestampAfter) {
const supabase = await newServerClient();
let query = supabase
.from("operators")
.select("*")
.eq("session_id", sessionId);
// Apply optional filters
if (action) {
query = query.eq("action", action);
}
if (timestampAfter) {
query = query.gte("timestamp", timestampAfter);
}
const { data, error } = await query.order("timestamp", { ascending: false });
if (error) {
console.warn("Error fetching filtered operators by session id:", error.message);
return {
status: EnumWebResponse.ERROR,
msg: error.message,
data: [],
};
}
return IWebResponse.success(data || []).to_compatible();
}