UNPKG

@enginuity-io/dora-metrics-backend

Version:
92 lines (87 loc) 2.74 kB
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 };