From e5264ede0f6f5048a7db497a36dd14011cebb025 Mon Sep 17 00:00:00 2001
From: Sonia Zorba <sonia.zorba@inaf.it>
Date: Fri, 28 May 2021 20:53:06 +0200
Subject: [PATCH] Added constraint to avoid orphan nodes

---
 01-paths-indexes.sql              | 1 +
 dump_and_restore/path-indexes.sql | 2 ++
 2 files changed, 3 insertions(+)

diff --git a/01-paths-indexes.sql b/01-paths-indexes.sql
index ad2bfde..9b6c2fc 100644
--- a/01-paths-indexes.sql
+++ b/01-paths-indexes.sql
@@ -37,6 +37,7 @@ ALTER TABLE node ADD COLUMN relative_path ltree GENERATED ALWAYS AS (path(parent
 CREATE INDEX file_rel_path_gist_idx ON node USING GIST(relative_path);
 
 ALTER TABLE node ADD CONSTRAINT unique_path UNIQUE (parent_path, name);
+ALTER TABLE node ADD CONSTRAINT fk_parent_path FOREIGN KEY (parent_path) REFERENCES node(path);
 
 -- Create root node
 INSERT INTO node (parent_path, parent_relative_path, name, type, creator_id, is_public) VALUES (NULL, NULL, '', 'container', '0', true);
diff --git a/dump_and_restore/path-indexes.sql b/dump_and_restore/path-indexes.sql
index b5f7e90..84270aa 100644
--- a/dump_and_restore/path-indexes.sql
+++ b/dump_and_restore/path-indexes.sql
@@ -4,3 +4,5 @@ CREATE UNIQUE INDEX file_path_idx ON node USING btree(path);
 
 ALTER TABLE node ADD COLUMN relative_path ltree GENERATED ALWAYS AS (path(parent_relative_path, node_id)) STORED;
 CREATE INDEX file_rel_path_gist_idx ON node USING GIST(relative_path);
+
+ALTER TABLE node ADD CONSTRAINT fk_parent_path FOREIGN KEY (parent_path) REFERENCES node(path);
-- 
GitLab