@overture-stack/lyric
Version:
Data Submission system
53 lines (52 loc) • 1.52 kB
TypeScript
import { NodePgDatabase } from 'drizzle-orm/node-postgres';
import type { DbConfig } from '@overture-stack/lyric-data-model';
import * as schema from '@overture-stack/lyric-data-model/models';
import type { AuthConfig } from '../middleware/auth.js';
import type { ResultOnCommit } from '../utils/types.js';
import { Logger } from './logger.js';
export type AuditConfig = {
enabled: boolean;
};
export type RecordHierarchyConfig = {
pluralizeSchemasName: boolean;
};
export type FeaturesConfig = {
audit?: AuditConfig;
recordHierarchy: RecordHierarchyConfig;
};
export type SchemaServiceConfig = {
url: string;
};
export type LoggerConfig = {
level?: string;
file?: boolean;
};
export type IdServiceConfig = {
useLocal: boolean;
customAlphabet: string;
customSize: number;
};
/**
* Environment variables to configure internal and external resources
* (database, external services, logger, etc)
*/
export type AppConfig = {
auth: AuthConfig;
db: DbConfig;
features?: FeaturesConfig;
idService: IdServiceConfig;
logger: LoggerConfig;
onFinishCommit?: (resultOnCommit: ResultOnCommit) => void;
schemaService: SchemaServiceConfig;
};
/**
* Base Dependencies required for utils/services
*/
export interface BaseDependencies {
db: NodePgDatabase<typeof schema>;
features?: FeaturesConfig;
idService: IdServiceConfig;
logger: Logger;
onFinishCommit?: (resultOnCommit: ResultOnCommit) => void;
schemaService: SchemaServiceConfig;
}