@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
TypeScript
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