29 lines
1.0 KiB
TypeScript
29 lines
1.0 KiB
TypeScript
import { initializeAllContainers, registerContainers } from '@bytelyst/cosmos';
|
|
import type { ContainerConfig } from '@bytelyst/cosmos';
|
|
import { config } from './config.js';
|
|
|
|
const CONTAINER_DEFS: Record<string, ContainerConfig> = {
|
|
users: { partitionKeyPath: '/id' },
|
|
devices: { partitionKeyPath: '/userId' },
|
|
notification_prefs: { partitionKeyPath: '/userId' },
|
|
audit_log: { partitionKeyPath: '/category', defaultTtl: 90 * 86400 },
|
|
feature_flags: { partitionKeyPath: '/id' },
|
|
};
|
|
|
|
export async function initCosmosIfNeeded(): Promise<void> {
|
|
registerContainers(CONTAINER_DEFS);
|
|
|
|
const shouldInit = config.NODE_ENV !== 'production' || process.env.COSMOS_AUTO_INIT === 'true';
|
|
if (!shouldInit) return;
|
|
|
|
try {
|
|
await initializeAllContainers();
|
|
// eslint-disable-next-line no-console
|
|
console.info('[platform-service] Cosmos containers ensured');
|
|
} catch (err) {
|
|
const msg = err instanceof Error ? err.message : String(err);
|
|
// eslint-disable-next-line no-console
|
|
console.warn(`[platform-service] Cosmos init failed: ${msg}`);
|
|
}
|
|
}
|