import { apiRequest } from './utils.js'; // ── Assets ─────────────────────────────────────────────────────────────────── export async function getAsset(id) { const data = await apiRequest('GET', `/asset/${id}`, null, {}, { base: '/api' }); return data.asset ?? data; } export async function searchAssets(query) { const data = await apiRequest('GET', '/asset/search', null, { query, per_page: 10, }, { base: '/api' }); return data.assets ?? data.customer_assets ?? []; } export async function updateAsset(id, fields, customerId) { // Routes through Node.js cache layer (/api/) which invalidates the server cache // and forwards to Syncro. customer_id is used server-side for cache invalidation only. const data = await apiRequest('PUT', `/customer_assets/${id}`, { asset: fields, customer_id: customerId }, {}, { base: '/api' }); return data.asset ?? data; } // ── Contacts ───────────────────────────────────────────────────────────────── // Fetches via Node.js server cache — server handles pagination internally export async function getContacts(customerId) { const res = await fetch(`/api/contacts/${customerId}`, { credentials: 'same-origin', headers: { Accept: 'application/json' }, }); if (!res.ok) throw new Error(`HTTP ${res.status}`); const data = await res.json(); return data.contacts ?? []; } // ── Customers ──────────────────────────────────────────────────────────────── // Fetches via Node.js server cache — server handles pagination internally export async function getCustomers() { const res = await fetch('/api/customers', { credentials: 'same-origin', headers: { Accept: 'application/json' }, }); if (!res.ok) throw new Error(`HTTP ${res.status}`); const data = await res.json(); return data.customers ?? []; } export async function getCustomerAssets(customerId) { const res = await fetch(`/api/customer_assets/${customerId}`, { credentials: 'same-origin', headers: { Accept: 'application/json' }, }); if (!res.ok) throw new Error(`HTTP ${res.status}`); const data = await res.json(); return data.assets ?? []; } // ── Tickets ────────────────────────────────────────────────────────────────── export async function getTickets(customerId) { const data = await apiRequest('GET', '/tickets', null, { customer_id: customerId, per_page: 100, // fetch enough to filter client-side by contact }); return data.tickets ?? []; }