File size: 1,433 Bytes
4e23b01 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | import { z } from 'zod';
import { parseBooleanEnv } from '#/_base/utils/env';
import {
type EnvBindings,
envBindings,
type IConfigService,
stripEnvBoundFields,
} from '#/app/config/config';
import { registerConfigSection } from '#/app/config/configSectionContributions';
export const DATABASE_SECTION = 'database';
export const PERSISTENCE_MINIDB_READMODEL_ENV = 'KIMI_CODE_PERSISTENCE_MINIDB_READMODEL';
export const SEARCH_WORKER_ENV = 'KIMI_CODE_SEARCH_WORKER';
export const DatabaseConfigSchema = z.object({
base: z.boolean().optional(),
search: z.boolean().optional(),
});
export type DatabaseConfig = z.infer<typeof DatabaseConfigSchema>;
export const databaseEnvBindings: EnvBindings<DatabaseConfig> = envBindings(
DatabaseConfigSchema,
{
base: { env: PERSISTENCE_MINIDB_READMODEL_ENV, parse: parseBooleanEnv },
search: { env: SEARCH_WORKER_ENV, parse: parseBooleanEnv },
},
);
export const stripDatabaseEnv = stripEnvBoundFields(databaseEnvBindings);
registerConfigSection(DATABASE_SECTION, DatabaseConfigSchema, {
env: databaseEnvBindings,
stripEnv: stripDatabaseEnv,
});
export function databaseBaseEnabled(config: IConfigService): boolean {
return config.get<DatabaseConfig | undefined>(DATABASE_SECTION)?.base ?? true;
}
export function databaseSearchEnabled(config: IConfigService): boolean {
return config.get<DatabaseConfig | undefined>(DATABASE_SECTION)?.search ?? true;
}
|