Skip to main content
Glama
driver-factory.ts2.89 kB
/** * Driver Factory - Selects database driver based on environment configuration * * Supports pluggable database drivers through the DbDriver interface. * Selection is controlled by MEMORY_DB_DRIVER environment variable. */ import type { DbDriver } from './db-driver.js'; import { createBetterSqlite3Driver } from './better-sqlite3-driver.js'; import { createSqlJsDriver } from './sqljs-driver.js'; import type Database from 'better-sqlite3'; /** * Supported database driver types */ export type DriverType = 'better-sqlite3' | 'sqljs'; /** * Driver configuration options */ export interface DriverConfig { /** * Database file path (for file-based drivers like better-sqlite3) */ path: string; /** * Driver-specific options (e.g., better-sqlite3 Database.Options) */ options?: Database.Options; } /** * Create database driver based on type * * @param type - Driver type ('better-sqlite3' or 'sqljs') * @param config - Driver configuration * @returns DbDriver instance * @throws Error if driver type is unsupported or driver initialization fails */ export function createDriver(type: DriverType, config: DriverConfig): DbDriver { switch (type) { case 'better-sqlite3': return createBetterSqlite3Driver(config.path, config.options); case 'sqljs': // SqlJsDriver is a stub - throws informative error return createSqlJsDriver(); default: throw new Error( `Unsupported driver type: ${type}\n` + 'Supported drivers: better-sqlite3, sqljs\n' + 'Set MEMORY_DB_DRIVER environment variable to select driver.' ); } } /** * Get driver type from environment variable * * @returns Driver type from MEMORY_DB_DRIVER env var, defaults to 'better-sqlite3' */ export function getDriverTypeFromEnv(): DriverType { const envDriver = process.env['MEMORY_DB_DRIVER']; if (!envDriver) { return 'better-sqlite3'; // Default } const normalized = envDriver.toLowerCase().trim(); if (normalized === 'better-sqlite3' || normalized === 'sqljs') { return normalized as DriverType; } console.error( `[WARN] Unknown MEMORY_DB_DRIVER value: "${envDriver}". ` + 'Using default: better-sqlite3. ' + 'Valid options: better-sqlite3, sqljs' ); return 'better-sqlite3'; } /** * Create database driver from environment configuration * * Convenience function that reads MEMORY_DB_DRIVER from environment * and creates the appropriate driver instance. * * @param config - Driver configuration * @returns DbDriver instance */ export function createDriverFromEnv(config: DriverConfig): DbDriver { const driverType = getDriverTypeFromEnv(); console.error(`[INFO] Using database driver: ${driverType}`); return createDriver(driverType, config); }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/WhenMoon-afk/claude-memory-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server