Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
108 commits
Select commit Hold shift + click to select a range
0d31187
clean repo for overhaul
rajnandan1 Jan 22, 2026
0149b3e
first commit for version 4, very unstable
rajnandan1 Jan 22, 2026
6b88cf1
changes
Jan 22, 2026
0709111
Refactor monitoring data retrieval and caching mechanisms; enhance mo…
rajnandan1 Jan 22, 2026
d6b68e3
Refactor monitoring components and enhance latency handling; update U…
rajnandan1 Jan 23, 2026
9f2ab70
changes
Jan 23, 2026
2dce981
changes
rajnandan1 Jan 24, 2026
b51fc19
changes
rajnandan1 Jan 24, 2026
4608b03
alerting new set up done
rajnandan1 Jan 26, 2026
b4aeb51
Update seed function to insert all alert templates when no templates …
rajnandan1 Jan 26, 2026
c4f0945
subs v1
rajnandan1 Jan 26, 2026
d0d8e60
changes
rajnandan1 Jan 27, 2026
af829fa
changes
rajnandan1 Jan 28, 2026
28bfd8c
refactor: simplify SubscribeMenu props and integrate subscription set…
rajnandan1 Jan 28, 2026
b7023b7
changes
rajnandan1 Jan 29, 2026
e714fe8
changes
rajnandan1 Jan 29, 2026
2abb266
changes
Jan 29, 2026
463d1c8
changes
rajnandan1 Jan 30, 2026
8a0e1e7
changes
rajnandan1 Jan 30, 2026
93f91ab
changes
Jan 30, 2026
c77985f
i18n
rajnandan1 Jan 30, 2026
8f187aa
Implement sub-menu options configuration and localization updates
rajnandan1 Jan 31, 2026
accdd76
changes
rajnandan1 Jan 31, 2026
3165567
added few apis
rajnandan1 Feb 2, 2026
8bd26cc
delete trigger
rajnandan1 Feb 2, 2026
6c15d48
new api spec
rajnandan1 Feb 2, 2026
d851610
Implement theme configuration and user preferences for status page
rajnandan1 Feb 2, 2026
00511da
changes
Feb 2, 2026
24872d2
changes
Feb 2, 2026
98c723c
changes
Feb 2, 2026
045ce12
Implement monitor management components including DangerZoneCard, Gen…
rajnandan1 Feb 2, 2026
34605fe
Remove email customization feature and related API endpoints from the…
rajnandan1 Feb 3, 2026
3295b7b
docs
rajnandan1 Feb 3, 2026
601186d
good docs
Feb 3, 2026
331cd5b
Refactor documentation structure and enhance monitor features with ne…
rajnandan1 Feb 4, 2026
e92c8a0
added docs might get modified for api monitors
Feb 4, 2026
4d0e135
changes
Feb 4, 2026
52c76fc
clean up
rajnandan1 Feb 5, 2026
08f72e5
Enhance monitoring functionality with new uptime calculations and ale…
rajnandan1 Feb 5, 2026
2d7d6a3
fixes
rajnandan1 Feb 5, 2026
9a0ca6c
Create alert configuration and logs pages with functionality for mana…
rajnandan1 Feb 5, 2026
96fd8d0
Create maintenance documentation for impact on monitoring, overview, …
rajnandan1 Feb 5, 2026
ba41c6f
Implement password reset functionality with email template and API en…
rajnandan1 Feb 5, 2026
6ed95ed
Implement user invitation system with password setup and validation
rajnandan1 Feb 6, 2026
6aa43fa
Implement URL resolver functions for client and server, update naviga…
rajnandan1 Feb 6, 2026
038c52a
base path adding
Feb 6, 2026
845132f
base path adding
Feb 6, 2026
a20125a
changes
rajnandan1 Feb 6, 2026
1c05e2d
style: Update LanguageSelector and ThemePlus components for improved …
rajnandan1 Feb 7, 2026
baa9449
refactor: Update components for improved styling and theme handling
rajnandan1 Feb 7, 2026
47c00c2
refactor: Replace IsLoggedInSession with GetLoggedInSession and updat…
rajnandan1 Feb 7, 2026
cdc0de9
refactor: Update SMTP configuration handling and improve email setup …
rajnandan1 Feb 7, 2026
be0745f
Initial plan
Claude Feb 7, 2026
4ff1604
feat: Add documentation-writer Claude skill
Claude Feb 7, 2026
7f32802
Merge pull request #575 from rajnandan1/claude/create-documentation-s…
rajnandan1 Feb 7, 2026
7392b96
cvcc
rajnandan1 Feb 8, 2026
c759ade
file clean up
rajnandan1 Feb 8, 2026
72a28ca
changes
rajnandan1 Feb 8, 2026
9e8b096
changes
rajnandan1 Feb 9, 2026
ee1adf8
vv
rajnandan1 Feb 9, 2026
228808a
stable
Feb 9, 2026
eed71d3
added group
Feb 9, 2026
8a498e9
refactor: update tooltip styles and improve component structure acros…
rajnandan1 Feb 9, 2026
9b99bec
Create Dockerfile and Docker Compose configurations for Kener v4 appl…
rajnandan1 Feb 10, 2026
c58530c
cleanup 1
rajnandan1 Feb 10, 2026
5f86ca2
analystic 101
rajnandan1 Feb 10, 2026
3208105
track: implement event tracking for user interactions across multiple…
rajnandan1 Feb 10, 2026
2377a4f
changes
Feb 10, 2026
17ed56c
changes
rajnandan1 Feb 10, 2026
1f370b3
changes
rajnandan1 Feb 11, 2026
290113d
refactor: update layout and styling for MinuteGrid and MonitorDayDeta…
rajnandan1 Feb 11, 2026
d99da14
sas
Feb 11, 2026
21f06a4
hb
rajnandan1 Feb 11, 2026
366c2c0
refactor: update heartbeat handling and monitoring logic, enhance UI …
rajnandan1 Feb 12, 2026
8fd8aa4
refactor: implement CloneMonitor functionality and enhance monitor lo…
rajnandan1 Feb 12, 2026
6ea045d
refactor: implement site announcement feature with management UI and …
rajnandan1 Feb 12, 2026
09afbbd
refactor: optimize npm installation step by removing cache mount
rajnandan1 Feb 12, 2026
552bdc0
refactor: enhance ping and tcp monitoring logic, improve error handli…
rajnandan1 Feb 13, 2026
275c9d7
changes
Feb 13, 2026
d1eb926
changes
Feb 13, 2026
444fe58
ui revamp
rajnandan1 Feb 13, 2026
d04ee0a
changes
rajnandan1 Feb 14, 2026
d170ba6
refactor: enhance documentation and improve page titles with site name
rajnandan1 Feb 14, 2026
5a95c81
refactor: restrict role updates in user data modification
rajnandan1 Feb 14, 2026
e6424b1
refactor: integrate @humanspeak/svelte-purify for enhanced HTML sanit…
rajnandan1 Feb 15, 2026
d758de0
refactor: enhance image upload ID generation with file extension
rajnandan1 Feb 15, 2026
7b3afa4
so many
rajnandan1 Feb 16, 2026
5989e5b
refactor: improve error handling and logging in GamedigCall, SqlCall,…
rajnandan1 Feb 16, 2026
14d46cb
Merge main into next/4-pre-alpha (keep overhaul changes)
rajnandan1 Feb 16, 2026
b088a79
refactor: update logging in analyticsEvent function and improve laten…
rajnandan1 Feb 16, 2026
9129e96
changes
Feb 16, 2026
88072b7
changes
rajnandan1 Feb 16, 2026
58f0e9f
refactor: remove copy current page link option and implement sharing …
rajnandan1 Feb 17, 2026
3aedb9b
refactor: restructure authentication flow and remove obsolete API end…
rajnandan1 Feb 17, 2026
9a8bf84
changes
Feb 17, 2026
1c485ac
go live
rajnandan1 Feb 20, 2026
c9c675d
changes
Feb 20, 2026
4b23e72
changes
rajnandan1 Feb 20, 2026
e5e244e
refactor: enhance MonitorBar component with layout options and improv…
rajnandan1 Feb 21, 2026
bf126e7
refactor: implement event display settings for incidents and maintena…
rajnandan1 Feb 21, 2026
1c6bed1
changes
rajnandan1 Feb 21, 2026
cbc48d2
docs updates
rajnandan1 Feb 22, 2026
585db91
refactor: enhance layout and site data handling with social preview i…
rajnandan1 Feb 22, 2026
339d653
delete static files
rajnandan1 Feb 22, 2026
50482aa
changes
rajnandan1 Feb 22, 2026
78bad84
refactor: update workflow to publish nightly Docker images with impro…
rajnandan1 Feb 22, 2026
3363e90
chore(locales): Update translations for multiple languages and add ne…
rajnandan1 Feb 23, 2026
9199b80
chore: Update environment variables and documentation for ORIGIN requ…
rajnandan1 Feb 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
changes
  • Loading branch information
