aboutsummaryrefslogtreecommitdiffstats
path: root/lib/ddl
diff options
context:
space:
mode:
authorMarcos Magueta <maguetamarcos@gmail.com>2026-05-11 23:10:27 -0300
committerGitHub <noreply@github.com>2026-05-11 23:10:27 -0300
commite3d3e20dfea253de291d5b31059cd55c0eaabf02 (patch)
tree82cf0d46ea3768171c8a87630cab5011d1ccf2a1 /lib/ddl
parent4fdf3392868c72ff4c33b70d165a177e97f2fece (diff)
downloadSakura-e3d3e20dfea253de291d5b31059cd55c0eaabf02.tar.gz
Sakura-e3d3e20dfea253de291d5b31059cd55c0eaabf02.zip
Multigroup unified reference for hierarchical access
Diffstat (limited to 'lib/ddl')
-rw-r--r--lib/ddl/ast.ml2
-rw-r--r--lib/ddl/executor.ml26
2 files changed, 16 insertions, 12 deletions
diff --git a/lib/ddl/ast.ml b/lib/ddl/ast.ml
index ee39edb..e1e5bad 100644
--- a/lib/ddl/ast.ml
+++ b/lib/ddl/ast.ml
@@ -8,7 +8,7 @@ type cardinality_spec =
[@@deriving sexp]
type statement =
- | CreateDatabase of string
+ | CreateMultigroup of string
| CreateRelation of { name : string; schema : (string * string) list }
| RetractRelation of string
| ClearRelation of string
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)