DROP TABLE IF exists pipelines; DROP TABLE IF exists executions; DROP TABLE IF exists stages; DROP TABLE IF exists secrets; DROP TABLE IF exists steps; DROP TABLE IF exists logs; DROP TABLE IF exists plugins; DROP TABLE IF exists connectors; DROP TABLE IF exists templates; DROP TABLE IF exists triggers; CREATE TABLE pipelines ( pipeline_id INTEGER PRIMARY KEY AUTOINCREMENT ,pipeline_description TEXT NOT NULL ,pipeline_uid TEXT NOT NULL ,pipeline_seq INTEGER NOT NULL DEFAULT 0 ,pipeline_repo_id INTEGER NOT NULL ,pipeline_default_branch TEXT NOT NULL ,pipeline_config_path TEXT NOT NULL ,pipeline_created INTEGER NOT NULL ,pipeline_updated INTEGER NOT NULL ,pipeline_version INTEGER NOT NULL -- Ensure unique combination of UID and repo ID ,UNIQUE (pipeline_repo_id, pipeline_uid) -- Foreign key to repositories table ,CONSTRAINT fk_pipelines_repo_id FOREIGN KEY (pipeline_repo_id) REFERENCES repositories (repo_id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE CASCADE ); CREATE TABLE executions ( execution_id INTEGER PRIMARY KEY AUTOINCREMENT ,execution_pipeline_id INTEGER NOT NULL ,execution_repo_id INTEGER NOT NULL ,execution_trigger TEXT NOT NULL ,execution_number INTEGER NOT NULL ,execution_parent INTEGER NOT NULL ,execution_status TEXT NOT NULL ,execution_error TEXT NOT NULL ,execution_event TEXT NOT NULL ,execution_action TEXT NOT NULL ,execution_link TEXT NOT NULL ,execution_timestamp INTEGER NOT NULL ,execution_title TEXT NOT NULL ,execution_message TEXT NOT NULL ,execution_before TEXT NOT NULL ,execution_after TEXT NOT NULL ,execution_ref TEXT NOT NULL ,execution_source_repo TEXT NOT NULL ,execution_source TEXT NOT NULL ,execution_target TEXT NOT NULL ,execution_author TEXT NOT NULL ,execution_author_name TEXT NOT NULL ,execution_author_email TEXT NOT NULL ,execution_author_avatar TEXT NOT NULL ,execution_sender TEXT NOT NULL ,execution_params TEXT NOT NULL ,execution_cron TEXT NOT NULL ,execution_deploy TEXT NOT NULL ,execution_deploy_id INTEGER NOT NULL ,execution_debug BOOLEAN NOT NULL DEFAULT 0 ,execution_started INTEGER NOT NULL ,execution_finished INTEGER NOT NULL ,execution_created INTEGER NOT NULL ,execution_updated INTEGER NOT NULL ,execution_version INTEGER NOT NULL -- Ensure unique combination of pipeline ID and number ,UNIQUE (execution_pipeline_id, execution_number) -- Foreign key to pipelines table ,CONSTRAINT fk_executions_pipeline_id FOREIGN KEY (execution_pipeline_id) REFERENCES pipelines (pipeline_id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE CASCADE -- Foreign key to repositories table ,CONSTRAINT fk_executions_repo_id FOREIGN KEY (execution_repo_id) REFERENCES repositories (repo_id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE CASCADE ); CREATE TABLE secrets ( secret_id INTEGER PRIMARY KEY AUTOINCREMENT ,secret_uid TEXT NOT NULL ,secret_space_id INTEGER NOT NULL ,secret_description TEXT NOT NULL ,secret_data BLOB NOT NULL ,secret_created INTEGER NOT NULL ,secret_updated INTEGER NOT NULL ,secret_version INTEGER NOT NULL -- Ensure unique combination of space ID and UID ,UNIQUE (secret_space_id, secret_uid) -- Foreign key to spaces table ,CONSTRAINT fk_secrets_space_id FOREIGN KEY (secret_space_id) REFERENCES spaces (space_id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE CASCADE ); CREATE TABLE stages ( stage_id INTEGER PRIMARY KEY AUTOINCREMENT ,stage_execution_id INTEGER NOT NULL ,stage_number INTEGER NOT NULL ,stage_kind TEXT NOT NULL ,stage_type TEXT NOT NULL ,stage_name TEXT NOT NULL ,stage_status TEXT NOT NULL ,stage_error TEXT NOT NULL ,stage_parent_group_id INTEGER NOT NULL ,stage_errignore BOOLEAN NOT NULL ,stage_exit_code INTEGER NOT NULL ,stage_limit INTEGER NOT NULL ,stage_os TEXT NOT NULL ,stage_arch TEXT NOT NULL ,stage_variant TEXT NOT NULL ,stage_kernel TEXT NOT NULL ,stage_machine TEXT NOT NULL ,stage_started INTEGER NOT NULL ,stage_stopped INTEGER NOT NULL ,stage_created INTEGER NOT NULL ,stage_updated INTEGER NOT NULL ,stage_version INTEGER NOT NULL ,stage_on_success BOOLEAN NOT NULL ,stage_on_failure BOOLEAN NOT NULL ,stage_depends_on TEXT NOT NULL ,stage_labels TEXT NOT NULL ,stage_limit_repo INTEGER NOT NULL DEFAULT 0 -- Ensure unique combination of stage execution ID and stage number ,UNIQUE(stage_execution_id, stage_number) -- Foreign key to executions table ,CONSTRAINT fk_stages_execution_id FOREIGN KEY (stage_execution_id) REFERENCES executions (execution_id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE CASCADE ); -- name: create-index-stages-status CREATE INDEX ix_stage_in_progress ON stages (stage_status) WHERE stage_status IN ('pending', 'running'); CREATE TABLE steps ( step_id INTEGER PRIMARY KEY AUTOINCREMENT ,step_stage_id INTEGER NOT NULL ,step_number INTEGER NOT NULL ,step_name VARCHAR(100) NOT NULL ,step_status VARCHAR(50) NOT NULL ,step_error VARCHAR(500) NOT NULL ,step_parent_group_id INTEGER NOT NULL ,step_errignore BOOLEAN NOT NULL ,step_exit_code INTEGER NOT NULL ,step_started INTEGER NOT NULL ,step_stopped INTEGER NOT NULL ,step_version INTEGER NOT NULL ,step_depends_on TEXT NOT NULL ,step_image TEXT NOT NULL ,step_detached BOOLEAN NOT NULL ,step_schema TEXT NOT NULL -- Ensure unique comination of stage ID and step number ,UNIQUE(step_stage_id, step_number) -- Foreign key to stages table ,CONSTRAINT fk_steps_stage_id FOREIGN KEY (step_stage_id) REFERENCES stages (stage_id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE CASCADE ); CREATE TABLE logs ( log_id INTEGER PRIMARY KEY ,log_data BLOB NOT NULL -- Foreign key to steps table ,CONSTRAINT fk_logs_id FOREIGN KEY (log_id) REFERENCES steps (step_id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE CASCADE ); -- Insert some pipelines INSERT INTO pipelines ( pipeline_id, pipeline_description, pipeline_uid, pipeline_seq, pipeline_repo_id, pipeline_default_branch, pipeline_config_path, pipeline_created, pipeline_updated, pipeline_version ) VALUES ( 1, 'Sample Pipeline 1', 'pipeline_uid_1', 2, 1, 'main', 'config_path_1', 1678932000, 1678932100, 1 ); INSERT INTO pipelines ( pipeline_id, pipeline_description, pipeline_uid, pipeline_seq, pipeline_repo_id, pipeline_default_branch, pipeline_config_path, pipeline_created, pipeline_updated, pipeline_version ) VALUES ( 2, 'Sample Pipeline 2', 'pipeline_uid_2', 0, 1, 'develop', 'config_path_2', 1678932200, 1678932300, 1 ); INSERT INTO pipelines ( pipeline_id, pipeline_description, pipeline_uid, pipeline_seq, pipeline_repo_id, pipeline_default_branch, pipeline_config_path, pipeline_created, pipeline_updated, pipeline_version ) VALUES ( 3, 'Sample Pipeline 3', 'pipeline_uid_3', 0, 1, 'develop', 'config_path_2', 1678932200000, 1678932300000, 1 ); -- Insert some executions INSERT INTO executions ( execution_id, execution_pipeline_id, execution_repo_id, execution_trigger, execution_number, execution_parent, execution_status, execution_error, execution_event, execution_action, execution_link, execution_timestamp, execution_title, execution_message, execution_before, execution_after, execution_ref, execution_source_repo, execution_source, execution_target, execution_author, execution_author_name, execution_author_email, execution_author_avatar, execution_sender, execution_params, execution_cron, execution_deploy, execution_deploy_id, execution_debug, execution_started, execution_finished, execution_created, execution_updated, execution_version ) VALUES ( 1, 1, 1, 'manual', 1, 0, 'running', '', 'push', 'created', 'https://example.com/pipelines/1', 1678932400, 'Pipeline Execution 1', 'Pipeline execution message...', 'commit_hash_before', 'commit_hash_after', 'refs/heads/main', 'source_repo_name', 'source_branch', 'target_branch', 'author_login', 'Author Name', 'author@example.com', 'https://example.com/avatar.jpg', 'sender_username', '{"param1": "value1", "param2": "value2"}', '0 0 * * *', 'production', 5, 0, 1678932500, 1678932600, 1678932700, 1678932800, 1 ); INSERT INTO executions ( execution_id, execution_pipeline_id, execution_repo_id, execution_trigger, execution_number, execution_parent, execution_status, execution_error, execution_event, execution_action, execution_link, execution_timestamp, execution_title, execution_message, execution_before, execution_after, execution_ref, execution_source_repo, execution_source, execution_target, execution_author, execution_author_name, execution_author_email, execution_author_avatar, execution_sender, execution_params, execution_cron, execution_deploy, execution_deploy_id, execution_debug, execution_started, execution_finished, execution_created, execution_updated, execution_version ) VALUES ( 2, 1, 1, 'manual', 2, 0, 'running', '', 'push', 'created', 'https://example.com/pipelines/1', 1678932400, 'Pipeline Execution 1', 'Pipeline execution message...', 'commit_hash_before', 'commit_hash_after', 'refs/heads/main', 'source_repo_name', 'source_branch', 'target_branch', 'author_login', 'Author Name', 'author@example.com', 'https://example.com/avatar.jpg', 'sender_username', '{"param1": "value1", "param2": "value2"}', '0 0 * * *', 'production', 5, 0, 1678932500, 1678932600, 1678932700, 1678932800, 1 ); INSERT INTO executions ( execution_id, execution_pipeline_id, execution_repo_id, execution_trigger, execution_number, execution_parent, execution_status, execution_error, execution_event, execution_action, execution_link, execution_timestamp, execution_title, execution_message, execution_before, execution_after, execution_ref, execution_source_repo, execution_source, execution_target, execution_author, execution_author_name, execution_author_email, execution_author_avatar, execution_sender, execution_params, execution_cron, execution_deploy, execution_deploy_id, execution_debug, execution_started, execution_finished, execution_created, execution_updated, execution_version ) VALUES ( 3, 2, 1, 'manual', 1, 0, 'running', '', 'push', 'created', 'https://example.com/pipelines/1', 1678932400, 'Pipeline Execution 1', 'Pipeline execution message...', 'commit_hash_before', 'commit_hash_after', 'refs/heads/main', 'source_repo_name', 'source_branch', 'target_branch', 'author_login', 'Author Name', 'author@example.com', 'https://example.com/avatar.jpg', 'sender_username', '{"param1": "value1", "param2": "value2"}', '0 0 * * *', 'production', 5, 0, 1678932500, 1678932600, 1678932700, 1678932800, 1 ); INSERT INTO executions ( execution_id, execution_pipeline_id, execution_repo_id, execution_trigger, execution_number, execution_parent, execution_status, execution_error, execution_event, execution_action, execution_link, execution_timestamp, execution_title, execution_message, execution_before, execution_after, execution_ref, execution_source_repo, execution_source, execution_target, execution_author, execution_author_name, execution_author_email, execution_author_avatar, execution_sender, execution_params, execution_cron, execution_deploy, execution_deploy_id, execution_debug, execution_started, execution_finished, execution_created, execution_updated, execution_version ) VALUES ( 4, 2, 1, 'manual', 2, 0, 'running', '', 'push', 'created', 'https://example.com/pipelines/1', 1678932400, 'Pipeline Execution 1', 'Pipeline execution message...', 'commit_hash_before', 'commit_hash_after', 'refs/heads/main', 'source_repo_name', 'source_branch', 'target_branch', 'author_login', 'Author Name', 'author@example.com', 'https://example.com/avatar.jpg', 'sender_username', '{"param1": "value1", "param2": "value2"}', '0 0 * * *', 'production', 5, 0, 1678932500, 1678932600, 1678932700, 1678932800, 1 ); INSERT INTO executions ( execution_id, execution_pipeline_id, execution_repo_id, execution_trigger, execution_number, execution_parent, execution_status, execution_error, execution_event, execution_action, execution_link, execution_timestamp, execution_title, execution_message, execution_before, execution_after, execution_ref, execution_source_repo, execution_source, execution_target, execution_author, execution_author_name, execution_author_email, execution_author_avatar, execution_sender, execution_params, execution_cron, execution_deploy, execution_deploy_id, execution_debug, execution_started, execution_finished, execution_created, execution_updated, execution_version ) VALUES ( 5, 2, 1, 'manual', 3, 0, 'running', '', 'push', 'created', 'https://example.com/pipelines/1', 1678932400, 'Pipeline Execution 1', 'Pipeline execution message...', 'commit_hash_before', 'commit_hash_after', 'refs/heads/main', 'source_repo_name', 'source_branch', 'target_branch', 'author_login', 'Author Name', 'author@example.com', 'https://example.com/avatar.jpg', 'sender_username', '{"param1": "value1", "param2": "value2"}', '0 0 * * *', 'production', 5, 0, 1678932500, 1678932600, 1678932700, 1678932800, 1 ); -- Insert some stages INSERT INTO stages (stage_id, stage_execution_id, stage_number, stage_parent_group_id, stage_kind, stage_type, stage_name, stage_status, stage_error, stage_errignore, stage_exit_code, stage_limit, stage_os, stage_arch, stage_variant, stage_kernel, stage_machine, stage_started, stage_stopped, stage_created, stage_updated, stage_version, stage_on_success, stage_on_failure, stage_depends_on, stage_labels, stage_limit_repo) VALUES ( 1, -- stage_id 1, -- stage_execution_id 1, -- stage_number 0, -- stage_parent_group_id 'build', -- stage_kind 'docker', -- stage_type 'Build Stage', -- stage_name 'Pending', -- stage_status '', -- stage_error 0, -- stage_errignore 0, -- stage_exit_code 2, -- stage_limit 'linux', -- stage_os 'x86_64', -- stage_arch 'default', -- stage_variant '4.18.0-305.7.1.el8_4.x86_64', -- stage_kernel 'x86_64', -- stage_machine 0, -- stage_started 0, -- stage_stopped 1679089460, -- stage_created 1679089500, -- stage_updated 1, -- stage_version 1, -- stage_on_success 0, -- stage_on_failure '["1"]', -- stage_depends_on '{}', -- stage_labels 1 -- stage_limit_repo ); -- Sample 2 INSERT INTO stages (stage_id, stage_execution_id, stage_number, stage_parent_group_id, stage_kind, stage_type, stage_name, stage_status, stage_error, stage_errignore, stage_exit_code, stage_limit, stage_os, stage_arch, stage_variant, stage_kernel, stage_machine, stage_started, stage_stopped, stage_created, stage_updated, stage_version, stage_on_success, stage_on_failure, stage_depends_on, stage_labels, stage_limit_repo) VALUES ( 2, -- stage_id 1, -- stage_execution_id 2, -- stage_number 0, -- stage_parent_group_id 'test', -- stage_kind 'pytest', -- stage_type 'Test Stage', -- stage_name 'Pending', -- stage_status '', -- stage_error 0, -- stage_errignore 0, -- stage_exit_code 1, -- stage_limit 'linux', -- stage_os 'x86_64', -- stage_arch 'default', -- stage_variant '4.18.0-305.7.1.el8_4.x86_64', -- stage_kernel 'x86_64', -- stage_machine 0, -- stage_started 0, -- stage_stopped 1679089560, -- stage_created 1679089600, -- stage_updated 1, -- stage_version 1, -- stage_on_success 1, -- stage_on_failure '["1"]', -- stage_depends_on (referring to the first stage) '{}', -- stage_labels 0 -- stage_limit_repo (using default value) ); INSERT INTO steps (step_id, step_stage_id, step_number, step_parent_group_id, step_name, step_status, step_error, step_errignore, step_exit_code, step_started, step_stopped, step_version, step_depends_on, step_image, step_detached, step_schema) VALUES ( 1, -- step_id 1, -- step_stage_id 1, -- step_number 0, -- step_parent_group_id 'stage1step1', -- step_name 'Pending', -- step_status '', -- step_error 0, -- step_errignore 0, -- step_exit_code 0, -- step_started 0, -- step_stopped 1, -- step_version '["1"]', -- step_depends_on 'sample_image', -- step_image 0, -- step_detached 'sample_schema' -- step_schema ); INSERT INTO steps (step_id, step_stage_id, step_number, step_parent_group_id, step_name, step_status, step_error, step_errignore, step_exit_code, step_started, step_stopped, step_version, step_depends_on, step_image, step_detached, step_schema) VALUES ( 2, -- step_id 1, -- step_stage_id 2, -- step_number 0, -- step_parent_group_id 'stage1step2', -- step_name 'Success', -- step_status '', -- step_error 0, -- step_errignore 0, -- step_exit_code 0, -- step_started 0, -- step_stopped 1, -- step_version '["1"]', -- step_depends_on 'sample_image', -- step_image 0, -- step_detached 'sample_schema' -- step_schema ); INSERT INTO steps (step_id, step_stage_id, step_number, step_parent_group_id, step_name, step_status, step_error, step_errignore, step_exit_code, step_started, step_stopped, step_version, step_depends_on, step_image, step_detached, step_schema) VALUES ( 3, -- step_id 2, -- step_stage_id 1, -- step_number 0, -- step_parent_group_id 'stage2step1', -- step_name 'Success', -- step_status '', -- step_error 0, -- step_errignore 0, -- step_exit_code 0, -- step_started 0, -- step_stopped 1, -- step_version '["1"]', -- step_depends_on 'sample_image', -- step_image 0, -- step_detached 'sample_schema' -- step_schema ); INSERT INTO steps (step_id, step_stage_id, step_number, step_parent_group_id, step_name, step_status, step_error, step_errignore, step_exit_code, step_started, step_stopped, step_version, step_depends_on, step_image, step_detached, step_schema) VALUES ( 4, -- step_id 2, -- step_stage_id 2, -- step_number 0, -- step_parent_group_id 'stage2step2', -- step_name 'Success', -- step_status '', -- step_error 0, -- step_errignore 0, -- step_exit_code 0, -- step_started 0, -- step_stopped 1, -- step_version '["1"]', -- step_depends_on 'sample_image', -- step_image 0, -- step_detached 'sample_schema' -- step_schema ); INSERT INTO logs (log_id, log_data) VALUES (1, '{"pos": 0, "out": "+git init", "time": 0} {"pos": 0, "out": "echo Hi", "time": 2}'); INSERT INTO logs (log_id, log_data) VALUES (2, '{"pos": 0, "out": "+git init", "time": 0} {"pos": 0, "out": "echo Hi", "time": 2}'); INSERT INTO logs (log_id, log_data) VALUES (3, '{"pos": 0, "out": "+git init", "time": 0} {"pos": 0, "out": "echo Hi", "time": 2}'); INSERT INTO logs (log_id, log_data) VALUES (4, '{"pos": 0, "out": "+git init", "time": 0} {"pos": 0, "out": "echo Hi", "time": 2}'); CREATE TABLE connectors ( connector_id INTEGER PRIMARY KEY AUTOINCREMENT ,connector_uid TEXT NOT NULL ,connector_description TEXT NOT NULL ,connector_type TEXT NOT NULL ,connector_space_id INTEGER NOT NULL ,connector_data TEXT NOT NULL ,connector_created INTEGER NOT NULL ,connector_updated INTEGER NOT NULL ,connector_version INTEGER NOT NULL -- Ensure unique combination of space ID and UID ,UNIQUE (connector_space_id, connector_uid) -- Foreign key to spaces table ,CONSTRAINT fk_connectors_space_id FOREIGN KEY (connector_space_id) REFERENCES spaces (space_id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE CASCADE ); CREATE TABLE templates ( template_id INTEGER PRIMARY KEY AUTOINCREMENT ,template_uid TEXT NOT NULL ,template_description TEXT NOT NULL ,template_space_id INTEGER NOT NULL ,template_data TEXT NOT NULL ,template_created INTEGER NOT NULL ,template_updated INTEGER NOT NULL ,template_version INTEGER NOT NULL -- Ensure unique combination of space ID and UID ,UNIQUE (template_space_id, template_uid) -- Foreign key to spaces table ,CONSTRAINT fk_templates_space_id FOREIGN KEY (template_space_id) REFERENCES spaces (space_id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE CASCADE ); CREATE TABLE triggers ( trigger_id INTEGER PRIMARY KEY AUTOINCREMENT ,trigger_uid TEXT NOT NULL ,trigger_description TEXT NOT NULL ,trigger_pipeline_id INTEGER NOT NULL ,trigger_created INTEGER NOT NULL ,trigger_updated INTEGER NOT NULL ,trigger_version INTEGER NOT NULL -- Ensure unique combination of pipeline ID and UID ,UNIQUE (trigger_pipeline_id, trigger_uid) -- Foreign key to spaces table ,CONSTRAINT fk_triggers_pipeline_id FOREIGN KEY (trigger_pipeline_id) REFERENCES pipelines (pipeline_id) MATCH SIMPLE ON UPDATE NO ACTION ON DELETE CASCADE ); CREATE TABLE plugins ( plugin_uid TEXT NOT NULL ,plugin_description TEXT NOT NULL ,plugin_logo TEXT NOT NULL ,plugin_spec BLOB NOT NULL -- Ensure unique plugin names ,UNIQUE(plugin_uid) ); INSERT INTO plugins (plugin_uid, plugin_description, plugin_logo, plugin_spec) VALUES ('plugins/slack', 'A sample slack plugin', 'slack.png', 'inputs: channel: type: string token: type: string steps: - type: script spec: image: plugins/slack envs: PLUGIN_CHANNEL: <+ inputs.channel >');