n8n
Version:
n8n Workflow Automation Tool
101 lines (100 loc) • 3.56 kB
TypeScript
import type { User } from '@n8n/db';
import { SharedWorkflowRepository } from '@n8n/db';
import type { SelectQueryBuilder } from '@n8n/typeorm';
import { DataSource, Repository } from '@n8n/typeorm';
import { InsightsByPeriod } from '../entities/insights-by-period';
import type { PeriodUnit, TypeUnit } from '../entities/insights-shared';
export type InsightsAccessFilter = {
user: User;
projectRoles: string[];
workflowRoles: string[];
};
export declare class InsightsByPeriodRepository extends Repository<InsightsByPeriod> {
private readonly sharedWorkflowRepository;
private isRunningCompaction;
constructor(dataSource: DataSource, sharedWorkflowRepository: SharedWorkflowRepository);
private escapeField;
private applyAccessFilter;
private getPeriodFilterExpr;
private getPeriodStartExpr;
getPeriodInsightsBatchQuery({ periodUnitToCompactFrom, compactionBatchSize, maxAgeInDays, }: {
periodUnitToCompactFrom: PeriodUnit;
compactionBatchSize: number;
maxAgeInDays: number;
}): SelectQueryBuilder<{
id: number;
metaId: number;
type: string;
value: number;
periodStart: Date;
}>;
private getAggregationQuery;
compactSourceDataIntoInsightPeriod({ sourceBatchQuery, sourceTableName, periodUnitToCompactInto, }: {
sourceBatchQuery: SelectQueryBuilder<{
id: number;
metaId: number;
type: string;
value: number;
periodStart: Date;
}>;
sourceTableName?: string;
periodUnitToCompactInto: PeriodUnit;
}): Promise<number>;
getPreviousAndCurrentPeriodTypeAggregates({ startDate, endDate, projectId, timeZone, accessFilter, }: {
projectId?: string;
startDate: Date;
endDate: Date;
accessFilter?: InsightsAccessFilter;
timeZone?: string;
}): Promise<Array<{
period: 'previous' | 'current';
type: 0 | 1 | 2 | 3;
total_value: string | number;
}>>;
private parseSortingParams;
private countInsightsByWorkflowGroups;
getInsightsByWorkflow({ startDate, endDate, skip, take, sortBy, projectId, timeZone, accessFilter, }: {
skip?: number;
take?: number;
sortBy?: string;
projectId?: string;
startDate: Date;
endDate: Date;
timeZone?: string;
accessFilter?: InsightsAccessFilter;
}): Promise<{
count: number;
rows: {
workflowId: string | null;
workflowName: string;
projectId: string | null;
projectName: string;
total: number;
succeeded: number;
failed: number;
failureRate: number;
runTime: number;
averageRunTime: number;
timeSaved: number;
}[];
}>;
getInsightsByTime({ periodUnit, insightTypes, projectId, startDate, endDate, timeZone, accessFilter, }: {
periodUnit: PeriodUnit;
insightTypes: TypeUnit[];
projectId?: string;
startDate: Date;
endDate: Date;
timeZone?: string;
accessFilter?: InsightsAccessFilter;
}): Promise<{
periodStart: string;
runTime?: number | undefined;
succeeded?: number | undefined;
failed?: number | undefined;
timeSaved?: number | undefined;
}[]>;
pruneOldData(maxAgeInDays: number): Promise<{
affected: number | null | undefined;
}>;
getEarliestDataDate(): Promise<Date | null>;
}