diff options
Diffstat (limited to 'lib/management/database.ml')
| -rw-r--r-- | lib/management/database.ml | 8 |
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 |
