PR comments

Signed-off-by: sblausten <sam@roadie.io>
This commit is contained in:
sblausten
2022-07-06 10:11:07 +02:00
parent 7001ee13d8
commit c3fe64b2c4
2 changed files with 12 additions and 8 deletions
+2 -2
View File
@@ -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.
@@ -42,13 +42,17 @@ export interface FactRetrieverRegistry {
export class DefaultFactRetrieverRegistry implements FactRetrieverRegistry {
private readonly retrievers = new Map<string, FactRetrieverRegistration>();
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<FactRetrieverRegistration> {
async get(retrieverReference: string): Promise<FactRetrieverRegistration> {
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<FactRetriever[]> {
async listRetrievers(): Promise<FactRetriever[]> {
return Promise.resolve(
[...this.retrievers.values()].map(it => it.factRetriever),
);
}
listRegistrations(): Promise<FactRetrieverRegistration[]> {
async listRegistrations(): Promise<FactRetrieverRegistration[]> {
return Promise.resolve([...this.retrievers.values()]);
}