sql: add basket schema and migrations
This commit is contained in:
parent
885eadac0a
commit
5d309b3dc7
|
@ -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)
|
||||
) 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 (
|
||||
checksum VARBINARY(20) NOT NULL COMMENT 'SHA1(last_activity_checksum;file_path=checksum;file_path=checksum;...)',
|
||||
director_version VARCHAR(64) DEFAULT NULL,
|
||||
|
@ -1732,4 +1771,4 @@ CREATE TABLE icinga_timeperiod_exclude (
|
|||
|
||||
INSERT INTO director_schema_migration
|
||||
(schema_version, migration_time)
|
||||
VALUES (152, NOW());
|
||||
VALUES (153, NOW());
|
||||
|
|
|
@ -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'
|
||||
);
|
||||
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 '
|
||||
|
@ -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';
|
||||
|
||||
|
||||
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 (
|
||||
checksum bytea CHECK(LENGTH(checksum) = 20),
|
||||
director_version character varying(64) DEFAULT NULL,
|
||||
|
@ -2027,4 +2068,4 @@ CREATE TABLE icinga_timeperiod_exclude (
|
|||
|
||||
INSERT INTO director_schema_migration
|
||||
(schema_version, migration_time)
|
||||
VALUES (152, NOW());
|
||||
VALUES (153, NOW());
|
||||
|
|
Loading…
Reference in New Issue