Files
Checkmate/server/src/domain/checks/check.repository.interface.ts
T

57 lines
1.8 KiB
TypeScript

import type {
Check,
ChecksQueryResult,
ChecksSummary,
DailyCheckBucket,
DockerChecksResult,
DockerContainerStats,
HardwareChecksResult,
PageSpeedChecksResult,
UptimeChecksResult,
} from "@/domain/checks/check.type.js";
import { PendingCheck } from "@/domain/jobs/job.type.js";
import type { MonitorType } from "@/domain/monitors/monitor.type.js";
import { CheckFilter, DateRange } from "@/types/query.js";
export interface IChecksRepository {
// create
create(check: Check): Promise<Check>;
createChecks(checks: Check[]): Promise<Check[]>;
// single fetch
// collection fetch
findByMonitorId(
monitorId: string,
sortOrder: string,
dateRange: DateRange,
page: number,
rowsPerPage: number,
status: boolean | undefined,
filter?: CheckFilter
): Promise<ChecksQueryResult>;
findByTeamId(
sortOrder: string,
dateRange: DateRange,
page: number,
rowsPerPage: number,
teamId: string,
filter?: CheckFilter
): Promise<ChecksQueryResult>;
findByDateRangeAndMonitorId(
monitorId: string,
dateRange: DateRange,
options?: { type?: MonitorType }
): Promise<UptimeChecksResult | HardwareChecksResult | PageSpeedChecksResult | DockerChecksResult>;
findDockerContainerChecks(monitorId: string, containerName: string, dateRange: DateRange): Promise<Omit<DockerContainerStats, "restartsInRange">>;
findSummaryByTeamId(teamId: string, dateRange: DateRange): Promise<ChecksSummary>;
findUnevaluatedByMonitorId(monitorId: string, pending: PendingCheck[]): Promise<Check[]>;
getDailyStatusBuckets(monitorIds: string[], days: number, timezone: string): Promise<DailyCheckBucket[]>;
// update
//delete
deleteByMonitorId(monitorId: string): Promise<number>;
deleteByTeamId(teamId: string): Promise<number>;
deleteByMonitorIdsNotIn(monitorIds: string[]): Promise<number>;
deleteOlderThan(date: Date): Promise<number>;
}