@enginuity-io/dora-metrics-backend
Version:
DORA Metrics backend plugin for Backstage
92 lines (87 loc) • 2.74 kB
TypeScript
import { Logger } from 'winston';
import { Knex } from 'knex';
import { Config } from '@backstage/config';
import { Router } from 'express';
declare class DevLakeDatabase {
private readonly client;
constructor(config: Config, logger: Logger);
testConnection(): Promise<boolean>;
getClient(): Knex;
listTables(): Promise<string[]>;
describeTable(tableName: string): Promise<any[]>;
}
interface DeploymentFrequency {
period: string;
deploymentCount: number;
}
interface LeadTimeForChanges {
date: string;
leadTime: number;
}
interface MeanTimeToRestore {
date: string;
mttr: number;
}
interface ChangeFailureRate {
date: string;
rate: number;
failureRate?: number;
}
interface DoraMetricsSummary {
deploymentFrequency: {
value: string;
level: 'elite' | 'high' | 'medium' | 'low';
};
leadTimeForChanges: {
value: string;
level: 'elite' | 'high' | 'medium' | 'low';
};
meanTimeToRestore: {
value: string;
level: 'elite' | 'high' | 'medium' | 'low';
};
changeFailureRate: {
value: string;
level: 'elite' | 'high' | 'medium' | 'low';
};
}
declare class DoraMetricsService {
private readonly database;
private readonly logger;
private deploymentFrequencyMetadata;
private leadTimeMetadata;
private mttrMetadata;
private failureRateMetadata;
constructor(database: DevLakeDatabase, logger: Logger);
/**
* Get a list of all projects available in DevLake
*/
getProjects(): Promise<string[]>;
/**
* Get deployment frequency data for a project
*/
getDeploymentFrequency(projectKey: string, timeRange?: string): Promise<DeploymentFrequency[]>;
/**
* Get lead time for changes data for a project
*/
getLeadTimeForChanges(projectKey: string, timeRange?: string): Promise<LeadTimeForChanges[]>;
/**
* Get mean time to restore data for a project
*/
getMeanTimeToRestore(projectKey: string, timeRange?: string): Promise<MeanTimeToRestore[]>;
/**
* Get change failure rate data for a project
*/
getChangeFailureRate(projectKey: string, timeRange?: string): Promise<ChangeFailureRate[]>;
/**
* Get summary of all DORA metrics for a project
*/
getDoraMetricsSummary(projectKey: string, timeRange?: string): Promise<DoraMetricsSummary>;
}
interface RouterOptions {
logger: Logger;
config: Config;
service: DoraMetricsService;
}
declare function createRouter(options: RouterOptions): Router;
export { ChangeFailureRate, DeploymentFrequency, DevLakeDatabase, DoraMetricsService, DoraMetricsSummary, LeadTimeForChanges, MeanTimeToRestore, createRouter };