UNPKG

mcp-quickbase

Version:

Work with Quickbase via Model Context Protocol

104 lines 3.65 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