mirror of
https://github.com/Icinga/icingaweb2-module-director.git
synced 2025-07-31 01:34:12 +02:00
sql: add basket schema and migrations
This commit is contained in:
parent
885eadac0a
commit
5d309b3dc7
42
schema/mysql-migrations/upgrade_153.sql
Normal file
42
schema/mysql-migrations/upgrade_153.sql
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
CREATE TABLE director_basket (
|
||||||
|
uuid VARBINARY(16) NOT NULL,
|
||||||
|
basket_name VARCHAR(64) NOT NULL,
|
||||||
|
owner_type ENUM(
|
||||||
|
'user',
|
||||||
|
'usergroup',
|
||||||
|
'role'
|
||||||
|
) NOT NULL,
|
||||||
|
owner_value VARCHAR(255) NOT NULL,
|
||||||
|
objects MEDIUMTEXT NOT NULL, -- json-encoded
|
||||||
|
PRIMARY KEY (uuid),
|
||||||
|
UNIQUE INDEX basket_name (basket_name)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_bin;
|
||||||
|
|
||||||
|
CREATE TABLE director_basket_content (
|
||||||
|
checksum VARBINARY(20) NOT NULL,
|
||||||
|
summary VARCHAR(255) NOT NULL, -- json
|
||||||
|
content MEDIUMTEXT NOT NULL, -- json
|
||||||
|
PRIMARY KEY (checksum)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_bin;
|
||||||
|
|
||||||
|
CREATE TABLE director_basket_snapshot (
|
||||||
|
basket_uuid VARBINARY(16) NOT NULL,
|
||||||
|
ts_create BIGINT(20) NOT NULL,
|
||||||
|
content_checksum VARBINARY(20) NOT NULL,
|
||||||
|
PRIMARY KEY (basket_uuid, ts_create),
|
||||||
|
INDEX sort_idx (ts_create),
|
||||||
|
CONSTRAINT basked_snapshot_basket
|
||||||
|
FOREIGN KEY director_basket_snapshot (basket_uuid)
|
||||||
|
REFERENCES director_basket (uuid)
|
||||||
|
ON DELETE CASCADE
|
||||||
|
ON UPDATE RESTRICT,
|
||||||
|
CONSTRAINT basked_snapshot_content
|
||||||
|
FOREIGN KEY content_checksum (content_checksum)
|
||||||
|
REFERENCES director_basket_content (checksum)
|
||||||
|
ON DELETE RESTRICT
|
||||||
|
ON UPDATE RESTRICT
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_bin;
|
||||||
|
|
||||||
|
INSERT INTO director_schema_migration
|
||||||
|
(schema_version, migration_time)
|
||||||
|
VALUES (153, NOW());
|
@ -28,6 +28,45 @@ CREATE TABLE director_activity_log (
|
|||||||
INDEX checksum (checksum)
|
INDEX checksum (checksum)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
|
CREATE TABLE director_basket (
|
||||||
|
uuid VARBINARY(16) NOT NULL,
|
||||||
|
basket_name VARCHAR(64) NOT NULL,
|
||||||
|
owner_type ENUM(
|
||||||
|
'user',
|
||||||
|
'usergroup',
|
||||||
|
'role'
|
||||||
|
) NOT NULL,
|
||||||
|
owner_value VARCHAR(255) NOT NULL,
|
||||||
|
objects MEDIUMTEXT NOT NULL, -- json-encoded
|
||||||
|
PRIMARY KEY (uuid),
|
||||||
|
UNIQUE INDEX basket_name (basket_name)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_bin;
|
||||||
|
|
||||||
|
CREATE TABLE director_basket_content (
|
||||||
|
checksum VARBINARY(20) NOT NULL,
|
||||||
|
summary VARCHAR(255) NOT NULL, -- json
|
||||||
|
content MEDIUMTEXT NOT NULL, -- json
|
||||||
|
PRIMARY KEY (checksum)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_bin;
|
||||||
|
|
||||||
|
CREATE TABLE director_basket_snapshot (
|
||||||
|
basket_uuid VARBINARY(16) NOT NULL,
|
||||||
|
ts_create BIGINT(20) NOT NULL,
|
||||||
|
content_checksum VARBINARY(20) NOT NULL,
|
||||||
|
PRIMARY KEY (basket_uuid, ts_create),
|
||||||
|
INDEX sort_idx (ts_create),
|
||||||
|
CONSTRAINT basked_snapshot_basket
|
||||||
|
FOREIGN KEY director_basket_snapshot (basket_uuid)
|
||||||
|
REFERENCES director_basket (uuid)
|
||||||
|
ON DELETE CASCADE
|
||||||
|
ON UPDATE RESTRICT,
|
||||||
|
CONSTRAINT basked_snapshot_content
|
||||||
|
FOREIGN KEY content_checksum (content_checksum)
|
||||||
|
REFERENCES director_basket_content (checksum)
|
||||||
|
ON DELETE RESTRICT
|
||||||
|
ON UPDATE RESTRICT
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_bin;
|
||||||
|
|
||||||
CREATE TABLE director_generated_config (
|
CREATE TABLE director_generated_config (
|
||||||
checksum VARBINARY(20) NOT NULL COMMENT 'SHA1(last_activity_checksum;file_path=checksum;file_path=checksum;...)',
|
checksum VARBINARY(20) NOT NULL COMMENT 'SHA1(last_activity_checksum;file_path=checksum;file_path=checksum;...)',
|
||||||
director_version VARCHAR(64) DEFAULT NULL,
|
director_version VARCHAR(64) DEFAULT NULL,
|
||||||
@ -1732,4 +1771,4 @@ CREATE TABLE icinga_timeperiod_exclude (
|
|||||||
|
|
||||||
INSERT INTO director_schema_migration
|
INSERT INTO director_schema_migration
|
||||||
(schema_version, migration_time)
|
(schema_version, migration_time)
|
||||||
VALUES (152, NOW());
|
VALUES (153, NOW());
|
||||||
|
45
schema/pgsql-migrations/upgrade_153.sql
Normal file
45
schema/pgsql-migrations/upgrade_153.sql
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
CREATE TYPE enum_owner_type AS ENUM('user', 'usergroup', 'role');
|
||||||
|
|
||||||
|
CREATE TABLE director_basket (
|
||||||
|
uuid bytea CHECK(LENGTH(uuid) = 16) NOT NULL,
|
||||||
|
basket_name VARCHAR(64) NOT NULL,
|
||||||
|
owner_type enum_owner_type NOT NULL,
|
||||||
|
owner_value VARCHAR(255) NOT NULL,
|
||||||
|
objects text NOT NULL, -- json-encoded
|
||||||
|
PRIMARY KEY (uuid)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE UNIQUE INDEX basket_basket_name ON director_basket (basket_name);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE director_basket_content (
|
||||||
|
checksum bytea CHECK(LENGTH(checksum) = 20) NOT NULL,
|
||||||
|
summary VARCHAR(255) NOT NULL, -- json
|
||||||
|
content text NOT NULL, -- json
|
||||||
|
PRIMARY KEY (checksum)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE director_basket_snapshot (
|
||||||
|
basket_uuid bytea CHECK(LENGTH(basket_uuid) = 16) NOT NULL,
|
||||||
|
ts_create bigint NOT NULL,
|
||||||
|
content_checksum bytea CHECK(LENGTH(content_checksum) = 20) NOT NULL,
|
||||||
|
PRIMARY KEY (basket_uuid, ts_create),
|
||||||
|
CONSTRAINT basked_snapshot_basket
|
||||||
|
FOREIGN KEY (basket_uuid)
|
||||||
|
REFERENCES director_basket (uuid)
|
||||||
|
ON DELETE CASCADE
|
||||||
|
ON UPDATE RESTRICT,
|
||||||
|
CONSTRAINT basked_snapshot_content
|
||||||
|
FOREIGN KEY (content_checksum)
|
||||||
|
REFERENCES director_basket_content (checksum)
|
||||||
|
ON DELETE RESTRICT
|
||||||
|
ON UPDATE RESTRICT
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX basket_snapshot_sort_idx ON director_basket_snapshot (ts_create);
|
||||||
|
|
||||||
|
|
||||||
|
INSERT INTO director_schema_migration
|
||||||
|
(schema_version, migration_time)
|
||||||
|
VALUES (153, NOW());
|
@ -42,6 +42,7 @@ CREATE TYPE enum_sync_state AS ENUM(
|
|||||||
'failing'
|
'failing'
|
||||||
);
|
);
|
||||||
CREATE TYPE enum_host_service AS ENUM('host', 'service');
|
CREATE TYPE enum_host_service AS ENUM('host', 'service');
|
||||||
|
CREATE TYPE enum_owner_type AS ENUM('user', 'usergroup', 'role');
|
||||||
|
|
||||||
|
|
||||||
CREATE OR REPLACE FUNCTION unix_timestamp(timestamp with time zone) RETURNS bigint AS '
|
CREATE OR REPLACE FUNCTION unix_timestamp(timestamp with time zone) RETURNS bigint AS '
|
||||||
@ -71,6 +72,46 @@ COMMENT ON COLUMN director_activity_log.old_properties IS 'Property hash, JSON';
|
|||||||
COMMENT ON COLUMN director_activity_log.new_properties IS 'Property hash, JSON';
|
COMMENT ON COLUMN director_activity_log.new_properties IS 'Property hash, JSON';
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE director_basket (
|
||||||
|
uuid bytea CHECK(LENGTH(uuid) = 16) NOT NULL,
|
||||||
|
basket_name VARCHAR(64) NOT NULL,
|
||||||
|
owner_type enum_owner_type NOT NULL,
|
||||||
|
owner_value VARCHAR(255) NOT NULL,
|
||||||
|
objects text NOT NULL, -- json-encoded
|
||||||
|
PRIMARY KEY (uuid)
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE UNIQUE INDEX basket_basket_name ON director_basket (basket_name);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE director_basket_content (
|
||||||
|
checksum bytea CHECK(LENGTH(checksum) = 20) NOT NULL,
|
||||||
|
summary VARCHAR(255) NOT NULL, -- json
|
||||||
|
content text NOT NULL, -- json
|
||||||
|
PRIMARY KEY (checksum)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE director_basket_snapshot (
|
||||||
|
basket_uuid bytea CHECK(LENGTH(basket_uuid) = 16) NOT NULL,
|
||||||
|
ts_create bigint NOT NULL,
|
||||||
|
content_checksum bytea CHECK(LENGTH(content_checksum) = 20) NOT NULL,
|
||||||
|
PRIMARY KEY (basket_uuid, ts_create),
|
||||||
|
CONSTRAINT basked_snapshot_basket
|
||||||
|
FOREIGN KEY (basket_uuid)
|
||||||
|
REFERENCES director_basket (uuid)
|
||||||
|
ON DELETE CASCADE
|
||||||
|
ON UPDATE RESTRICT,
|
||||||
|
CONSTRAINT basked_snapshot_content
|
||||||
|
FOREIGN KEY (content_checksum)
|
||||||
|
REFERENCES director_basket_content (checksum)
|
||||||
|
ON DELETE RESTRICT
|
||||||
|
ON UPDATE RESTRICT
|
||||||
|
);
|
||||||
|
|
||||||
|
CREATE INDEX basket_snapshot_sort_idx ON director_basket_snapshot (ts_create);
|
||||||
|
|
||||||
|
|
||||||
CREATE TABLE director_generated_config (
|
CREATE TABLE director_generated_config (
|
||||||
checksum bytea CHECK(LENGTH(checksum) = 20),
|
checksum bytea CHECK(LENGTH(checksum) = 20),
|
||||||
director_version character varying(64) DEFAULT NULL,
|
director_version character varying(64) DEFAULT NULL,
|
||||||
@ -2027,4 +2068,4 @@ CREATE TABLE icinga_timeperiod_exclude (
|
|||||||
|
|
||||||
INSERT INTO director_schema_migration
|
INSERT INTO director_schema_migration
|
||||||
(schema_version, migration_time)
|
(schema_version, migration_time)
|
||||||
VALUES (152, NOW());
|
VALUES (153, NOW());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user