Files
houston-be/db/migration/000001_init_schema.up.sql

295 lines
11 KiB
SQL

CREATE TABLE if not exists blameless_events
(
id SERIAL PRIMARY KEY,
incident_id integer NOT NULL,
event_id integer NOT NULL,
type character varying(100) NOT NULL,
data_json jsonb,
date timestamp without time zone,
created_at timestamp without time zone,
updated_at timestamp without time zone,
deleted_at timestamp without time zone
);
CREATE TABLE if not exists blameless_incidents
(
id SERIAL PRIMARY KEY,
incident_id integer NOT NULL,
description text,
status character varying(100) NOT NULL,
severity text NOT NULL,
is_deleted boolean,
summary text,
type character varying(100),
start_of_incident_impact timestamp without time zone,
start_of_customer_impact timestamp without time zone,
duration_of_customer_impact integer,
data_json jsonb,
incident_created_at timestamp without time zone,
created_at timestamp without time zone,
updated_at timestamp without time zone,
deleted_at timestamp without time zone
);
CREATE TABLE if not exists dbz_heartbeat
(
id SERIAL PRIMARY KEY,
ts timestamp with time zone
);
CREATE TABLE if not exists deployment_config_mapping
(
id SERIAL PRIMARY KEY,
alert_id character varying(64),
manifest_id character varying(255),
deployment_portal_url character varying(255),
priority integer,
created_at timestamp without time zone,
updated_at timestamp without time zone,
deleted_at timestamp without time zone
);
CREATE TABLE if not exists deployment_mapping
(
id SERIAL PRIMARY KEY,
alert_id character varying(64),
deployment_portal_url character varying(255),
service_name character varying(255),
priority integer,
created_at timestamp without time zone,
updated_at timestamp without time zone,
deleted_at timestamp without time zone
);
CREATE TABLE if not exists diagnose_runbook
(
id SERIAL PRIMARY KEY,
alert_id character varying(64),
alert_name character varying(255),
description character varying(255),
is_active character varying(255),
created_at timestamp without time zone,
updated_at timestamp without time zone,
deleted_at timestamp without time zone
);
CREATE TABLE if not exists grafana_mapping
(
id SERIAL PRIMARY KEY,
alert_id character varying(64),
endpoint_url character varying(255),
priority integer,
created_at timestamp without time zone,
updated_at timestamp without time zone,
deleted_at timestamp without time zone
);
CREATE TABLE if not exists houston_user
(
id SERIAL PRIMARY KEY,
name character varying(50),
slack_user_id character varying(100),
active boolean DEFAULT true,
created_at timestamp without time zone,
updated_at timestamp without time zone,
deleted_at timestamp without time zone
);
CREATE TABLE if not exists severity
(
id SERIAL PRIMARY KEY,
name character varying(50) NOT NULL UNIQUE,
description text,
version bigint DEFAULT 0,
sla integer,
slack_user_ids character varying[] DEFAULT '{}'::character varying[],
created_at timestamp without time zone,
updated_at timestamp without time zone,
deleted_at timestamp without time zone
);
CREATE TABLE if not exists incident_status
(
id SERIAL PRIMARY KEY,
name character varying(50) NOT NULL UNIQUE,
description text,
is_terminal_status boolean DEFAULT false,
version bigint DEFAULT 0,
created_at timestamp without time zone,
updated_at timestamp without time zone,
deleted_at timestamp without time zone
);
CREATE TABLE if not exists team
(
id SERIAL PRIMARY KEY,
name character varying(50) NOT NULL UNIQUE,
slack_user_ids character varying[] DEFAULT '{}'::character varying[],
active boolean DEFAULT false,
confluence_link text,
version bigint DEFAULT 0,
oncall_handle character varying(50),
created_at timestamp without time zone,
updated_at timestamp without time zone,
deleted_at timestamp without time zone,
webhook_slack_channel character varying(50),
manager_handle character varying(50),
pse_oncall_handle character varying
);
CREATE TABLE if not exists incident
(
id SERIAL PRIMARY KEY,
title text,
description text,
status integer NOT NULL REFERENCES incident_status (id),
severity_id integer NOT NULL REFERENCES severity (id),
incident_name text,
slack_channel character varying(100),
detection_time timestamp without time zone,
start_time timestamp without time zone,
end_time timestamp without time zone,
team_id integer NOT NULL REFERENCES team (id),
jira_id character varying(100),
confluence_id character varying(100),
created_by character varying(100),
updated_by character varying(100),
severity_tat timestamp without time zone,
remind_me_at timestamp without time zone,
enable_reminder boolean DEFAULT false,
created_at timestamp without time zone,
updated_at timestamp without time zone,
deleted_at timestamp without time zone,
meta_data jsonb,
rca_text character varying,
CONSTRAINT fk_status FOREIGN KEY (status) REFERENCES incident_status (id),
CONSTRAINT fk_severity FOREIGN KEY (severity_id) REFERENCES severity (id),
CONSTRAINT fk_team FOREIGN KEY (team_id) REFERENCES team (id)
);
CREATE INDEX if not exists incident_team_id_idx ON incident (team_id int4_ops);
CREATE INDEX if not exists incident_severity_id_idx ON incident (severity_id int4_ops);
CREATE INDEX if not exists incident_status_idx ON incident (status int4_ops);
CREATE INDEX if not exists incident_slack_channel_idx ON incident (slack_channel text_ops);
CREATE INDEX if not exists incident_deleted_at_idx ON incident (deleted_at timestamp_ops);
CREATE INDEX if not exists incident_updated_at_idx ON incident (updated_at timestamp_ops);
CREATE INDEX if not exists incident_severity_tat_idx ON incident (severity_tat timestamp_ops);
CREATE TABLE if not exists incident_channel
(
id SERIAL PRIMARY KEY,
slack_channel character varying(100),
incident_id integer NOT NULL REFERENCES incident (id),
message_timestamp character varying(100),
version bigint DEFAULT 0,
created_at timestamp without time zone,
updated_at timestamp without time zone,
deleted_at timestamp without time zone,
CONSTRAINT fk_incident FOREIGN KEY (incident_id) REFERENCES incident (id)
);
CREATE INDEX if not exists incident_channel_incident_id_idx ON incident_channel (incident_id int4_ops);
CREATE INDEX if not exists incident_channel_slack_channel_idx ON incident_channel (slack_channel text_ops);
CREATE TABLE if not exists incident_role
(
id SERIAL PRIMARY KEY,
incident_id integer NOT NULL REFERENCES incident (id),
role character varying(100),
assigned_to character varying(100),
assigned_by character varying(100),
created_at timestamp without time zone,
updated_at timestamp without time zone,
deleted_at timestamp without time zone,
CONSTRAINT fk_incident FOREIGN KEY (incident_id) REFERENCES incident (id)
);
CREATE INDEX if not exists incident_role_incident_id_idx ON incident_role (incident_id int4_ops);
CREATE TABLE if not exists tag
(
id SERIAL PRIMARY KEY,
name character varying NOT NULL UNIQUE,
label text NOT NULL,
place_holder text,
action_id character varying(100) NOT NULL,
type character varying(100) NOT NULL,
created_at timestamp without time zone,
updated_at timestamp without time zone,
deleted_at timestamp without time zone
);
CREATE TABLE if not exists incident_tag
(
id SERIAL PRIMARY KEY,
incident_id integer NOT NULL REFERENCES incident (id),
tag_id integer NOT NULL REFERENCES tag (id),
tag_value_ids integer[] DEFAULT '{}'::integer[],
free_text_value text,
created_at timestamp without time zone,
updated_at timestamp without time zone,
deleted_at timestamp without time zone,
CONSTRAINT fk_incident FOREIGN KEY (incident_id) REFERENCES incident (id),
CONSTRAINT fk_tag FOREIGN KEY (tag_id) REFERENCES tag (id)
);
CREATE INDEX if not exists incident_tag_incident_id_idx ON incident_tag (incident_id int4_ops);
CREATE INDEX if not exists incident_tag_tag_id_idx ON incident_tag (tag_id int4_ops);
CREATE TABLE if not exists kibana_mapping
(
id SERIAL PRIMARY KEY,
alert_id character varying(64),
service_name character varying(255),
priority integer,
created_at timestamp without time zone,
updated_at timestamp without time zone,
deleted_at timestamp without time zone
);
CREATE TABLE if not exists role
(
id SERIAL PRIMARY KEY,
name character varying(100) NOT NULL UNIQUE,
created_at timestamp without time zone,
updated_at timestamp without time zone,
deleted_at timestamp without time zone
);
CREATE TABLE if not exists shedlock
(
name character varying(64) PRIMARY KEY,
lock_until timestamp without time zone,
locked_at timestamp without time zone,
locked_by character varying(255),
unlocked_by character varying(64),
locked_value boolean DEFAULT true
);
CREATE TABLE if not exists tag_value
(
id SERIAL PRIMARY KEY,
tag_id integer NOT NULL REFERENCES tag (id),
value character varying NOT NULL,
create_at timestamp without time zone,
updated_at timestamp without time zone,
deleted_at timestamp without time zone,
CONSTRAINT fk_tag FOREIGN KEY (tag_id) REFERENCES tag (id)
);
CREATE INDEX if not exists tag_value_tag_id_idx ON tag_value (tag_id int4_ops);
CREATE TABLE if not exists team_tag
(
id SERIAL PRIMARY KEY,
team_id integer NOT NULL REFERENCES team (id),
tag_id integer NOT NULL REFERENCES tag (id),
optional boolean DEFAULT false,
created_at timestamp without time zone,
updated_at timestamp without time zone,
deleted_at timestamp without time zone,
CONSTRAINT fk_team FOREIGN KEY (team_id) REFERENCES team (id),
CONSTRAINT fk_tag FOREIGN KEY (tag_id) REFERENCES tag (id)
);
CREATE INDEX if not exists team_tag_team_id_idx ON team_tag (team_id int4_ops);
CREATE INDEX if not exists team_tag_tag_id_idx ON team_tag (tag_id int4_ops);