From 508c7c9b34a892d74d087f1ef5d54d16fa000551 Mon Sep 17 00:00:00 2001 From: Marc Coquand Date: Tue, 26 Dec 2023 15:33:05 -0600 Subject: JSON support type handling --- lib/ast_types.ml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'lib/ast_types.ml') diff --git a/lib/ast_types.ml b/lib/ast_types.ml index 7189db7..2a786f7 100644 --- a/lib/ast_types.ml +++ b/lib/ast_types.ml @@ -54,11 +54,11 @@ let rec print = function type ast_row_relation = | PColumn of Fixture.t - | CColumn of (string * string * (string list -> Fixture.t)) + | CColumn of (string * string * (Fixture.compiled list -> Fixture.t)) type ast_table_relation = | PTable of string * int * Fixture.t list - | CTable of (string * string) list * string * int * (string -> string list -> Fixture.t list) + | CTable of (string * string) list * string * int * (Fixture.compiled -> Fixture.compiled list -> Fixture.t list) (** parent (name, referenced id), row, child_name, fixture builder given a parent name and list of options *) (* TODO: Support multiple relations *) @@ -97,17 +97,17 @@ let extend_table_with_row table row = | CColumn (p,pr, f) -> (match table with | PTable (n, amount, l_p) -> CTable ([(p,pr)], n, amount, fun p' l -> - if p' = p then + if p' = Fixture.String p then f l :: l_p else [] ) | CTable (parents,c, amount, resolve_parents) -> - let new_resolver = fun requested_parent l -> - if requested_parent = p then + let new_resolver = fun (requested_parent : Fixture.compiled) l -> + if requested_parent = Fixture.String p then [f l] else - resolve_parents requested_parent l + resolve_parents requested_parent l in CTable ((p,pr) :: parents, c, amount, new_resolver) ) @@ -173,7 +173,7 @@ let rec resolve_fixtures tables name = | None -> failwith ("Could not find table " ^ name) and resolve_along_with_parents tables name amount parents c create_fixtures = let maybe_parents_fixtures = parents - |> List.map (fun (p,pr) -> (p,pr, resolve_fixtures tables p |> snd)) + |> List.map (fun (p,pr) -> (Fixture.String p,pr, resolve_fixtures tables p |> snd)) |> List.map (fun (p,pr,parent_fixtures) -> ( Fixture.find_entries_for_header parent_fixtures pr |> Result.map (fun ids -> create_fixtures p ids)) @@ -196,7 +196,7 @@ let%test "resolve_fixtures" = let (_, user_fixtures) = resolve_fixtures tables "user" in let (_, purchase_fixtures) = resolve_fixtures tables "posts" in match (user_fixtures,purchase_fixtures) with - | ([["id";_];[u;_]], [["user_id"]; [v]]) -> v = u + | ([[Fixture.String "id";_];[u;_]], [[Fixture.String "user_id"]; [v]]) -> v = u | _ -> false -- cgit v1.2.3