learning_ai_common_plat/packages/cosmos/src/client.ts
saravanakumardb1 90b9cf93d8 fix(common): configure ESLint 9 and fix lint issues
- Added @eslint/js dependency
- Updated eslint.config.js for ESLint 9 compatibility
- Added required globals (crypto, localStorage, React, etc.)
- Fixed unused imports and variables
- Disabled sort-imports temporarily
- Formatted all files with Prettier
2026-02-12 16:37:30 -08:00

55 lines
1.3 KiB
TypeScript

/**
* Azure Cosmos DB client singleton.
*
* Reads COSMOS_ENDPOINT, COSMOS_KEY, and COSMOS_DATABASE from process.env.
* Provides getCosmosClient(), getDatabase(), and getContainer() for simple usage.
*/
import { Container, CosmosClient, Database } from '@azure/cosmos';
let _client: CosmosClient | null = null;
let _database: Database | null = null;
function getEnvOrThrow(name: string): string {
const value = process.env[name];
if (!value) {
throw new Error(`Environment variable ${name} is required`);
}
return value;
}
export function getCosmosClient(): CosmosClient {
if (!_client) {
_client = new CosmosClient({
endpoint: getEnvOrThrow('COSMOS_ENDPOINT'),
key: getEnvOrThrow('COSMOS_KEY'),
});
}
return _client;
}
export function getDatabase(): Database {
if (!_database) {
const dbId = process.env.COSMOS_DATABASE || 'lysnrai';
_database = getCosmosClient().database(dbId);
}
return _database;
}
/**
* Get a container by name. Uses the singleton database.
* For simple services that don't need a container registry.
*/
export function getContainer(name: string): Container {
return getDatabase().container(name);
}
/**
* Reset the singleton (useful for testing).
* @internal
*/
export function _resetClient(): void {
_client = null;
_database = null;
}