mirror of
https://github.com/Icinga/icingaweb2.git
synced 2025-09-22 17:37:45 +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
|
||||
' 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" (
|
||||
"id" serial,
|
||||
"name" character varying(64) NOT NULL,
|
||||
@ -128,3 +137,84 @@ CREATE TABLE "icingaweb_schema" (
|
||||
|
||||
INSERT INTO icingaweb_schema (version, timestamp)
|
||||
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