@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
50 lines • 2.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.EnableRepositories = void 0;
const context_1 = require("@nodeboot/context");
const adapter_1 = require("../adapter");
const config_1 = require("../config");
const TransactionConfiguration_1 = require("../config/TransactionConfiguration");
const QueryCacheConfiguration_1 = require("../config/QueryCacheConfiguration");
/**
* Class decorator to enable persistence repositories and configure the persistence layer.
*
* This decorator:
* - Activates the persistence feature in the application context.
* - Registers the default repositories adapter.
* - Initializes query cache, datasource, persistence, and transaction configurations.
*
* Use this decorator on your main application class to bootstrap persistence support.
*
* @returns {ClassDecorator} The class decorator function.
*
* @example
* ```ts
* @EnableRepositories() // Enables persistence layer
* @NodeBootApplication() // Activates Node-Boot framework features
* export class SampleApplication implements NodeBootApp {
* start(): Promise<NodeBootAppView> {
* return NodeBoot.run(ExpressServer);
* }
* }
* ```
*
* @author Manuel Santos <https://github.com/manusant>
*/
const EnableRepositories = () => {
return () => {
context_1.ApplicationContext.get().applicationFeatures["persistence"] = true;
// Register repositories adapter
context_1.ApplicationContext.get().repositoriesAdapter = new adapter_1.DefaultRepositoriesAdapter();
// Resolve query cache configurations
new QueryCacheConfiguration_1.QueryCacheConfiguration();
// Resolve data source configurations from configuration properties
new config_1.DataSourceConfiguration();
// Trigger persistence configuration
new config_1.PersistenceConfiguration();
// Trigger Transactions configuration
new TransactionConfiguration_1.TransactionConfiguration();
};
};
exports.EnableRepositories = EnableRepositories;
//# sourceMappingURL=EnableRepositories.js.map