UNPKG

@devvai/devv-code-backend

Version:

Backend SDK for Devv Code - Provides authentication, data management, email and AI capabilities

124 lines (123 loc) 4.57 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ProjectTable = void 0; const device_1 = require("./device"); const session_1 = require("./session"); const constants_1 = require("./constants"); class ProjectTable { async addItem(tableId, data) { const deviceId = (0, device_1.getEncryptedDeviceId)(); const sid = (0, session_1.getSid)(); const headers = { 'Content-Type': 'application/json', 'Device-Id': deviceId }; if (sid) { headers['sid'] = sid; } const response = await fetch(`${constants_1.BASE_URL}api/v1/project-tables/${tableId}/items`, { method: 'POST', headers, body: JSON.stringify(data) }); if (!response.ok) { const error = await response.json(); throw new Error(error.errMsg || error.error || 'Failed to add item'); } } async getItems(tableId, options) { const queryParams = new URLSearchParams(); // Handle basic parameters (with underscore prefix) if (options?.limit) { queryParams.append('_limit', Math.min(options.limit, 100).toString()); } if (options?.cursor) { queryParams.append('_cursor', options.cursor); } if (options?.sort) { queryParams.append('_sort', options.sort); } if (options?.order) { queryParams.append('_order', options.order); } // Handle dynamic query parameters if (options?.query) { Object.entries(options.query).forEach(([field, condition]) => { if (typeof condition === 'object' && 'operator' in condition) { // With operator const { operator, value } = condition; if (operator === 'BETWEEN' && Array.isArray(value)) { queryParams.append(field, `BETWEEN:${value[0]},${value[1]}`); } else { queryParams.append(field, `${operator}:${value}`); } } else { // Simple value, defaults to EQ queryParams.append(field, String(condition)); } }); } const url = `${constants_1.BASE_URL}api/v1/project-tables/${tableId}/items${queryParams.toString() ? '?' + queryParams.toString() : ''}`; const deviceId = (0, device_1.getEncryptedDeviceId)(); const sid = (0, session_1.getSid)(); const headers = { 'Content-Type': 'application/json', 'Device-Id': deviceId }; if (sid) { headers['sid'] = sid; } const response = await fetch(url, { method: 'GET', headers }); if (!response.ok) { const error = await response.json(); throw new Error(error.errMsg || error.error || 'Failed to get items'); } return await response.json(); } async updateItem(tableId, data) { const deviceId = (0, device_1.getEncryptedDeviceId)(); const sid = (0, session_1.getSid)(); const headers = { 'Content-Type': 'application/json', 'Device-Id': deviceId }; if (sid) { headers['sid'] = sid; } const response = await fetch(`${constants_1.BASE_URL}api/v1/project-tables/${tableId}/items`, { method: 'PUT', headers, body: JSON.stringify(data) }); if (!response.ok) { const error = await response.json(); throw new Error(error.errMsg || error.error || 'Failed to update item'); } } async deleteItem(tableId, keys) { const deviceId = (0, device_1.getEncryptedDeviceId)(); const sid = (0, session_1.getSid)(); const headers = { 'Content-Type': 'application/json', 'Device-Id': deviceId }; if (sid) { headers['sid'] = sid; } const response = await fetch(`${constants_1.BASE_URL}api/v1/project-tables/${tableId}/items`, { method: 'DELETE', headers, body: JSON.stringify(keys) }); if (!response.ok) { const error = await response.json(); throw new Error(error.errMsg || error.error || 'Failed to delete item'); } } } exports.ProjectTable = ProjectTable;