@atomist/org-visualizer
Version:
Organization Visualizer using Atomist project scanning
65 lines • 2.57 kB
TypeScript
import { RepoRef } from "@atomist/automation-client";
import { FP } from "@atomist/sdm-pack-fingerprints";
import { ProjectAnalysisResult } from "../../ProjectAnalysisResult";
import { CohortAnalysis } from "../spider/analytics";
import { PersistenceResult, SpiderFailure } from "../spider/Spider";
export interface PersistResult {
attemptedCount: number;
failed: SpiderFailure[];
succeeded: PersistenceResult[];
}
export declare function combinePersistResults(r1: PersistResult, r2: PersistResult): PersistResult;
export declare const emptyPersistResult: PersistResult;
export declare type FingerprintKind = Pick<FP, "type" | "name">;
/**
* Data about the use of a fingerprint in a workspace
*/
export interface FingerprintUsage extends CohortAnalysis {
name: string;
type: string;
categories: string[];
}
/**
* Interface for basic persistence operations.
* Implementations can provide additional querying options,
* e.g. through SQL.
*/
export interface ProjectAnalysisResultStore {
/**
* How many repos we've analyzed
*/
distinctRepoCount(workspaceId: string): Promise<number>;
latestTimestamp(workspaceId: string): Promise<Date>;
/**
* Load in the given workspace
*/
loadInWorkspace(workspaceId: string): Promise<ProjectAnalysisResult[]>;
loadByRepoRef(repo: RepoRef): Promise<ProjectAnalysisResult | undefined>;
/**
* Load by our database id
* @param {string} id
* @return {Promise<ProjectAnalysisResult | undefined>}
*/
loadById(id: string): Promise<ProjectAnalysisResult | undefined>;
persist(repos: ProjectAnalysisResult | AsyncIterable<ProjectAnalysisResult> | ProjectAnalysisResult[]): Promise<PersistResult>;
/**
* Return distinct fingerprint type/name combinations in this workspace
*/
distinctFingerprintKinds(workspaceId: string): Promise<FingerprintKind[]>;
fingerprintUsageForType(workspaceId: string, type?: string): Promise<FingerprintUsage[]>;
/**
* Persist a record of analytics
*/
persistAnalytics(params: Array<{
workspaceId: string;
kind: FingerprintKind;
cohortAnalysis: CohortAnalysis;
}>): Promise<boolean>;
/**
* Return all the fingerprints in this workspace, optionally narrowed by type and name
* @param dedup deduplicate
*/
fingerprintsInWorkspace(workspaceId: string, type?: string, name?: string, dedup?: boolean): Promise<FP[]>;
fingerprintsForProject(id: string): Promise<FP[]>;
}
//# sourceMappingURL=ProjectAnalysisResultStore.d.ts.map