From c3fe64b2c4035f12c36f41346d8c367187ba6b13 Mon Sep 17 00:00:00 2001 From: sblausten Date: Wed, 6 Jul 2022 10:11:07 +0200 Subject: [PATCH] PR comments Signed-off-by: sblausten --- .changeset/rich-goats-breathe.md | 4 ++-- .../src/service/fact/FactRetrieverRegistry.ts | 16 ++++++++++------ 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/.changeset/rich-goats-breathe.md b/.changeset/rich-goats-breathe.md index 6391cad0d1..de8942c248 100644 --- a/.changeset/rich-goats-breathe.md +++ b/.changeset/rich-goats-breathe.md @@ -1,5 +1,5 @@ --- -'@backstage/plugin-tech-insights-backend': patch +'@backstage/plugin-tech-insights-backend': minor --- -Update FactRetrieverRegistry interface to be async so that db backed implementations can be passed through to the FactRetrieverEngine. +**BREAKING**: Update FactRetrieverRegistry interface to be async so that db backed implementations can be passed through to the FactRetrieverEngine. diff --git a/plugins/tech-insights-backend/src/service/fact/FactRetrieverRegistry.ts b/plugins/tech-insights-backend/src/service/fact/FactRetrieverRegistry.ts index 1ad7626e8e..4690ef9f09 100644 --- a/plugins/tech-insights-backend/src/service/fact/FactRetrieverRegistry.ts +++ b/plugins/tech-insights-backend/src/service/fact/FactRetrieverRegistry.ts @@ -42,13 +42,17 @@ export interface FactRetrieverRegistry { export class DefaultFactRetrieverRegistry implements FactRetrieverRegistry { private readonly retrievers = new Map(); - constructor(retrievers: FactRetrieverRegistration[]) { + static create( + retrievers: FactRetrieverRegistration[], + ): FactRetrieverRegistry { + const registry = new DefaultFactRetrieverRegistry(); retrievers.forEach(it => { - this.register(it); + registry.register(it); }); + return registry; } - register(registration: FactRetrieverRegistration) { + async register(registration: FactRetrieverRegistration) { if (this.retrievers.has(registration.factRetriever.id)) { throw new ConflictError( `Tech insight fact retriever with identifier '${registration.factRetriever.id}' has already been registered`, @@ -58,7 +62,7 @@ export class DefaultFactRetrieverRegistry implements FactRetrieverRegistry { return Promise.resolve(); } - get(retrieverReference: string): Promise { + async get(retrieverReference: string): Promise { const registration = this.retrievers.get(retrieverReference); if (!registration) { throw new NotFoundError( @@ -68,13 +72,13 @@ export class DefaultFactRetrieverRegistry implements FactRetrieverRegistry { return Promise.resolve(registration); } - listRetrievers(): Promise { + async listRetrievers(): Promise { return Promise.resolve( [...this.retrievers.values()].map(it => it.factRetriever), ); } - listRegistrations(): Promise { + async listRegistrations(): Promise { return Promise.resolve([...this.retrievers.values()]); }