UNPKG

mongodb-rag-core

Version:

Common elements used by MongoDB Chatbot Framework components.

40 lines 1.77 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getDatabaseMetadata = void 0; const mongodb_schema_1 = require("mongodb-schema"); const extractDeterministicSampleOfDocuments_1 = require("./extractDeterministicSampleOfDocuments"); const truncateDbOperationOutputForLlm_1 = require("../truncateDbOperationOutputForLlm"); async function getDatabaseMetadata({ mongoClient, databaseName, numSamplesPerCollection, latestDate, }) { const db = mongoClient.db(databaseName); const collections = await db.listCollections().toArray(); const collectionsMetadata = []; for (const collection of collections) { const collectionMetadata = await getCollectionMetadata(db, collection.name, numSamplesPerCollection); collectionsMetadata.push(collectionMetadata); } return { databaseName, collections: collectionsMetadata, latestDate, }; } exports.getDatabaseMetadata = getDatabaseMetadata; async function getCollectionMetadata(db, collectionName, sampleDocumentLimit) { const collection = db.collection(collectionName); const indexes = (await collection .listIndexes() .toArray()); const exampleDocuments = await (0, extractDeterministicSampleOfDocuments_1.extractDeterministicSampleOfDocuments)({ collection, limit: sampleDocumentLimit, }); const exampleDocumentsTruncated = (0, truncateDbOperationOutputForLlm_1.truncateDbOperationOutputForLlm)(exampleDocuments); const schema = await (0, mongodb_schema_1.getSimplifiedSchema)(exampleDocuments); return { schema, indexes, collectionName, exampleDocuments: exampleDocumentsTruncated, }; } //# sourceMappingURL=getDatabaseMetadata.js.map