mirror of
https://github.com/Icinga/icingaweb2.git
synced 2025-09-23 09:57:58 +02:00
schema: Add pgsql support for the new dashboards
This commit is contained in:
parent
84b462f57c
commit
f8c0330e2d
85
schema/pgsql-upgrades/2.12.0.sql
Normal file
85
schema/pgsql-upgrades/2.12.0.sql
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
CREATE EXTENSION IF NOT EXISTS citext;
|
||||||
|
|
||||||
|
CREATE DOMAIN binary20 AS bytea CONSTRAINT exactly_20_bytes_long CHECK (VALUE IS NULL OR octet_length(VALUE) = 20);
|
||||||
|
CREATE DOMAIN tinyuint AS smallint CONSTRAINT between_0_and_255 CHECK (VALUE IS NULL OR VALUE BETWEEN 0 AND 255);
|
||||||
|
|
||||||
|
CREATE TYPE boolenum AS ENUM ('n', 'y');
|
||||||
|
CREATE TYPE dashboard_type AS ENUM ('public', 'private', 'shared');
|
||||||
|
|
||||||
|
CREATE TABLE icingaweb_dashboard_owner (
|
||||||
|
id serial,
|
||||||
|
username citext NOT NULL,
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX idx_dashboard_user_username ON icingaweb_dashboard_owner (username);
|
||||||
|
|
||||||
|
CREATE TABLE icingaweb_dashboard_home (
|
||||||
|
id serial,
|
||||||
|
user_id int NOT NULL REFERENCES icingaweb_dashboard_owner (id),
|
||||||
|
name character varying(64) NOT NULL,
|
||||||
|
label character varying(64) NOT NULL,
|
||||||
|
priority tinyuint NOT NULL,
|
||||||
|
type dashboard_type DEFAULT 'private',
|
||||||
|
disabled boolenum DEFAULT 'n',
|
||||||
|
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX idx_dashboard_home ON icingaweb_dashboard_home (user_id);
|
||||||
|
|
||||||
|
CREATE TABLE icingaweb_dashboard (
|
||||||
|
id binary20 NOT NULL,
|
||||||
|
home_id int NOT NULL REFERENCES icingaweb_dashboard_home (id),
|
||||||
|
name character varying(64) NOT NULL,
|
||||||
|
label character varying(64) NOT NULL,
|
||||||
|
priority tinyuint NOT NULL,
|
||||||
|
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
);
|
||||||
|
|
||||||
|
ALTER TABLE icingaweb_dashboard ALTER COLUMN id SET STORAGE PLAIN;
|
||||||
|
|
||||||
|
CREATE TABLE icingaweb_dashlet (
|
||||||
|
id binary20 NOT NULL,
|
||||||
|
dashboard_id binary20 NOT NULL REFERENCES icingaweb_dashboard (id),
|
||||||
|
name character varying(64) NOT NULL,
|
||||||
|
label character varying(254) NOT NULL,
|
||||||
|
url character varying(2048) NOT NULL,
|
||||||
|
priority tinyuint NOT NULL,
|
||||||
|
disabled boolenum DEFAULT 'n',
|
||||||
|
description text DEFAULT NULL,
|
||||||
|
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
);
|
||||||
|
|
||||||
|
ALTER TABLE icingaweb_dashlet ALTER COLUMN id SET STORAGE PLAIN;
|
||||||
|
ALTER TABLE icingaweb_dashlet ALTER COLUMN dashboard_id SET STORAGE PLAIN;
|
||||||
|
|
||||||
|
CREATE TABLE icingaweb_module_dashlet (
|
||||||
|
id binary20 NOT NULL,
|
||||||
|
name citext NOT NULL,
|
||||||
|
label character varying(64) NOT NULL,
|
||||||
|
module citext NOT NULL,
|
||||||
|
pane citext DEFAULT NULL,
|
||||||
|
url character varying(2048) NOT NULL,
|
||||||
|
description text DEFAULT NULL,
|
||||||
|
priority tinyuint DEFAULT 0,
|
||||||
|
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
);
|
||||||
|
|
||||||
|
ALTER TABLE icingaweb_module_dashlet ALTER COLUMN id SET STORAGE PLAIN;
|
||||||
|
CREATE INDEX idx_module_dashlet_name ON icingaweb_module_dashlet (name);
|
||||||
|
CREATE INDEX idx_module_dashlet_pane ON icingaweb_module_dashlet (pane);
|
||||||
|
CREATE INDEX idx_module_dashlet_module ON icingaweb_module_dashlet (module);
|
||||||
|
|
||||||
|
CREATE TABLE icingaweb_system_dashlet (
|
||||||
|
dashlet_id binary20 NOT NULL REFERENCES icingaweb_dashlet (id),
|
||||||
|
module_dashlet_id binary20 DEFAULT NULL REFERENCES icingaweb_module_dashlet (id),
|
||||||
|
|
||||||
|
PRIMARY KEY (dashlet_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
ALTER TABLE icingaweb_system_dashlet ALTER COLUMN dashlet_id SET STORAGE PLAIN;
|
||||||
|
ALTER TABLE icingaweb_system_dashlet ALTER COLUMN module_dashlet_id SET STORAGE PLAIN;
|
@ -4,6 +4,15 @@ CREATE OR REPLACE FUNCTION unix_timestamp(timestamp with time zone) RETURNS bigi
|
|||||||
SELECT EXTRACT(EPOCH FROM $1)::bigint AS result
|
SELECT EXTRACT(EPOCH FROM $1)::bigint AS result
|
||||||
' LANGUAGE sql;
|
' LANGUAGE sql;
|
||||||
|
|
||||||
|
CREATE EXTENSION IF NOT EXISTS citext;
|
||||||
|
|
||||||
|
CREATE DOMAIN binary20 AS bytea CONSTRAINT exactly_20_bytes_long CHECK (VALUE IS NULL OR octet_length(VALUE) = 20);
|
||||||
|
|
||||||
|
CREATE DOMAIN tinyuint AS smallint CONSTRAINT between_0_and_255 CHECK (VALUE IS NULL OR VALUE BETWEEN 0 AND 255);
|
||||||
|
|
||||||
|
CREATE TYPE boolenum AS ENUM ('n', 'y');
|
||||||
|
CREATE TYPE dashboard_type AS ENUM ('public', 'private', 'shared');
|
||||||
|
|
||||||
CREATE TABLE "icingaweb_group" (
|
CREATE TABLE "icingaweb_group" (
|
||||||
"id" serial,
|
"id" serial,
|
||||||
"name" character varying(64) NOT NULL,
|
"name" character varying(64) NOT NULL,
|
||||||
@ -128,3 +137,84 @@ CREATE TABLE "icingaweb_schema" (
|
|||||||
|
|
||||||
INSERT INTO icingaweb_schema (version, timestamp)
|
INSERT INTO icingaweb_schema (version, timestamp)
|
||||||
VALUES (6, extract(epoch from now()));
|
VALUES (6, extract(epoch from now()));
|
||||||
|
|
||||||
|
-- Icinga Web 2 enhanced Dashboards
|
||||||
|
|
||||||
|
CREATE TABLE icingaweb_dashboard_owner (
|
||||||
|
id serial,
|
||||||
|
username citext NOT NULL,
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX idx_dashboard_user_username ON icingaweb_dashboard_owner (username);
|
||||||
|
|
||||||
|
CREATE TABLE icingaweb_dashboard_home (
|
||||||
|
id serial,
|
||||||
|
user_id int NOT NULL REFERENCES icingaweb_dashboard_owner (id),
|
||||||
|
name character varying(64) NOT NULL,
|
||||||
|
label character varying(64) NOT NULL,
|
||||||
|
priority tinyuint NOT NULL,
|
||||||
|
type dashboard_type DEFAULT 'private',
|
||||||
|
disabled boolenum DEFAULT 'n',
|
||||||
|
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX idx_dashboard_home ON icingaweb_dashboard_home (user_id);
|
||||||
|
|
||||||
|
CREATE TABLE icingaweb_dashboard (
|
||||||
|
id binary20 NOT NULL,
|
||||||
|
home_id int NOT NULL REFERENCES icingaweb_dashboard_home (id),
|
||||||
|
name character varying(64) NOT NULL,
|
||||||
|
label character varying(64) NOT NULL,
|
||||||
|
priority tinyuint NOT NULL,
|
||||||
|
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
);
|
||||||
|
|
||||||
|
ALTER TABLE icingaweb_dashboard ALTER COLUMN id SET STORAGE PLAIN;
|
||||||
|
|
||||||
|
CREATE TABLE icingaweb_dashlet (
|
||||||
|
id binary20 NOT NULL,
|
||||||
|
dashboard_id binary20 NOT NULL REFERENCES icingaweb_dashboard (id),
|
||||||
|
name character varying(64) NOT NULL,
|
||||||
|
label character varying(254) NOT NULL,
|
||||||
|
url character varying(2048) NOT NULL,
|
||||||
|
priority tinyuint NOT NULL,
|
||||||
|
disabled boolenum DEFAULT 'n',
|
||||||
|
description text DEFAULT NULL,
|
||||||
|
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
);
|
||||||
|
|
||||||
|
ALTER TABLE icingaweb_dashlet ALTER COLUMN id SET STORAGE PLAIN;
|
||||||
|
ALTER TABLE icingaweb_dashlet ALTER COLUMN dashboard_id SET STORAGE PLAIN;
|
||||||
|
|
||||||
|
CREATE TABLE icingaweb_module_dashlet (
|
||||||
|
id binary20 NOT NULL,
|
||||||
|
name citext NOT NULL,
|
||||||
|
label character varying(64) NOT NULL,
|
||||||
|
module citext NOT NULL,
|
||||||
|
pane citext DEFAULT NULL,
|
||||||
|
url character varying(2048) NOT NULL,
|
||||||
|
description text DEFAULT NULL,
|
||||||
|
priority tinyuint DEFAULT 0,
|
||||||
|
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
);
|
||||||
|
|
||||||
|
ALTER TABLE icingaweb_module_dashlet ALTER COLUMN id SET STORAGE PLAIN;
|
||||||
|
CREATE INDEX idx_module_dashlet_name ON icingaweb_module_dashlet (name);
|
||||||
|
CREATE INDEX idx_module_dashlet_pane ON icingaweb_module_dashlet (pane);
|
||||||
|
CREATE INDEX idx_module_dashlet_module ON icingaweb_module_dashlet (module);
|
||||||
|
|
||||||
|
CREATE TABLE icingaweb_system_dashlet (
|
||||||
|
dashlet_id binary20 NOT NULL REFERENCES icingaweb_dashlet (id),
|
||||||
|
module_dashlet_id binary20 DEFAULT NULL REFERENCES icingaweb_module_dashlet (id),
|
||||||
|
|
||||||
|
PRIMARY KEY (dashlet_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
ALTER TABLE icingaweb_system_dashlet ALTER COLUMN dashlet_id SET STORAGE PLAIN;
|
||||||
|
ALTER TABLE icingaweb_system_dashlet ALTER COLUMN module_dashlet_id SET STORAGE PLAIN;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user