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