Merge pull request #1835 from strongloop/feat/datasource-stop

feat: implement DataSource.stop()
This commit is contained in:
Miroslav Bajtoš 2020-04-27 13:42:58 +02:00 committed by GitHub
commit 74c6776575
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 36 additions and 0 deletions

View File

@ -2220,6 +2220,14 @@ DataSource.prototype.disconnect = function disconnect(cb) {
return cb.promise;
};
/**
* An alias for `disconnect` to make the datasource a LB4 life-cycle observer.
* Please note that we are intentionally not providing a `start` method,
* because the logic for establishing connection(s) is more complex
* and usually started immediately from the datasoure constructor.
*/
DataSource.prototype.stop = DataSource.prototype.disconnect;
/**
* Copy the model from Master.
* @param {Function} Master The model constructor

View File

@ -330,6 +330,31 @@ describe('DataSource', function() {
});
});
it('provides stop() API calling disconnect', function(done) {
const mockConnector = {
name: 'loopback-connector-mock',
initialize: function(ds, cb) {
ds.connector = mockConnector;
process.nextTick(function() {
cb(null);
});
},
};
const dataSource = new DataSource(mockConnector);
dataSource.on('connected', function() {
// DataSource is now connected
// connected: true, connecting: false
dataSource.connected.should.be.true();
dataSource.connecting.should.be.false();
dataSource.stop(() => {
dataSource.connected.should.be.false();
done();
});
});
});
describe('deleteModelByName()', () => {
it('removes the model from ModelBuilder registry', () => {
const ds = new DataSource('ds', {connector: 'memory'});

View File

@ -287,6 +287,9 @@ export declare class DataSource extends EventEmitter {
// legacy callback style
disconnect(callback: Callback): void;
// Only promise variant, callback is intentionally not described.
stop(): Promise<void>;
ping(): Promise<void>;
// legacy callback style
ping(callback: Callback): void;