- Reads validated DB_PROVIDER from Zod config instead of raw env - Removes stale isTest fallback logic (now handled by config defaults)
47 lines
1.0 KiB
TypeScript
47 lines
1.0 KiB
TypeScript
import {
|
|
type DatastoreProvider,
|
|
type DocumentCollection,
|
|
type BaseDocument,
|
|
setDatastore,
|
|
CosmosDatastoreProvider,
|
|
MemoryDatastoreProvider,
|
|
} from '@bytelyst/datastore';
|
|
import { config } from './config.js';
|
|
|
|
let provider: DatastoreProvider | null = null;
|
|
|
|
export function initDatastore(): DatastoreProvider {
|
|
if (provider) {
|
|
return provider;
|
|
}
|
|
|
|
if (config.DB_PROVIDER === 'memory') {
|
|
provider = new MemoryDatastoreProvider();
|
|
} else {
|
|
provider = new CosmosDatastoreProvider();
|
|
}
|
|
|
|
setDatastore(provider);
|
|
return provider;
|
|
}
|
|
|
|
export function setProvider(nextProvider: DatastoreProvider): void {
|
|
provider = nextProvider;
|
|
setDatastore(nextProvider);
|
|
}
|
|
|
|
export function getCollection<T extends BaseDocument = BaseDocument>(
|
|
name: string,
|
|
partitionKeyPath: string = '/productId'
|
|
): DocumentCollection<T> {
|
|
if (!provider) {
|
|
initDatastore();
|
|
}
|
|
|
|
return provider!.getCollection<T>(name, partitionKeyPath);
|
|
}
|
|
|
|
export function resetDatastoreProvider(): void {
|
|
provider = null;
|
|
}
|