import { ConfigParams, IConfigurable, IOpenable, IReferenceable, IReferences } from "pip-services3-commons-nodex";
class MyCustomPersistence {
// Custom implementation using any persistence framework
}
class MyCustomPersistenceWrapper implements IConfigurable, IReferenceable, IOpenable {
public _config: ConfigParams = new ConfigParams();
public _persistence: MyCustomPersistence;
public configure(config: ConfigParams): void {
// Store config parameters
this._config = config ?? this._config;
}
public setReferences(references: IReferences): void {
// Retrieve whatever references you may need
}
public isOpen(): boolean {
return this._persistence != null;
}
public async open(correlationId: string): Promise<void> {
if (this._persistence != null) return;
// Create custom persistence
this._persistence = new MyCustomPersistence();
// Configure custom persistence
...
// Open and connect to the database
await this._persistence.connect();
}
public async close(correlationId: string): Promise<void> {
if (this._persistence == null) return;
// Disconnect from the database and close
await this._persistence.disconnect();
this._persistence = null;
}
public customMethod(...) {
// Delegate operations to custom persistence
return await this._persistence.customMethod(...);
}
}