Files
galaxy/crates/persistence/migrations/2021-11-03-015315_add_panes/up.sql
T

34 lines
1021 B
SQL

CREATE TABLE pane_nodes (
id INTEGER PRIMARY KEY NOT NULL,
tab_id INTEGER NOT NULL REFERENCES tabs(id),
parent_pane_node_id INTEGER REFERENCES pane_nodes(id),
flex FLOAT,
is_leaf BOOLEAN NOT NULL,
CONSTRAINT root_or_has_parent CHECK (
parent_pane_node_id IS NULL AND flex IS NULL
OR parent_pane_node_id IS NOT NULL AND flex IS NOT NULL
)
);
CREATE TABLE pane_branches (
id INTEGER PRIMARY KEY NOT NULL,
pane_node_id INTEGER NOT NULL UNIQUE REFERENCES pane_nodes(id),
horizontal BOOLEAN NOT NULL
);
CREATE TABLE pane_leaves (
id INTEGER PRIMARY KEY NOT NULL,
pane_node_id INTEGER NOT NULL UNIQUE REFERENCES pane_nodes(id),
cwd TEXT
);
-- Migrate the same tabs data into a pane structure (i.e. each tab has a single
-- pane node that's a leaf).
INSERT INTO pane_nodes (tab_id, is_leaf)
SELECT id AS tab_id, TRUE from tabs;
INSERT INTO pane_leaves (pane_node_id, cwd)
SELECT pane_nodes.id AS pane_node_id, cwd from tabs JOIN pane_nodes ON tab_id = tabs.id;
ALTER TABLE tabs DROP COLUMN cwd;