mirror of
				https://github.com/louislam/uptime-kuma.git
				synced 2025-11-04 13:46:13 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			84 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			SQL
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			SQL
		
	
	
	
	
	
-- You should not modify if this have pushed to Github, unless it does serious wrong with the db.
 | 
						|
BEGIN TRANSACTION;
 | 
						|
 | 
						|
-- Just for someone who tested maintenance before (patch-maintenance-table.sql)
 | 
						|
DROP TABLE IF EXISTS maintenance_status_page;
 | 
						|
DROP TABLE IF EXISTS monitor_maintenance;
 | 
						|
DROP TABLE IF EXISTS maintenance;
 | 
						|
DROP TABLE IF EXISTS maintenance_timeslot;
 | 
						|
 | 
						|
-- maintenance
 | 
						|
CREATE TABLE [maintenance] (
 | 
						|
    [id] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
 | 
						|
    [title] VARCHAR(150) NOT NULL,
 | 
						|
    [description] TEXT NOT NULL,
 | 
						|
    [user_id] INTEGER REFERENCES [user]([id]) ON DELETE SET NULL ON UPDATE CASCADE,
 | 
						|
    [active] BOOLEAN NOT NULL DEFAULT 1,
 | 
						|
    [strategy] VARCHAR(50) NOT NULL DEFAULT 'single',
 | 
						|
    [start_date] DATETIME,
 | 
						|
    [end_date] DATETIME,
 | 
						|
    [start_time] TIME,
 | 
						|
    [end_time] TIME,
 | 
						|
    [weekdays] VARCHAR2(250) DEFAULT '[]',
 | 
						|
    [days_of_month] TEXT DEFAULT '[]',
 | 
						|
    [interval_day] INTEGER
 | 
						|
);
 | 
						|
 | 
						|
CREATE INDEX [manual_active] ON [maintenance] (
 | 
						|
    [strategy],
 | 
						|
    [active]
 | 
						|
);
 | 
						|
 | 
						|
CREATE INDEX [active] ON [maintenance] ([active]);
 | 
						|
 | 
						|
CREATE INDEX [maintenance_user_id] ON [maintenance] ([user_id]);
 | 
						|
 | 
						|
-- maintenance_status_page
 | 
						|
CREATE TABLE maintenance_status_page (
 | 
						|
    id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
 | 
						|
    status_page_id INTEGER NOT NULL,
 | 
						|
    maintenance_id INTEGER NOT NULL,
 | 
						|
    CONSTRAINT FK_maintenance FOREIGN KEY (maintenance_id) REFERENCES maintenance (id) ON DELETE CASCADE ON UPDATE CASCADE,
 | 
						|
    CONSTRAINT FK_status_page FOREIGN KEY (status_page_id) REFERENCES status_page (id) ON DELETE CASCADE ON UPDATE CASCADE
 | 
						|
);
 | 
						|
 | 
						|
CREATE INDEX [status_page_id_index]
 | 
						|
    ON [maintenance_status_page]([status_page_id]);
 | 
						|
 | 
						|
CREATE INDEX [maintenance_id_index]
 | 
						|
    ON [maintenance_status_page]([maintenance_id]);
 | 
						|
 | 
						|
-- maintenance_timeslot
 | 
						|
CREATE TABLE [maintenance_timeslot] (
 | 
						|
    [id] INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
 | 
						|
    [maintenance_id] INTEGER NOT NULL CONSTRAINT [FK_maintenance] REFERENCES [maintenance]([id]) ON DELETE CASCADE ON UPDATE CASCADE,
 | 
						|
    [start_date] DATETIME NOT NULL,
 | 
						|
    [end_date] DATETIME,
 | 
						|
    [generated_next] BOOLEAN DEFAULT 0
 | 
						|
);
 | 
						|
 | 
						|
CREATE INDEX [maintenance_id] ON [maintenance_timeslot] ([maintenance_id] DESC);
 | 
						|
 | 
						|
CREATE INDEX [active_timeslot_index] ON [maintenance_timeslot] (
 | 
						|
    [maintenance_id] DESC,
 | 
						|
    [start_date] DESC,
 | 
						|
    [end_date] DESC
 | 
						|
);
 | 
						|
 | 
						|
CREATE INDEX [generated_next_index] ON [maintenance_timeslot] ([generated_next]);
 | 
						|
 | 
						|
-- monitor_maintenance
 | 
						|
CREATE TABLE monitor_maintenance (
 | 
						|
    id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
 | 
						|
    monitor_id INTEGER NOT NULL,
 | 
						|
    maintenance_id INTEGER NOT NULL,
 | 
						|
    CONSTRAINT FK_maintenance FOREIGN KEY (maintenance_id) REFERENCES maintenance (id) ON DELETE CASCADE ON UPDATE CASCADE,
 | 
						|
    CONSTRAINT FK_monitor FOREIGN KEY (monitor_id) REFERENCES monitor (id) ON DELETE CASCADE ON UPDATE CASCADE
 | 
						|
);
 | 
						|
 | 
						|
CREATE INDEX [maintenance_id_index2] ON [monitor_maintenance]([maintenance_id]);
 | 
						|
 | 
						|
CREATE INDEX [monitor_id_index] ON [monitor_maintenance]([monitor_id]);
 | 
						|
 | 
						|
COMMIT;
 |