UNPKG

@nodeboot/starter-persistence

Version:

Nodeboot starter package for persistence. Supports data access layer auto-configuration providing features like database initialization, consistency check, entity mapping, repository pattern, transactions, paging, migrations, persistence listeners, persis

105 lines 4.9 kB
import { DataSource, EntityManager } from "typeorm"; import { BeansContext, IocContainer } from "@nodeboot/context"; import { Logger } from "winston"; /** * The PersistenceConfiguration class is responsible for configuring the persistence layer of the application. * It defines beans for DataSource and EntityManager, manages database initialization, * migrations, synchronization, repository bindings, and ensures persistence consistency. * * Main functionalities include: * - Configuring the DataSource bean * - Initializing DataSource and running migrations or synchronization if enabled * - Injecting dependencies into subscribers and MongoDB client * - Binding data repositories to the DI container * - Validating the persistence layer consistency * * @author Manuel Santos <https://github.com/manusant> */ export declare class PersistenceConfiguration { /** * Configures and provides the DataSource bean for the persistence layer. * Initializes the DataSource, injects dependencies, runs migrations or database synchronization * based on configuration, and validates database consistency. * * @param {BeansContext} context - Context containing iocContainer, logger, and lifecycleBridge. * @returns {DataSource} The initialized and configured TypeORM DataSource instance. * * @throws {Error} If DataSource initialization fails. * * @author Manuel Santos <https://github.com/manusant> */ dataSource({ iocContainer, logger, lifecycleBridge }: BeansContext): DataSource; /** * Provides an instance of the EntityManager bean for database operations. * * @param {BeansContext} context - Context containing iocContainer and logger. * @returns {EntityManager} The EntityManager instance from the configured DataSource. * * @author Manuel Santos <https://github.com/manusant> */ entityManager({ iocContainer, logger }: BeansContext): EntityManager; /** * Sets up dependency injection for persistence event subscribers. * Injects required dependencies into subscriber instances based on metadata. * * @param {Logger} logger - Logger instance for logging messages. * @param {DataSource} dataSource - The DataSource containing subscribers. * @param {IocContainer<unknown>} iocContainer - The IoC container for resolving dependencies. * * @author Manuel Santos <https://github.com/manusant> */ static setupInjection(logger: Logger, dataSource: DataSource, iocContainer: IocContainer<unknown>): void; /** * Injects the MongoDB client into the IoC container. * Retrieves MongoClient from the TypeORM MongoDriver and registers it for DI. * * @param {Logger} logger - Logger instance for logging messages. * @param {DataSource} dataSource - TypeORM DataSource instance. * @param {IocContainer<unknown>} iocContainer - The IoC container where MongoClient will be registered. * * @author Manuel Santos <https://github.com/manusant> */ static injectMongoClient(logger: Logger, dataSource: DataSource, iocContainer: IocContainer<unknown>): void; /** * Runs database migrations using the provided DataSource. * Logs migration success or failure. * * @param {Logger} logger - Logger instance for logging messages. * @param {DataSource} dataSource - The DataSource to run migrations on. * * @author Manuel Santos <https://github.com/manusant> */ static runMigration(logger: Logger, dataSource: DataSource): Promise<void>; /** * Binds persistence repositories to the IoC container. * Throws an error if the DI container is not configured. * * @param {Logger} logger - Logger instance for logging messages. * * @throws {Error} When diOptions or IOC container is missing. * * @author Manuel Santos <https://github.com/manusant> */ static bindDataRepositories(logger: Logger): void; /** * Runs database synchronization. * Logs success or errors. * * @param {Logger} logger - Logger instance for logging messages. * @param {DataSource} dataSource - The DataSource to synchronize. * * @author Manuel Santos <https://github.com/manusant> */ static runDatabaseSync(logger: Logger, dataSource: DataSource): Promise<void>; /** * Validates database consistency by comparing registered entities with existing tables. * Logs inconsistencies and exits process if found. * * @param {Logger} logger - Logger instance for logging messages. * @param {DataSource} dataSource - The DataSource used to create a query runner. * * @author Manuel Santos <https://github.com/manusant> */ static ensureDatabase(logger: Logger, dataSource: DataSource): Promise<void>; } //# sourceMappingURL=PersistenceConfiguration.d.ts.map