rajnandan1 committed Jan 24, 2026
commit 2dce9814ac1c474a545667c1ba527d6172f96564
13 changes: 13 additions & 0 deletions migrations/20260123110239_maintenace_monitor_status.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import type { Knex } from "knex";

export async function up(knex: Knex): Promise<void> {
await knex.schema.alterTable("maintenance_monitors", (table) => {
table.string("monitor_impact").defaultTo("MAINTENANCE").notNullable();
});
}

export async function down(knex: Knex): Promise<void> {
await knex.schema.alterTable("maintenance_monitors", (table) => {
table.dropColumn("monitor_impact");
});
}
5 changes: 2 additions & 3 deletions src/lib/components/IncidentItem.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -112,9 +112,8 @@
<Badge variant="outline" class="text-{monitor.monitor_impact.toLowerCase()}">
{monitor.monitor_impact}
</Badge>
<Button variant="outline" size="sm" href="/monitors/{monitor.monitor_tag}">
View Monitor
<ArrowRight class="ml-1 size-3" />
<Button variant="outline" class="rounded-btn" size="icon-sm" href="/monitors/{monitor.monitor_tag}">
<ArrowRight class="size-3" />
</Button>
</div>
</div>
Expand Down
2 changes: 1 addition & 1 deletion src/lib/components/KenerNav.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
</script>

