From e94d869dd059224d583616d0c47ded5a5cbe46a1 Mon Sep 17 00:00:00 2001 From: Samarpan Bhattacharya Date: Wed, 3 Apr 2019 14:24:00 +0530 Subject: [PATCH] feat(repository): add execute implementation Added execute implementation to the default repository class fix #2165 --- .../legacy-juggler-bridge.unit.ts | 21 +++++++++++++++++++ .../src/repositories/legacy-juggler-bridge.ts | 4 +--- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/packages/repository/src/__tests__/unit/repositories/legacy-juggler-bridge.unit.ts b/packages/repository/src/__tests__/unit/repositories/legacy-juggler-bridge.unit.ts index c9b4b9217336..7f32809ab6f7 100644 --- a/packages/repository/src/__tests__/unit/repositories/legacy-juggler-bridge.unit.ts +++ b/packages/repository/src/__tests__/unit/repositories/legacy-juggler-bridge.unit.ts @@ -394,4 +394,25 @@ describe('DefaultCrudRepository', () => { const ok = await repo.exists(note1.id); expect(ok).to.be.true(); }); + + it('implements Repository.execute()', async () => { + // Dummy implementation for execute() in datasource + ds.execute = (command, parameters, options) => { + return Promise.resolve({command, parameters, options}); + }; + const repo = new DefaultCrudRepository(Note, ds); + const result = await repo.execute('query', ['arg']); + expect(result).to.eql({ + command: 'query', + parameters: ['arg'], + options: undefined, + }); + }); + + it(`throws error when execute() not implemented by ds connector`, async () => { + const repo = new DefaultCrudRepository(Note, ds); + await expect(repo.execute('query', [])).to.be.rejectedWith( + 'execute() must be implemented by the connector', + ); + }); }); diff --git a/packages/repository/src/repositories/legacy-juggler-bridge.ts b/packages/repository/src/repositories/legacy-juggler-bridge.ts index bd522d8e5392..5e3b028292a3 100644 --- a/packages/repository/src/repositories/legacy-juggler-bridge.ts +++ b/packages/repository/src/repositories/legacy-juggler-bridge.ts @@ -433,12 +433,10 @@ export class DefaultCrudRepository async execute( command: Command, - // tslint:disable:no-any parameters: NamedParameters | PositionalParameters, options?: Options, ): Promise { - /* istanbul ignore next */ - throw new Error('Not implemented'); + return ensurePromise(this.dataSource.execute(command, parameters, options)); } protected toEntity(model: juggler.PersistedModel): T {