scripts/sql/retention_schema.sql (150 lines of code) (raw):

-- Schema Script CREATE DATABASE IF NOT EXISTS sdrs; USE sdrs; -- Drop Tables DROP TABLE IF EXISTS retention_execution; DROP TABLE IF EXISTS retention_job_validation; DROP TABLE IF EXISTS retention_job; DROP TABLE IF EXISTS retention_rule_history; DROP TABLE IF EXISTS retention_rule; DROP TABLE IF EXISTS pooled_sts_job; DROP TABLE IF EXISTS dm_queue; DROP TABLE IF EXISTS distributed_lock; -- Table Create Scripts -- ---------------------------------------------------------- CREATE TABLE retention_rule ( `id` int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, `dataset_name` varchar(256) NULL, `retention_value` text NOT NULL, `data_storage_name` varchar(256) NULL, `data_storage_root` varchar(256) NOT NULL, `data_storage_type` varchar(128) NOT NULL, `project_id` varchar(256) NOT NULL, `type` enum('global', 'dataset', 'default') NOT NULL, `version` int UNSIGNED NOT NULL DEFAULT 0, `is_active` bit NOT NULL DEFAULT 1, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP, `user` varchar(256) NOT NULL, `metadata` text NULL, UNIQUE KEY `unique_storage_project_type` (`data_storage_name`, `project_id`, `type`), INDEX `retention_rule_dataset_name` (`dataset_name`), INDEX `retention_rule_is_active` (`is_active`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE retention_rule_history ( `id` int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, `retention_rule_id` int UNSIGNED NOT NULL, `dataset_name` varchar(256) NULL, `retention_value` text NOT NULL, `data_storage_name` varchar(256) NULL, `data_storage_root` varchar(256) NOT NULL, `data_storage_type` varchar(256) NOT NULL, `project_id` varchar(256) NOT NULL, `type` enum('global', 'dataset', 'default') NOT NULL, `version` int UNSIGNED NOT NULL DEFAULT 0, `is_active` bit NOT NULL, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `user` varchar(256) NOT NULL, `metadata` text NULL, FOREIGN KEY (retention_rule_id) REFERENCES retention_rule(id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE retention_job ( `id` int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, `name` varchar(256) NOT NULL, `retention_rule_id` int UNSIGNED NULL, `retention_rule_version` int UNSIGNED NULL, `retention_rule_type` enum('global', 'dataset', 'user', 'default') NULL, `retention_rule_data_storage_name` varchar(256) NOT NULL, `retention_rule_project_id` varchar(256) NOT NULL, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP, `type` varchar(128) DEFAULT NULL, `batch_id` varchar(256) DEFAULT NULL, `metadata` text, `data_storage_root` varchar(256) DEFAULT NULL, FOREIGN KEY (retention_rule_id) REFERENCES retention_rule(id), INDEX `retention_job_name` (`name`) )ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE retention_job_validation ( `id` int UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, `retention_job_id` int UNSIGNED NOT NULL, `job_operation_name` varchar(256) NOT NULL, `status` enum('success','pending','error') NOT NULL, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP, `batch_id` varchar(256) DEFAULT NULL, `start_time` timestamp NULL DEFAULT NULL, `end_time` timestamp NULL DEFAULT NULL, `metadata` text, FOREIGN KEY (retention_job_id) REFERENCES retention_job(id), INDEX `retention_job_validation_job_operation_name` (`job_operation_name`) )ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `pooled_sts_job` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(256) NOT NULL, `project_id` varchar(256) NOT NULL, `type` varchar(256) NOT NULL, `schedule` varchar(256) NOT NULL, `source_bucket` varchar(256) NOT NULL, `source_project` varchar(256) NOT NULL, `target_bucket` varchar(256) DEFAULT NULL, `target_project` varchar(256) DEFAULT NULL, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP, `status` varchar(256) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `unique_sts_job_name` (`project_id`,`name`), KEY `query_project_bucket` (`source_bucket`,`source_project`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `dm_queue` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP, `data_storage_name` varchar(256) NOT NULL, `status` varchar(256) NOT NULL, `priority` int(10) unsigned NOT NULL DEFAULT 0, `data_storage_root` varchar(256) NOT NULL, `retention_job_id` int(10) unsigned, `number_of_retry` int(10) NOT NULL DEFAULT 0, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE `distributed_lock` ( `id` varchar(128) NOT NULL, `lock_token` varchar(256) NOT NULL, `lock_duration` int(10) NOT NULL, `created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- TRIGGER SCRIPTS -- ------------------------------------------------------ -- TRIGGER SCRIPTS -- ------------------------------------------------------ DROP TRIGGER IF EXISTS update_retention_rule; DELIMITER // CREATE TRIGGER update_retention_rule AFTER UPDATE ON retention_rule FOR EACH ROW BEGIN INSERT INTO retention_rule_history ( retention_rule_id, dataset_name, retention_value, data_storage_name, data_storage_root, data_storage_type, project_id, `type`, version, is_active, `user`, metadata ) VALUES ( OLD.id, OLD.dataset_name, OLD.retention_value, OLD.data_storage_name, OLD.data_storage_root, OLD.data_storage_type, OLD.project_id, OLD.`type`, OLD.version, OLD.is_active, OLD.`user`, OLD.metadata ); END // DELIMITER// DELIMITER ;