<div class="fixed inset-x-0 top-0 z-50 py-2">
<div class="mx-auto max-w-5xl px-4">
<div class="mx-auto max-w-5xl">
<div class="bg-background flex items-center justify-between rounded-3xl border p-1">
<!-- Brand -->
<a
Expand Down
50 changes: 41 additions & 9 deletions src/lib/components/MaintenanceItem.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,32 @@

let { maintenance, class: className = "", hideMonitors = false }: Props = $props();

const Icon = STATUS_ICON.MAINTENANCE;
const STATUS_STROKE = {
UP: "stroke-up",
DOWN: "stroke-down",
DEGRADED: "stroke-degraded",
MAINTENANCE: "stroke-maintenance",
NO_DATA: "stroke-muted-foreground"
} as const;

const STATUS_BORDER = {
UP: "border-up",
DOWN: "border-down",
DEGRADED: "border-degraded",
MAINTENANCE: "border-maintenance",
NO_DATA: "border-muted-foreground"
} as const;

// Get the highest severity impact from monitors array
function getHighestImpact(monitors: MaintenanceMonitorImpact[]): keyof typeof STATUS_ICON {
const priority: (keyof typeof STATUS_ICON)[] = ["DOWN", "DEGRADED", "MAINTENANCE"];
for (const impact of priority) {
if (monitors.some((m) => m.monitor_impact === impact)) {
return impact;
}
}
return (monitors[0]?.monitor_impact as keyof typeof STATUS_ICON) || "MAINTENANCE";
}

