Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
-- ========================================
-- 시나리오 대표 여부 컬럼 추가
-- ========================================
ALTER TABLE scenarios ADD COLUMN representative BOOLEAN DEFAULT FALSE NOT NULL;
ALTER TABLE scenarios ADD COLUMN IF NOT EXISTS representative BOOLEAN DEFAULT FALSE NOT NULL;
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@
-- ========================================

-- 1. NodeAtom 테이블 생성
CREATE TABLE node_atoms (
CREATE TABLE IF NOT EXISTS node_atoms (
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
created_date TIMESTAMP(6),
content_key VARCHAR(64)
);

-- 2. NodeAtomVersion 테이블 생성
CREATE TABLE node_atom_versions (
CREATE TABLE IF NOT EXISTS node_atom_versions (
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
created_date TIMESTAMP(6),
age_year INTEGER NOT NULL,
Expand All @@ -25,7 +25,7 @@ CREATE TABLE node_atom_versions (
);

-- 3. BaselineBranch 테이블 생성
CREATE TABLE baseline_branches (
CREATE TABLE IF NOT EXISTS baseline_branches (
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
created_date TIMESTAMP(6),
base_line_id BIGINT NOT NULL,
Expand All @@ -34,7 +34,7 @@ CREATE TABLE baseline_branches (
);

-- 4. BaselineCommit 테이블 생성
CREATE TABLE baseline_commits (
CREATE TABLE IF NOT EXISTS baseline_commits (
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
created_date TIMESTAMP(6),
author_user_id BIGINT NOT NULL,
Expand All @@ -44,7 +44,7 @@ CREATE TABLE baseline_commits (
);

-- 5. BaselinePatch 테이블 생성
CREATE TABLE baseline_patches (
CREATE TABLE IF NOT EXISTS baseline_patches (
id BIGINT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY,
created_date TIMESTAMP(6),
age_year INTEGER NOT NULL,
Expand All @@ -58,68 +58,81 @@ CREATE TABLE baseline_patches (
-- ========================================

-- 6. base_nodes 테이블에 current_version_id 추가
ALTER TABLE base_nodes ADD COLUMN current_version_id BIGINT;
ALTER TABLE base_nodes ADD COLUMN IF NOT EXISTS current_version_id BIGINT;

-- 7. decision_nodes 테이블에 follow_policy와 override_version_id 추가
ALTER TABLE decision_nodes ADD COLUMN follow_policy VARCHAR(10) DEFAULT 'FOLLOW' NOT NULL;
ALTER TABLE decision_nodes ADD CONSTRAINT check_follow_policy CHECK (follow_policy IN ('FOLLOW','OVERRIDE','PINNED'));
ALTER TABLE decision_nodes ADD COLUMN override_version_id BIGINT;
ALTER TABLE decision_nodes ADD COLUMN IF NOT EXISTS follow_policy VARCHAR(10) DEFAULT 'FOLLOW' NOT NULL;
ALTER TABLE decision_nodes ADD CONSTRAINT IF NOT EXISTS check_follow_policy CHECK (follow_policy IN ('FOLLOW','OVERRIDE','PINNED'));
ALTER TABLE decision_nodes ADD COLUMN IF NOT EXISTS override_version_id BIGINT;

-- 8. decision_lines 테이블에 base_branch_id와 pinned_commit_id 추가
ALTER TABLE decision_lines ADD COLUMN base_branch_id BIGINT;
ALTER TABLE decision_lines ADD COLUMN pinned_commit_id BIGINT;
ALTER TABLE decision_lines ADD COLUMN IF NOT EXISTS base_branch_id BIGINT;
ALTER TABLE decision_lines ADD COLUMN IF NOT EXISTS pinned_commit_id BIGINT;

-- ========================================
-- 인덱스 생성
-- ========================================

-- NodeAtomVersion 인덱스
CREATE INDEX idx_navers_atom ON node_atom_versions (atom_id);
CREATE INDEX idx_navers_parent ON node_atom_versions (parent_version_id);
CREATE INDEX idx_navers_age ON node_atom_versions (age_year);
CREATE INDEX IF NOT EXISTS idx_navers_atom ON node_atom_versions (atom_id);
CREATE INDEX IF NOT EXISTS idx_navers_parent ON node_atom_versions (parent_version_id);
CREATE INDEX IF NOT EXISTS idx_navers_age ON node_atom_versions (age_year);

-- BaselineBranch 인덱스
CREATE INDEX idx_blbranch_line ON baseline_branches (base_line_id);
CREATE INDEX IF NOT EXISTS idx_blbranch_line ON baseline_branches (base_line_id);

-- BaselineCommit 인덱스
CREATE INDEX idx_blcommit_branch ON baseline_commits (branch_id);
CREATE INDEX idx_blcommit_parent ON baseline_commits (parent_commit_id);
CREATE INDEX IF NOT EXISTS idx_blcommit_branch ON baseline_commits (branch_id);
CREATE INDEX IF NOT EXISTS idx_blcommit_parent ON baseline_commits (parent_commit_id);

-- BaselinePatch 인덱스
CREATE INDEX idx_blpatch_commit ON baseline_patches (commit_id);
CREATE INDEX idx_blpatch_age ON baseline_patches (age_year);
CREATE INDEX IF NOT EXISTS idx_blpatch_commit ON baseline_patches (commit_id);
CREATE INDEX IF NOT EXISTS idx_blpatch_age ON baseline_patches (age_year);

-- DecisionLine 인덱스
CREATE INDEX idx_dline_branch ON decision_lines (base_branch_id);
CREATE INDEX idx_dline_pinned ON decision_lines (pinned_commit_id);
CREATE INDEX IF NOT EXISTS idx_dline_branch ON decision_lines (base_branch_id);
CREATE INDEX IF NOT EXISTS idx_dline_pinned ON decision_lines (pinned_commit_id);

-- ========================================
-- 외래키 제약조건 추가
-- ========================================

-- NodeAtomVersion FK
ALTER TABLE node_atom_versions ADD CONSTRAINT fk_node_atom_versions_atom FOREIGN KEY (atom_id) REFERENCES node_atoms(id);
ALTER TABLE node_atom_versions ADD CONSTRAINT fk_node_atom_versions_parent FOREIGN KEY (parent_version_id) REFERENCES node_atom_versions(id);
ALTER TABLE node_atom_versions ADD CONSTRAINT IF NOT EXISTS fk_node_atom_versions_atom
FOREIGN KEY (atom_id) REFERENCES node_atoms(id);
ALTER TABLE node_atom_versions ADD CONSTRAINT IF NOT EXISTS fk_node_atom_versions_parent
FOREIGN KEY (parent_version_id) REFERENCES node_atom_versions(id);

-- BaselineBranch FK
ALTER TABLE baseline_branches ADD CONSTRAINT fk_baseline_branches_base_line FOREIGN KEY (base_line_id) REFERENCES base_lines(id);
ALTER TABLE baseline_branches ADD CONSTRAINT fk_baseline_branches_head_commit FOREIGN KEY (head_commit_id) REFERENCES baseline_commits(id);
ALTER TABLE baseline_branches ADD CONSTRAINT IF NOT EXISTS fk_baseline_branches_base_line
FOREIGN KEY (base_line_id) REFERENCES base_lines(id);
ALTER TABLE baseline_branches ADD CONSTRAINT IF NOT EXISTS fk_baseline_branches_head_commit
FOREIGN KEY (head_commit_id) REFERENCES baseline_commits(id);

-- BaselineCommit FK
ALTER TABLE baseline_commits ADD CONSTRAINT fk_baseline_commits_branch FOREIGN KEY (branch_id) REFERENCES baseline_branches(id);
ALTER TABLE baseline_commits ADD CONSTRAINT fk_baseline_commits_parent FOREIGN KEY (parent_commit_id) REFERENCES baseline_commits(id);
ALTER TABLE baseline_commits ADD CONSTRAINT IF NOT EXISTS fk_baseline_commits_branch
FOREIGN KEY (branch_id) REFERENCES baseline_branches(id);
ALTER TABLE baseline_commits ADD CONSTRAINT IF NOT EXISTS fk_baseline_commits_parent
FOREIGN KEY (parent_commit_id) REFERENCES baseline_commits(id);

-- BaselinePatch FK
ALTER TABLE baseline_patches ADD CONSTRAINT fk_baseline_patches_commit FOREIGN KEY (commit_id) REFERENCES baseline_commits(id);
ALTER TABLE baseline_patches ADD CONSTRAINT fk_baseline_patches_before FOREIGN KEY (before_version_id) REFERENCES node_atom_versions(id);
ALTER TABLE baseline_patches ADD CONSTRAINT fk_baseline_patches_after FOREIGN KEY (after_version_id) REFERENCES node_atom_versions(id);
ALTER TABLE baseline_patches ADD CONSTRAINT IF NOT EXISTS fk_baseline_patches_commit
FOREIGN KEY (commit_id) REFERENCES baseline_commits(id);
ALTER TABLE baseline_patches ADD CONSTRAINT IF NOT EXISTS fk_baseline_patches_before
FOREIGN KEY (before_version_id) REFERENCES node_atom_versions(id);
ALTER TABLE baseline_patches ADD CONSTRAINT IF NOT EXISTS fk_baseline_patches_after
FOREIGN KEY (after_version_id) REFERENCES node_atom_versions(id);

-- BaseNode FK
ALTER TABLE base_nodes ADD CONSTRAINT fk_base_nodes_current_version FOREIGN KEY (current_version_id) REFERENCES node_atom_versions(id);
ALTER TABLE base_nodes ADD CONSTRAINT IF NOT EXISTS fk_base_nodes_current_version
FOREIGN KEY (current_version_id) REFERENCES node_atom_versions(id);

-- DecisionNode FK
ALTER TABLE decision_nodes ADD CONSTRAINT fk_decision_nodes_override_version FOREIGN KEY (override_version_id) REFERENCES node_atom_versions(id);
ALTER TABLE decision_nodes ADD CONSTRAINT IF NOT EXISTS fk_decision_nodes_override_version
FOREIGN KEY (override_version_id) REFERENCES node_atom_versions(id);

-- DecisionLine FK
ALTER TABLE decision_lines ADD CONSTRAINT fk_decision_lines_base_branch FOREIGN KEY (base_branch_id) REFERENCES baseline_branches(id);
ALTER TABLE decision_lines ADD CONSTRAINT fk_decision_lines_pinned_commit FOREIGN KEY (pinned_commit_id) REFERENCES baseline_commits(id);
ALTER TABLE decision_lines ADD CONSTRAINT IF NOT EXISTS fk_decision_lines_base_branch
FOREIGN KEY (base_branch_id) REFERENCES baseline_branches(id);
ALTER TABLE decision_lines ADD CONSTRAINT IF NOT EXISTS fk_decision_lines_pinned_commit
FOREIGN KEY (pinned_commit_id) REFERENCES baseline_commits(id);