@adventurelabs/scout-core
Version:
Core utilities and helpers for Adventure Labs Scout applications
92 lines (91 loc) • 3.31 kB
JavaScript
import { IWebResponse } from "../types/requests";
export async function get_versions_software(client) {
const { data, error } = await client
.from("versions_software")
.select("*")
.order("created_at", { ascending: false });
if (error) {
return IWebResponse.error(error.message).to_compatible();
}
if (!data) {
return IWebResponse.error("No software versions found").to_compatible();
}
return IWebResponse.success(data).to_compatible();
}
export async function get_versions_software_by_system(client, system) {
const { data, error } = await client
.from("versions_software")
.select("*")
.eq("system", system)
.order("created_at", { ascending: false });
if (error) {
return IWebResponse.error(error.message).to_compatible();
}
if (!data) {
return IWebResponse.error(`No software versions found for system: ${system}`).to_compatible();
}
return IWebResponse.success(data).to_compatible();
}
export async function create_version_software(client, newVersionSoftware) {
const { data, error } = await client
.from("versions_software")
.insert([newVersionSoftware])
.select("*")
.single();
if (error) {
return IWebResponse.error(error.message).to_compatible();
}
if (!data) {
return IWebResponse.error("Failed to create software version").to_compatible();
}
return IWebResponse.success(data).to_compatible();
}
export async function update_version_software(client, version_id, updatedVersionSoftware) {
// Remove fields that shouldn't be updated
const updateData = { ...updatedVersionSoftware };
delete updateData.id;
delete updateData.created_at;
delete updateData.created_by; // Only original creator can modify due to RLS
const { data, error } = await client
.from("versions_software")
.update(updateData)
.eq("id", version_id)
.select("*")
.single();
if (error) {
return IWebResponse.error(error.message).to_compatible();
}
if (!data) {
return IWebResponse.error("Software version not found or update failed").to_compatible();
}
return IWebResponse.success(data).to_compatible();
}
export async function delete_version_software(client, version_id) {
const { data, error } = await client
.from("versions_software")
.delete()
.eq("id", version_id)
.select("*")
.single();
if (error) {
return IWebResponse.error(error.message).to_compatible();
}
if (!data) {
return IWebResponse.error("Software version not found or deletion failed").to_compatible();
}
return IWebResponse.success(data).to_compatible();
}
export async function get_versions_software_by_created_by(client, user_id) {
const { data, error } = await client
.from("versions_software")
.select("*")
.eq("created_by", user_id)
.order("created_at", { ascending: false });
if (error) {
return IWebResponse.error(error.message).to_compatible();
}
if (!data) {
return IWebResponse.error("No software versions found for user").to_compatible();
}
return IWebResponse.success(data).to_compatible();
}