feat(tech-insights): support registry and persistence at plugin

Support `FactRetrieverRegistry` and `PersistenceContext` at the `techInsightsPlugin`
using extension points.

Additionally, move `FactRetrieverRegistry` and `PersistenceContext`
to `@backstage/plugin-tech-insights-node`.
Original exports are marked as deprecated and re-export the moved types.

Signed-off-by: Patrick Jungermann <Patrick.Jungermann@gmail.com>
This commit is contained in:
Patrick Jungermann
2024-01-09 12:28:31 +01:00
parent 25cfb763be
commit 341c2a24a0
18 changed files with 200 additions and 65 deletions
+37
View File
@@ -80,6 +80,20 @@ export type FactRetrieverRegistration = {
initialDelay?: Duration | HumanDuration;
};
// @public (undocumented)
export interface FactRetrieverRegistry {
// (undocumented)
get(retrieverReference: string): Promise<FactRetrieverRegistration>;
// (undocumented)
getSchemas(): Promise<FactSchema[]>;
// (undocumented)
listRegistrations(): Promise<FactRetrieverRegistration[]>;
// (undocumented)
listRetrievers(): Promise<FactRetriever[]>;
// (undocumented)
register(registration: FactRetrieverRegistration): Promise<void>;
}
// @public
export type FactSchemaDefinition = Omit<FactRetriever, 'handler'>;
@@ -93,6 +107,11 @@ export type MaxItems = {
maxItems: number;
};
// @public
export type PersistenceContext = {
techInsightsStore: TechInsightsStore;
};
// @public
export interface TechInsightCheck {
description: string;
@@ -152,6 +171,15 @@ export interface TechInsightsFactCheckerFactoryExtensionPoint {
// @public
export const techInsightsFactCheckerFactoryExtensionPoint: ExtensionPoint<TechInsightsFactCheckerFactoryExtensionPoint>;
// @public (undocumented)
export interface TechInsightsFactRetrieverRegistryExtensionPoint {
// (undocumented)
setFactRetrieverRegistry(registry: FactRetrieverRegistry): void;
}
// @public
export const techInsightsFactRetrieverRegistryExtensionPoint: ExtensionPoint<TechInsightsFactRetrieverRegistryExtensionPoint>;
// @public (undocumented)
export interface TechInsightsFactRetrieversExtensionPoint {
// (undocumented)
@@ -161,6 +189,15 @@ export interface TechInsightsFactRetrieversExtensionPoint {
// @public
export const techInsightsFactRetrieversExtensionPoint: ExtensionPoint<TechInsightsFactRetrieversExtensionPoint>;
// @public (undocumented)
export interface TechInsightsPersistenceContextExtensionPoint {
// (undocumented)
setPersistenceContext(context: PersistenceContext): void;
}
// @public
export const techInsightsPersistenceContextExtensionPoint: ExtensionPoint<TechInsightsPersistenceContextExtensionPoint>;
// @public
export interface TechInsightsStore {
getFactsBetweenTimestampsByIds(
@@ -16,8 +16,9 @@
import { createExtensionPoint } from '@backstage/backend-plugin-api';
import { CheckResult } from '@backstage/plugin-tech-insights-common';
import { FactRetriever } from './facts';
import { FactCheckerFactory, TechInsightCheck } from './checks';
import { FactRetriever, FactRetrieverRegistry } from './facts';
import { PersistenceContext } from './persistence';
/**
* @public
@@ -57,3 +58,37 @@ export const techInsightsFactCheckerFactoryExtensionPoint =
createExtensionPoint<TechInsightsFactCheckerFactoryExtensionPoint>({
id: 'tech-insights.fact-checker-factory',
});
/**
* @public
*/
export interface TechInsightsFactRetrieverRegistryExtensionPoint {
setFactRetrieverRegistry(registry: FactRetrieverRegistry): void;
}
/**
* An extension point that allows other plugins or modules to set a custom FactRetrieverRegistry.
*
* @public
*/
export const techInsightsFactRetrieverRegistryExtensionPoint =
createExtensionPoint<TechInsightsFactRetrieverRegistryExtensionPoint>({
id: 'tech-insights.fact-retriever-registry',
});
/**
* @public
*/
export interface TechInsightsPersistenceContextExtensionPoint {
setPersistenceContext(context: PersistenceContext): void;
}
/**
* An extension point that allows other plugins or modules to set a custom PersistenceContext.
*
* @public
*/
export const techInsightsPersistenceContextExtensionPoint =
createExtensionPoint<TechInsightsPersistenceContextExtensionPoint>({
id: 'tech-insights.persistence-context',
});
+11
View File
@@ -230,3 +230,14 @@ export type FactRetrieverRegistration = {
*/
initialDelay?: Duration | HumanDuration;
};
/**
* @public
*/
export interface FactRetrieverRegistry {
register(registration: FactRetrieverRegistration): Promise<void>;
get(retrieverReference: string): Promise<FactRetrieverRegistration>;
listRetrievers(): Promise<FactRetriever[]>;
listRegistrations(): Promise<FactRetrieverRegistration[]>;
getSchemas(): Promise<FactSchema[]>;
}
@@ -22,6 +22,15 @@ import {
import { DateTime } from 'luxon';
import { FactSchema } from '@backstage/plugin-tech-insights-common';
/**
* A Container for persistence related components in TechInsights
*
* @public
*/
export type PersistenceContext = {
techInsightsStore: TechInsightsStore;
};
/**
* TechInsights Database
*