UNPKG

@adventurelabs/scout-core

Version:

Core utilities and helpers for Adventure Labs Scout applications

81 lines (80 loc) 2.79 kB
"use server"; import { newServerClient } from "../supabase/server"; import { IWebResponse } from "../types/requests"; export async function get_devices_by_herd(herd_id, client) { // call get_devices_for_herd with rpc const { data, error } = await client.rpc("get_devices_for_herd", { herd_id_caller: herd_id, }); if (!data) { return IWebResponse.error("No devices found").to_compatible(); } else { let response = IWebResponse.success(data); return response.to_compatible(); } } export async function serverUpdateDevice(updatedDevice) { // delete api keys, latitide, and longitude const device_formatted = { ...updatedDevice }; delete device_formatted.api_keys_scout; const device_latitude = device_formatted.latitude; const device_longitude = device_formatted.longitude; delete device_formatted.latitude; delete device_formatted.longitude; delete device_formatted.recent_events; const supabase = await newServerClient(); const { data, error } = await supabase .from("devices") .update(device_formatted) .match({ id: device_formatted.id }) .select("*"); if (error) { return IWebResponse.error(error.message).to_compatible(); } else { const updatedDevice = { ...data[0], latitude: device_latitude, longitude: device_longitude, }; return IWebResponse.success(updatedDevice).to_compatible(); } } export async function serverCreateDevice(newDevice) { const supabase = await newServerClient(); const user = await supabase.auth.getUser(); const userId = user?.data?.user?.id; if (!userId) { return IWebResponse.error("User not found").to_compatible(); } newDevice.created_by = userId; // strip id field from herd object const { data, error } = await supabase .from("devices") .insert([newDevice]) .select("*"); if (error) { // TODO: ALLOW PROPERTY INSTANTION OF CPMPATIBLE WEB RESPONSE return IWebResponse.error(error.message).to_compatible(); } else { const newDevice = { ...data[0], latitude: 0, longitude: 0 }; return IWebResponse.success(newDevice).to_compatible(); } } export async function serverDeleteDeviceById(device_id) { const supabase = await newServerClient(); const { data, error } = await supabase .from("devices") .delete() .match({ id: device_id }) .select("*"); if (error) { return IWebResponse.error(error.message).to_compatible(); } else { const deletedDevice = { ...data[0], latitude: 0, longitude: 0 }; return IWebResponse.success(deletedDevice).to_compatible(); } }