mcp-quickbase
Version:
Work with Quickbase via Model Context Protocol
104 lines • 3.65 kB
JavaScript
;
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