aboutsummaryrefslogtreecommitdiffstats
path: root/lib/management
diff options
context:
space:
mode:
authorMarcos Magueta <maguetamarcos@gmail.com>2026-03-08 20:36:51 -0300
committerMarcos Magueta <maguetamarcos@gmail.com>2026-03-08 20:36:51 -0300
commit88dc315e454a695426becf928aef46668f9db0dc (patch)
tree2f4cfa8487c80bbbb5976e37bc955351b70cafa4 /lib/management
parente10acd09faf53c636b653c4df034716545db5fab (diff)
downloadSakura-88dc315e454a695426becf928aef46668f9db0dc.tar.gz
Sakura-88dc315e454a695426becf928aef46668f9db0dc.zip
server
Diffstat (limited to '')
-rw-r--r--lib/management/database.ml8
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/management/database.ml b/lib/management/database.ml
index e4705e5..08e03b8 100644
--- a/lib/management/database.ml
+++ b/lib/management/database.ml
@@ -72,7 +72,13 @@ let has_relation db name =
(** Add a relation to the database *)
let add_relation db ~(relation : Relation.t) =
- let relation_hash = Option.get relation.hash in
+ let relation_hash = match relation.hash with
+ | Some h -> h
+ | None ->
+ let tree = Option.value relation.tree ~default:Merkle.empty in
+ Hashing.hash_relation ~name:relation.name ~schema:relation.schema ~tree
+ in
+ let relation = { relation with hash = Some relation_hash } in
let tree = Merkle.insert relation_hash db.tree in
let relations = RelationMap.add relation.name relation db.relations in
update_state db ~relations ~tree