UNPKG

mcp-quickbase

Version:

Work with Quickbase via Model Context Protocol

102 lines 3.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BulkUpdateRecordsTool = void 0; const base_1 = require("../base"); const logger_1 = require("../../utils/logger"); const logger = (0, logger_1.createLogger)('BulkUpdateRecordsTool'); /** * Tool for updating multiple records in a Quickbase table */ class BulkUpdateRecordsTool extends base_1.BaseTool { /** * Constructor * @param client Quickbase client */ constructor(client) { super(client); this.name = 'bulk_update_records'; this.description = 'Updates multiple records in a Quickbase table'; /** * Parameter schema for bulk_update_records */ this.paramSchema = { type: 'object', properties: { table_id: { type: 'string', description: 'The ID of the Quickbase table' }, records: { type: 'array', description: 'Array of record data to update (must include record IDs)', items: { type: 'object', additionalProperties: true } } }, required: ['table_id', 'records'] }; } /** * Run the bulk_update_records tool * @param params Tool parameters * @returns Bulk update result */ async run(params) { const { table_id, records } = params; logger.info(`Bulk updating ${records.length} records in Quickbase table`, { tableId: table_id, recordCount: records.length }); // Validate records if (!records || !Array.isArray(records) || records.length === 0) { throw new Error('Records array is required and must not be empty'); } // Check if all records have IDs const missingIds = records.some(record => !record.id); if (missingIds) { throw new Error('All records must include an "id" field for bulk updates'); } // Prepare record data const formattedRecords = records.map(record => { const { id, ...fields } = record; const recordData = { id }; for (const [field, value] of Object.entries(fields)) { recordData[field] = { value }; } return recordData; }); // Prepare request body const body = { to: table_id, data: formattedRecords }; // Update the records const response = await this.client.request({ method: 'POST', path: '/records', body }); if (!response.success || !response.data) { logger.error('Failed to bulk update records', { error: response.error, tableId: table_id }); throw new Error(response.error?.message || 'Failed to bulk update records'); } const recordIds = records.map(record => record.id); logger.info(`Successfully updated ${recordIds.length} records`, { recordCount: recordIds.length, tableId: table_id }); return { recordIds, tableId: table_id, updatedCount: recordIds.length, updatedTime: new Date().toISOString() }; } } exports.BulkUpdateRecordsTool = BulkUpdateRecordsTool; //# sourceMappingURL=bulk_update_records.js.map