Skip to main content
Glama
DatabaseConfig.jsβ€’2.95 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DatabaseConfig = void 0; const Environment_1 = require("../../domain/value-objects/Environment"); class DatabaseConfig { databases; constructor(databases) { if (databases.size === 0) { throw new Error('At least one database must be configured'); } this.databases = new Map(databases); Object.freeze(this); } /** * Get database instance for environment * * Semantic: Environment determines which database to use */ getDatabaseInstance(environment) { const instance = this.databases.get(environment); if (!instance) { throw new Error(`No database configured for environment: ${environment}. ` + `Available: ${Array.from(this.databases.keys()).join(', ')}`); } return instance; } /** * Get database ID for environment */ getDatabaseId(environment) { return this.getDatabaseInstance(environment).id; } /** * Get database name for environment */ getDatabaseName(environment) { return this.getDatabaseInstance(environment).name; } /** * Check if environment has configured database */ hasEnvironment(environment) { return this.databases.has(environment); } /** * Get all configured environments */ getConfiguredEnvironments() { return Array.from(this.databases.keys()); } /** * Create config from environment variables */ static fromEnvironment(env) { const databases = new Map(); // Development database const devId = env.D1_DEV_DATABASE_ID || env.D1_DATABASE_ID; if (devId) { databases.set(Environment_1.Environment.DEVELOPMENT, { name: env.D1_DEV_DATABASE_NAME || 'development', id: devId, }); } // Staging database const stagingId = env.D1_STAGING_DATABASE_ID; if (stagingId) { databases.set(Environment_1.Environment.STAGING, { name: env.D1_STAGING_DATABASE_NAME || 'staging', id: stagingId, }); } // Production database const prodId = env.D1_PROD_DATABASE_ID || env.D1_PRODUCTION_DATABASE_ID; if (prodId) { databases.set(Environment_1.Environment.PRODUCTION, { name: env.D1_PROD_DATABASE_NAME || env.D1_PRODUCTION_DATABASE_NAME || 'production', id: prodId, }); } if (databases.size === 0) { throw new Error('No databases configured. Set at least one of: ' + 'D1_DEV_DATABASE_ID, D1_STAGING_DATABASE_ID, D1_PROD_DATABASE_ID'); } return new DatabaseConfig(databases); } } exports.DatabaseConfig = DatabaseConfig; //# sourceMappingURL=DatabaseConfig.js.map

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/semanticintent/semantic-d1-mcp'

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