44 lines
1.3 KiB
TypeScript
44 lines
1.3 KiB
TypeScript
|
|
/**
|
||
|
|
* Utility functions for retrieving statistics from Brainy
|
||
|
|
*/
|
||
|
|
|
||
|
|
import { BrainyData } from '../brainyData.js'
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Get statistics about the current state of a BrainyData instance
|
||
|
|
* This function provides access to statistics at the root level of the library
|
||
|
|
*
|
||
|
|
* @param instance A BrainyData instance to get statistics from
|
||
|
|
* @param options Additional options for retrieving statistics
|
||
|
|
* @returns Object containing counts of nouns, verbs, metadata entries, and HNSW index size
|
||
|
|
* @throws Error if the instance is not provided or if statistics retrieval fails
|
||
|
|
*/
|
||
|
|
export async function getStatistics(
|
||
|
|
instance: BrainyData,
|
||
|
|
options: {
|
||
|
|
service?: string | string[] // Filter statistics by service(s)
|
||
|
|
} = {}
|
||
|
|
): Promise<{
|
||
|
|
nounCount: number
|
||
|
|
verbCount: number
|
||
|
|
metadataCount: number
|
||
|
|
hnswIndexSize: number
|
||
|
|
serviceBreakdown?: {
|
||
|
|
[service: string]: {
|
||
|
|
nounCount: number
|
||
|
|
verbCount: number
|
||
|
|
metadataCount: number
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}> {
|
||
|
|
if (!instance) {
|
||
|
|
throw new Error('BrainyData instance must be provided to getStatistics')
|
||
|
|
}
|
||
|
|
|
||
|
|
try {
|
||
|
|
return await instance.getStatistics(options)
|
||
|
|
} catch (error) {
|
||
|
|
console.error('Failed to get statistics:', error)
|
||
|
|
throw new Error(`Failed to get statistics: ${error}`)
|
||
|
|
}
|
||
|
|
}
|