diff options
| author | Marcos Magueta <maguetamarcos@gmail.com> | 2026-05-11 23:10:27 -0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-05-11 23:10:27 -0300 |
| commit | e3d3e20dfea253de291d5b31059cd55c0eaabf02 (patch) | |
| tree | 82cf0d46ea3768171c8a87630cab5011d1ccf2a1 /lib/ddl/executor.ml | |
| parent | 4fdf3392868c72ff4c33b70d165a177e97f2fece (diff) | |
| download | Sakura-e3d3e20dfea253de291d5b31059cd55c0eaabf02.tar.gz Sakura-e3d3e20dfea253de291d5b31059cd55c0eaabf02.zip | |
Multigroup unified reference for hierarchical access
Diffstat (limited to 'lib/ddl/executor.ml')
| -rw-r--r-- | lib/ddl/executor.ml | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/lib/ddl/executor.ml b/lib/ddl/executor.ml index 2a0c205..7800466 100644 --- a/lib/ddl/executor.ml +++ b/lib/ddl/executor.ml @@ -17,7 +17,7 @@ module Make (Storage : Management.Physical.S) = struct let wrap_manip r = Result.map_error (fun e -> ManipulationError e) r let get_rel db name = - Ops.get_relation db ~name |> Option.to_result ~none:(RelationNotFound name) + Ops.get_relation db name |> Option.to_result ~none:(RelationNotFound name) let convert_cardinality : Ast.cardinality_spec -> Conventions.Cardinality.t = function @@ -26,12 +26,12 @@ module Make (Storage : Management.Physical.S) = struct | Ast.Continuum -> Conventions.Cardinality.Continuum | Ast.ConstrainedFinite -> Conventions.Cardinality.ConstrainedFinite - let execute (storage : Storage.t) (db : Management.Database.t) - (stmt : Ast.statement) : (Management.Database.t * string, error) result = + let execute (storage : Storage.t) (db : Management.Multigroup.multigroup) + (stmt : Ast.statement) : (Management.Multigroup.multigroup * string, error) result = match stmt with - | Ast.CreateDatabase name -> - let* db = Ops.create_database storage ~name |> wrap_manip in - Ok (db, "Database created: " ^ name) + | Ast.CreateMultigroup name -> + let* db = Ops.create_multigroup storage name |> wrap_manip in + Ok (db, "Multigroup created: " ^ name) | Ast.CreateRelation { name; schema = schema_pairs } -> let schema = List.fold_left @@ -39,23 +39,27 @@ module Make (Storage : Management.Physical.S) = struct Schema.empty schema_pairs in let* db, _ = - Ops.create_relation storage db ~name ~schema |> wrap_manip + Ops.create_relation storage db name schema |> wrap_manip in Ok (db, "Relation created: " ^ name) | Ast.RetractRelation name -> - let* db = Ops.retract_relation storage db ~name |> wrap_manip in + let* db = Ops.retract_relation storage db name |> wrap_manip in Ok (db, "Relation retracted: " ^ name) | Ast.ClearRelation name -> let* rel = get_rel db name in let* db, _ = Ops.clear_relation storage db rel |> wrap_manip in Ok (db, "Relation cleared: " ^ name) | Ast.RegisterDomain { name; cardinality } -> - let domain = - Domain.make ~name + let domain: Relation.domain = + new Relation.domain + ~name ~generator:(fun _ -> Generator.Error "not enumerable via DDL") ~membership_criteria:(fun _ -> true) ~cardinality:(convert_cardinality cardinality) - ~compare:Stdlib.compare + ~schema:Schema.empty + ~provenance:None + ~lineage:None + ~constraints:None in let* db = Ops.register_domain storage db domain |> wrap_manip in Ok (db, "Domain registered: " ^ name) |
