UNPKG

mcp-quickbase

Version:

Work with Quickbase via Model Context Protocol

104 lines 3.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BulkCreateRecordsTool = void 0; const base_1 = require("../base"); const logger_1 = require("../../utils/logger"); const logger = (0, logger_1.createLogger)('BulkCreateRecordsTool'); /** * Tool for creating multiple records in a Quickbase table */ class BulkCreateRecordsTool extends base_1.BaseTool { /** * Constructor * @param client Quickbase client */ constructor(client) { super(client); this.name = 'bulk_create_records'; this.description = 'Creates multiple records in a Quickbase table'; /** * Parameter schema for bulk_create_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 insert', items: { type: 'object', additionalProperties: true } } }, required: ['table_id', 'records'] }; } /** * Run the bulk_create_records tool * @param params Tool parameters * @returns Bulk create result */ async run(params) { const { table_id, records } = params; logger.info(`Bulk creating ${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'); } // Prepare record data const formattedRecords = records.map(record => { const recordData = {}; for (const [field, value] of Object.entries(record)) { recordData[field] = { value }; } return recordData; }); // Prepare request body const body = { to: table_id, data: formattedRecords }; // Create the records const response = await this.client.request({ method: 'POST', path: '/records', body }); if (!response.success || !response.data) { logger.error('Failed to bulk create records', { error: response.error, tableId: table_id }); throw new Error(response.error?.message || 'Failed to bulk create records'); } const result = response.data; const metadata = result.metadata || {}; if (!metadata.createdRecordIds || metadata.createdRecordIds.length === 0) { logger.error('Bulk record creation response missing record IDs', { response: result }); throw new Error('Records created but no record IDs were returned'); } const recordIds = metadata.createdRecordIds; logger.info(`Successfully created ${recordIds.length} records`, { recordCount: recordIds.length, tableId: table_id }); return { recordIds, tableId: table_id, createdCount: recordIds.length, createdTime: new Date().toISOString() }; } } exports.BulkCreateRecordsTool = BulkCreateRecordsTool; //# sourceMappingURL=bulk_create_records.js.map