From 919b7f1a81982533ff4ab33730c68313690c2b77 Mon Sep 17 00:00:00 2001 From: Marcos Magueta Date: Sun, 19 Jan 2025 21:50:01 -0300 Subject: cleanup and format --- lib/relation.ml | 163 ++++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 122 insertions(+), 41 deletions(-) (limited to 'lib/relation.ml') diff --git a/lib/relation.ml b/lib/relation.ml index d6a1b70..d27f2e2 100644 --- a/lib/relation.ml +++ b/lib/relation.ml @@ -1,14 +1,19 @@ module Protocol = struct open Protocol_conv_xml open Sexplib0.Sexp_conv - type tuple = - string list [@@deriving sexp, protocol ~driver:(module Xml_light)] - type relation = - { attribute_name: string; - attribute_type: string; - tuples: tuple } - [@@deriving sexp, protocol ~driver:(module Xml_light)] - type facts = relation list [@@deriving sexp, protocol ~driver:(module Xml_light)] + + type tuple = string list + [@@deriving sexp, protocol ~driver:(module Xml_light)] + + type relation = { + attribute_name : string; + attribute_type : string; + tuples : tuple; + } + [@@deriving sexp, protocol ~driver:(module Xml_light)] + + type facts = relation list + [@@deriving sexp, protocol ~driver:(module Xml_light)] end (* @@ -49,43 +54,119 @@ let test_write_and_retrieve() = [@@warning "-8-27"] (* Suppress pattern match incomplete warnings *) *) -let write_and_retrieve() = +let write_and_retrieve () = let open Disk in - let stream: Executor.history = [{state = Executor._EMPTY_SHA_HASH_; files = Executor.StringMap.empty}] in - let locations: Executor.locations = Executor.StringMap.empty in - let references = Executor.StringMap.empty in + let commit : Executor.commit = + { + state = Executor._EMPTY_SHA_HASH_; + files = Executor.StringMap.empty; + references = Executor.StringMap.empty; + } + in + let locations : Executor.locations = Executor.StringMap.empty in let relation_name = "user" in (* let entity_id, _ = Executor.StringMap.find relation_name references |> Executor.IntMap.max_binding in *) - let entity_id = 0L in - (* let references = - Executor.StringMap.empty - |> Executor.StringMap.add "user" (Executor.StringMap.empty - |> Executor.StringMap.add "entity_0" [handle11; handle12] - |> Executor.StringMap.add "entity_1" [handle21; handle22] - |> Executor.StringMap.add "entity_2" [handle31; handle32]) in *) + (* let references = + Executor.StringMap.empty + |> Executor.StringMap.add "user" (Executor.StringMap.empty + |> Executor.StringMap.add "entity_0" [handle11; handle12] + |> Executor.StringMap.add "entity_1" [handle21; handle22] + |> Executor.StringMap.add "entity_2" [handle31; handle32]) in *) let open Extensions.Result in - let command_write1: Command.t = - {kind = Command.WRITE; timestamp = 10.0; hash = ""; content = "Daisy"; filename = "user/first-name"} in - let+ ((stream, locations, references), Command.ComputedHash handle11) = Command.commit_and_perform stream locations references ~entity_id command_write1 in - let command_write2: Command.t = - {kind = Command.WRITE; timestamp = 10.0; hash = ""; content = "Blossom"; filename = "user/last-name"} in - let+ ((stream, locations, references), Command.ComputedHash handle12) = Command.commit_and_perform stream locations references ~entity_id command_write2 in + let command_write1 : Command.t = + { + kind = Command.WRITE; + timestamp = 10.0; + hash = ""; + content = "Daisy"; + entity_id = Some 0L; + filename = "user/first-name"; + } + in + let+ (commit, locations, references), Command.ComputedHash handle11 = + Command.commit_and_perform commit locations command_write1 + in + let command_write2 : Command.t = + { + kind = Command.WRITE; + timestamp = 10.0; + hash = ""; + content = "Blossom"; + entity_id = Some 0L; + filename = "user/last-name"; + } + in + let+ (commit, locations, references), Command.ComputedHash handle12 = + Command.commit_and_perform commit locations command_write2 + in let entity_id = 1L in - let command_write3: Command.t = - {kind = Command.WRITE; timestamp = 10.0; hash = ""; content = "Minnie"; filename = "user/first-name"} in - let+ ((stream, locations, references), Command.ComputedHash handle21) = Command.commit_and_perform stream locations references ~entity_id command_write3 in - let command_write4: Command.t = - {kind = Command.WRITE; timestamp = 10.0; hash = ""; content = "Mouse"; filename = "user/last-name"} in - let+ ((stream, locations, references), Command.ComputedHash handle22) = Command.commit_and_perform stream locations references ~entity_id command_write4 in + let command_write3 : Command.t = + { + kind = Command.WRITE; + timestamp = 10.0; + hash = ""; + content = "Minnie"; + entity_id = Some 1L; + filename = "user/first-name"; + } + in + let+ (commit, locations, references), Command.ComputedHash handle21 = + Command.commit_and_perform commit locations command_write3 + in + let command_write4 : Command.t = + { + kind = Command.WRITE; + timestamp = 10.0; + hash = ""; + content = "Mouse"; + entity_id = Some 1L; + filename = "user/last-name"; + } + in + let+ (commit, locations, references), Command.ComputedHash handle22 = + Command.commit_and_perform commit locations command_write4 + in let entity_id = 2L in - let command_write5: Command.t = - {kind = Command.WRITE; timestamp = 10.0; hash = ""; content = "Billie"; filename = "user/first-name"} in - let+ ((stream, locations, references), Command.ComputedHash handle31) = Command.commit_and_perform stream locations references ~entity_id command_write5 in - let command_write6: Command.t = - {kind = Command.WRITE; timestamp = 10.0; hash = ""; content = "Beans"; filename = "user/last-name"} in - let+ ((stream, locations, references), Command.ComputedHash handle32) = Command.commit_and_perform stream locations references ~entity_id command_write6 in - let command_read: Command.t = {kind = Command.READ; timestamp = 0.0; hash = ""; content = ""; filename = "user"} in - let+ (_, (Command.Read content as response)) = Command.commit_and_perform (List.tl stream) locations references ~entity_id command_read in + let command_write5 : Command.t = + { + kind = Command.WRITE; + timestamp = 10.0; + hash = ""; + content = "Billie"; + entity_id = Some 2L; + filename = "user/first-name"; + } + in + let+ (commit, locations, references), Command.ComputedHash handle31 = + Command.commit_and_perform commit locations command_write5 + in + let command_write6 : Command.t = + { + kind = Command.WRITE; + timestamp = 10.0; + hash = ""; + content = "Beans"; + entity_id = Some 2L; + filename = "user/last-name"; + } + in + let+ (commit, locations, references), Command.ComputedHash handle32 = + Command.commit_and_perform commit locations command_write6 + in + let command_read : Command.t = + { + kind = Command.READ; + timestamp = 0.0; + hash = ""; + content = ""; + entity_id = None; + filename = "user"; + } + in + let+ _, (Command.Read content as response) = + Command.commit_and_perform commit locations command_read + in print_endline (Command.show_return response); - Ok (stream, locations) - [@@warning "-8-27-26"] (* Suppress pattern match incomplete warnings *) + Ok (commit, locations) +[@@warning "-8-27-26"] +(* Suppress pattern match incomplete warnings *) -- cgit v1.2.3