@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
JavaScript
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;
;