From 54cd9839a08d3fee7e4521541c9381fac3f0d358 Mon Sep 17 00:00:00 2001 From: Marcos Magueta Date: Sat, 26 Sep 2026 23:01:54 -0300 Subject: dummy dml for testing --- lib/dml/executor.ml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 lib/dml/executor.ml (limited to 'lib/dml/executor.ml') diff --git a/lib/dml/executor.ml b/lib/dml/executor.ml new file mode 100644 index 0000000..fdc3c9f --- /dev/null +++ b/lib/dml/executor.ml @@ -0,0 +1,24 @@ +open Utilities.Result + +let value_of = function Ast.Str s -> Value.String s | Ast.Int n -> Value.Integer n +let map_of bindings = List.to_seq bindings |> Utilities.StringMap.of_seq + +let execute (ctx : Sublanguage_context.t) statement = + let* {RNT.branch; _} = ctx.session#state in + let relation = Drl.Executor.relation_path ("\\branch\\" ^ branch) in + let* message = + match statement with + | Ast.Define {target; heading; tuples} -> + let* path = relation target in + let tuples = + List.map (fun row -> List.map (fun (a, v) -> a, value_of v) row |> map_of) tuples + in + let* () = RNT.create ctx.kernel path (RNT.Relation {heading= map_of heading; tuples}) in + Ok ("Defined " ^ target) + | Ast.Drop {target} -> + let* path = relation target in + let* () = RNT.remove ctx.kernel path in + Ok ("Dropped " ^ target) + in + let* () = ctx.session#set_branch_to branch in + Ok (Sublanguage_types.Transition message) -- cgit v1.2.3