// Get initials from monitor name for avatar fallback
function getInitials(name: string): string {
Expand All @@ -44,6 +69,12 @@
.slice(0, 2);
}

const highestImpact = $derived(getHighestImpact(maintenance.monitors));
const Icon = $derived(STATUS_ICON[highestImpact]);
const strokeClass = $derived(STATUS_STROKE[highestImpact as keyof typeof STATUS_STROKE] || "stroke-maintenance");
const borderClass = $derived(STATUS_BORDER[highestImpact as keyof typeof STATUS_BORDER] || "border-maintenance");
const textClass = $derived("text-" + highestImpact.toLowerCase());

// Check if maintenance is ongoing (current time is between start and end)
const isOngoing = $derived(() => {
const now = Date.now() / 1000;
Expand All @@ -67,7 +98,7 @@

<Item.Root class="p-0 {className}">
<Item.Media>
<Icon class="stroke-maintenance size-6" />
<Icon class="size-6 {strokeClass}" />
</Item.Media>
<Item.Content>
<div class="flex items-center gap-2">
Expand All @@ -89,7 +120,7 @@
<Popover.Root>
<Popover.Trigger>
<Avatar.Root
class="bg-background border-maintenance size-8 cursor-pointer border-2 transition-transform duration-100 ease-in-out hover:scale-[1.1] hover:border"
class="bg-background border-{monitor.monitor_impact.toLowerCase()} size-8 cursor-pointer border-2 transition-transform duration-100 ease-in-out hover:scale-[1.1] hover:border"

Copilot AI Feb 16, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Svelte does not interpolate {...} inside a quoted class="..." string, so these will render literally as border-{...} / text-{...} and Tailwind styles won’t apply. Use class={...} with string concatenation (or cn(...)) to build border-${...} / text-${...} safely.

Copilot uses AI. Check for mistakes.
>
{#if monitor.monitor_image}
<Avatar.Image src={monitor.monitor_image} alt={monitor.monitor_name} class="object-cover" />
Expand All @@ -112,10 +143,11 @@
</div>
</div>
<div class="flex items-center justify-between">
<Badge variant="outline" class="text-maintenance">MAINTENANCE</Badge>
<Button variant="outline" size="sm" href="/monitors/{monitor.monitor_tag}">
View Monitor
<ArrowRight class="ml-1 size-3" />
<Badge variant="outline" class="text-{monitor.monitor_impact.toLowerCase()}">

Copilot AI Feb 16, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Svelte does not interpolate {...} inside a quoted class="..." string, so these will render literally as border-{...} / text-{...} and Tailwind styles won’t apply. Use class={...} with string concatenation (or cn(...)) to build border-${...} / text-${...} safely.

Copilot uses AI. Check for mistakes.
{monitor.monitor_impact}
</Badge>
<Button variant="outline" class="rounded-btn" size="icon-sm" href="/monitors/{monitor.monitor_tag}">
<ArrowRight class="size-3" />
</Button>
</div>
</div>
Expand All @@ -131,8 +163,8 @@
{format(new Date(maintenance.start_date_time * 1000), "PPp")}
</div>
<div class="relative flex-1 text-center">
<div class="border-maintenance absolute top-1/2 right-0 left-0 border-t border-dashed"></div>
<span class="bg-background relative z-10 px-2 py-1">{duration()}</span>
<div class="absolute top-1/2 right-0 left-0 border-t border-solid"></div>
<span class="bg-background relative z-10 px-2 py-1 font-medium">{duration()}</span>
</div>
<div class="rounded-full border px-3 py-2">
{format(new Date(maintenance.end_date_time * 1000), "PPp")}
Expand Down
2 changes: 1 addition & 1 deletion src/lib/components/MonitorBar.svelte
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@
<Item.Root>
<Item.Media variant="image">
<Avatar.Root class="size-10">
<Avatar.Image src={data.image} alt={data.name} class="border " />
<Avatar.Image src={data.image} alt={data.name} class=" " />
<Avatar.Fallback>{data.name.charAt(1)}</Avatar.Fallback>
</Avatar.Root>
</Item.Media>
Expand Down
1 change: 0 additions & 1 deletion src/lib/server/api-server/monitor-bar/get.ts
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@ export default async function get(req: APIServerRequest): Promise<Response> {
}
const monitor = monitors[0];
const rawUptimeData = await db.getStatusCountsByInterval(monitor.tag, startTime, 86400, days);
console.log(">>>>>>---- get:53 ", rawUptimeData[0]);
//for days that are missing, add 0 counts
const uptimeData: TimestampStatusCount[] = [];
const uptimeDataMap = new Map(rawUptimeData.map((d) => [d.ts, d]));
Expand Down
2 changes: 0 additions & 2 deletions src/lib/server/api-server/monitor-day-maintenances/post.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@ import {
ParseUptime,
UptimeCalculator,
} from "$lib/server/tool";
import { NO_DATA } from "$lib/server/constants";
import GC from "$lib/global-constants";
import { GetMonitorsParsed } from "../../controllers/monitorsController";
import type { TimestampStatusCount } from "$lib/server/types/db";

Expand Down
2 changes: 1 addition & 1 deletion src/lib/server/controllers/dashboardController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ export const GetPageDashboardData = async (pagePath: string): Promise<PageDashbo
const { page: pageDetails, monitors: pageMonitors } = pageData;
const monitorTags = pageMonitors.map((pm) => pm.monitor_tag);

const nowTs = BeginningOfDay();
const nowTs = GetMinuteStartNowTimestampUTC();

const [ongoingIncidents, ongoingMaintenances, upcomingMaintenances, pastMaintenances, latestData, allPagesData] =
await Promise.all([
Expand Down
72 changes: 55 additions & 17 deletions src/lib/server/controllers/maintenanceController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,19 @@ import type {

// ============ Input Interfaces ============

export interface MonitorWithStatusInput {
monitor_tag: string;
monitor_impact: "UP" | "DOWN" | "DEGRADED" | "MAINTENANCE";
}

export interface CreateMaintenanceInput {
title: string;
description?: string | null;
start_date_time: number; // Unix timestamp - when the first occurrence starts
rrule: string; // iCalendar RRULE string (e.g., FREQ=WEEKLY;BYDAY=SU or FREQ=MINUTELY;COUNT=1)
duration_seconds: number; // Duration of each maintenance window in seconds
// Monitor tags to attach to the maintenance
monitor_tags?: string[];
// Monitors with their status during maintenance
monitors?: MonitorWithStatusInput[];
}

export interface UpdateMaintenanceInput {
Expand All @@ -31,7 +36,7 @@ export interface UpdateMaintenanceInput {
rrule?: string;
duration_seconds?: number;
status?: "ACTIVE" | "INACTIVE";
monitor_tags?: string[];
monitors?: MonitorWithStatusInput[];
}

export interface CreateMaintenanceEventInput {
Expand All @@ -40,8 +45,13 @@ export interface CreateMaintenanceEventInput {
end_date_time: number;
}

export interface MaintenanceMonitorWithStatus {
monitor_tag: string;
monitor_impact: "UP" | "DOWN" | "DEGRADED" | "MAINTENANCE";
}

export interface MaintenanceWithMonitors extends MaintenanceRecord {
monitors?: Array<{ monitor_tag: string }>;
monitors?: MaintenanceMonitorWithStatus[];
}

export interface MaintenanceWithEvents extends MaintenanceWithMonitors {
Expand Down Expand Up @@ -151,9 +161,9 @@ export const CreateMaintenance = async (data: CreateMaintenanceInput): Promise<{
status: "ACTIVE",
});

// Add monitors to the maintenance if provided
if (data.monitor_tags && data.monitor_tags.length > 0) {
await db.addMonitorsToMaintenance(maintenance.id, data.monitor_tags);
// Add monitors with their status to the maintenance if provided
if (data.monitors && data.monitors.length > 0) {
await db.addMonitorsToMaintenanceWithStatus(maintenance.id, data.monitors);
}

// Generate initial events for the next 7 days
Expand All @@ -176,7 +186,7 @@ export const GetMaintenanceWithMonitors = async (id: number): Promise<Maintenanc

return {
...maintenance,
monitors: monitorRecords.map((m) => ({ monitor_tag: m.monitor_tag })),
monitors: monitorRecords.map((m) => ({ monitor_tag: m.monitor_tag, monitor_impact: m.monitor_impact })),
};
};

Expand All @@ -198,7 +208,10 @@ export const GetMaintenanceWithEvents = async (

return {
...maintenance,
monitors: monitorRecords.map((m) => ({ monitor_tag: m.monitor_tag })),
monitors: monitorRecords.map((m) => ({
monitor_tag: m.monitor_tag,
monitor_impact: m.monitor_impact,
})),
events,
upcoming_event: upcomingEvent || null,
};
Expand Down Expand Up @@ -228,7 +241,10 @@ export const GetMaintenancesDashboard = async (data: {
const upcomingEvent = events.find((e) => e.end_date_time > now);
enriched.push({
...m,
monitors: monitorRecords.map((mr) => ({ monitor_tag: mr.monitor_tag })),
monitors: monitorRecords.map((mr) => ({
monitor_tag: mr.monitor_tag,
monitor_impact: mr.monitor_impact,
})),
events,
upcoming_event: upcomingEvent || null,
});
Expand All @@ -243,8 +259,8 @@ export const UpdateMaintenance = async (id: number, data: UpdateMaintenanceInput
throw new Error(`Maintenance with id ${id} does not exist`);
}

// Extract monitor_tags separately as it's not part of the record
const { monitor_tags, ...updateData } = data;
// Extract monitors separately as it's not part of the record
const { monitors, ...updateData } = data;

// Check if schedule has changed (start_date_time, rrule, or duration_seconds)
const scheduleChanged =
Expand All @@ -256,10 +272,10 @@ export const UpdateMaintenance = async (id: number, data: UpdateMaintenanceInput
const result = await db.updateMaintenance(id, updateData);

// Update monitors if provided
if (monitor_tags !== undefined) {
if (monitors !== undefined) {
await db.removeAllMonitorsFromMaintenance(id);
if (monitor_tags.length > 0) {
await db.addMonitorsToMaintenance(id, monitor_tags);
if (monitors.length > 0) {
await db.addMonitorsToMaintenanceWithStatus(id, monitors);
}
}

Expand Down Expand Up @@ -399,9 +415,31 @@ export const RemoveMonitorFromMaintenance = async (maintenance_id: number, monit
return await db.removeMonitorFromMaintenance(maintenance_id, monitor_tag);
};

export const GetMaintenanceMonitors = async (maintenance_id: number): Promise<Array<{ monitor_tag: string }>> => {
export const GetMaintenanceMonitors = async (
maintenance_id: number,
): Promise<Array<{ monitor_tag: string; monitor_impact: string }>> => {
const records = await db.getMaintenanceMonitors(maintenance_id);
return records.map((r) => ({ monitor_tag: r.monitor_tag }));
return records.map((r) => ({ monitor_tag: r.monitor_tag, monitor_impact: r.monitor_impact }));
};

export const UpdateMaintenanceMonitorImpact = async (
maintenance_id: number,
monitor_tag: string,
monitor_impact: "UP" | "DOWN" | "DEGRADED" | "MAINTENANCE",
): Promise<number> => {
const maintenance = await db.getMaintenanceById(maintenance_id);
if (!maintenance) {
throw new Error(`Maintenance with id ${maintenance_id} does not exist`);
}

// Verify monitor is attached to this maintenance
const monitors = await db.getMaintenanceMonitors(maintenance_id);
const monitorExists = monitors.some((m) => m.monitor_tag === monitor_tag);
if (!monitorExists) {
throw new Error(`Monitor ${monitor_tag} is not attached to maintenance ${maintenance_id}`);
}

return await db.updateMonitorImpactInMaintenanceMonitors(maintenance_id, monitor_tag, monitor_impact);
};

// ============ Status Page Queries ============
Expand Down
8 changes: 8 additions & 0 deletions src/lib/server/db/dbimpl.ts
Original file line number Diff line number Diff line change
Expand Up @@ -243,11 +243,13 @@ class DbImpl {
// ============ Maintenance Monitors ============
addMonitorToMaintenance!: MaintenancesRepository["addMonitorToMaintenance"];
addMonitorsToMaintenance!: MaintenancesRepository["addMonitorsToMaintenance"];
addMonitorsToMaintenanceWithStatus!: MaintenancesRepository["addMonitorsToMaintenanceWithStatus"];
removeMonitorFromMaintenance!: MaintenancesRepository["removeMonitorFromMaintenance"];
removeAllMonitorsFromMaintenance!: MaintenancesRepository["removeAllMonitorsFromMaintenance"];
getMaintenanceMonitors!: MaintenancesRepository["getMaintenanceMonitors"];
getMaintenancesForMonitor!: MaintenancesRepository["getMaintenancesForMonitor"];
deleteMaintenanceMonitorsByTag!: MaintenancesRepository["deleteMaintenanceMonitorsByTag"];
updateMonitorImpactInMaintenanceMonitors!: MaintenancesRepository["updateMonitorImpactInMaintenanceMonitors"];

// ============ Maintenance Events ============
createMaintenanceEvent!: MaintenancesRepository["createMaintenanceEvent"];
Expand Down Expand Up @@ -498,11 +500,17 @@ class DbImpl {
this.deleteMaintenance = this.maintenances.deleteMaintenance.bind(this.maintenances);
this.addMonitorToMaintenance = this.maintenances.addMonitorToMaintenance.bind(this.maintenances);
this.addMonitorsToMaintenance = this.maintenances.addMonitorsToMaintenance.bind(this.maintenances);
this.addMonitorsToMaintenanceWithStatus = this.maintenances.addMonitorsToMaintenanceWithStatus.bind(
this.maintenances,
);
this.removeMonitorFromMaintenance = this.maintenances.removeMonitorFromMaintenance.bind(this.maintenances);
this.removeAllMonitorsFromMaintenance = this.maintenances.removeAllMonitorsFromMaintenance.bind(this.maintenances);
this.getMaintenanceMonitors = this.maintenances.getMaintenanceMonitors.bind(this.maintenances);
this.getMaintenancesForMonitor = this.maintenances.getMaintenancesForMonitor.bind(this.maintenances);
this.deleteMaintenanceMonitorsByTag = this.maintenances.deleteMaintenanceMonitorsByTag.bind(this.maintenances);
this.updateMonitorImpactInMaintenanceMonitors = this.maintenances.updateMonitorImpactInMaintenanceMonitors.bind(
this.maintenances,
);
this.createMaintenanceEvent = this.maintenances.createMaintenanceEvent.bind(this.maintenances);
this.getMaintenanceEventById = this.maintenances.getMaintenanceEventById.bind(this.maintenances);
this.getMaintenanceEventsByMaintenanceId = this.maintenances.getMaintenanceEventsByMaintenanceId.bind(
Expand Down
Loading