UNPKG

mcp-quickbase

Version:

Work with Quickbase via Model Context Protocol

99 lines 3.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.UpdateRecordTool = void 0; const base_1 = require("../base"); const logger_1 = require("../../utils/logger"); const logger = (0, logger_1.createLogger)('UpdateRecordTool'); /** * Tool for updating an existing record in a Quickbase table */ class UpdateRecordTool extends base_1.BaseTool { /** * Constructor * @param client Quickbase client */ constructor(client) { super(client); this.name = 'update_record'; this.description = 'Updates an existing record in a Quickbase table'; /** * Parameter schema for update_record */ this.paramSchema = { type: 'object', properties: { table_id: { type: 'string', description: 'The ID of the Quickbase table' }, record_id: { type: 'string', description: 'The ID of the record to update' }, data: { type: 'object', description: 'The updated data for the record', additionalProperties: true } }, required: ['table_id', 'record_id', 'data'] }; } /** * Run the update_record tool * @param params Tool parameters * @returns Updated record information */ async run(params) { const { table_id, record_id, data } = params; logger.info('Updating record in Quickbase table', { tableId: table_id, recordId: record_id }); // Validate data if (!data || typeof data !== 'object' || Object.keys(data).length === 0) { throw new Error('Update data is required and must be a non-empty object'); } // Prepare record data // Convert data to { [fieldId]: { value: fieldValue } } format expected by the API const recordData = {}; for (const [field, value] of Object.entries(data)) { recordData[field] = { value }; } // Prepare request body const body = { to: table_id, data: [{ id: record_id, ...recordData }] }; // Update the record const response = await this.client.request({ method: 'POST', path: '/records', body }); if (!response.success || !response.data) { logger.error('Failed to update record', { error: response.error, tableId: table_id, recordId: record_id }); throw new Error(response.error?.message || 'Failed to update record'); } logger.info('Successfully updated record', { recordId: record_id, tableId: table_id, updatedFields: Object.keys(data) }); return { recordId: record_id, tableId: table_id, updatedTime: new Date().toISOString(), updatedFields: Object.keys(data) }; } } exports.UpdateRecordTool = UpdateRecordTool; //# sourceMappingURL=update_record.js.map