-module(caffeine_lang@phase_1@parser@specification@unresolved_query_template_specification). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/caffeine_lang/phase_1/parser/specification/unresolved_query_template_specification.gleam"). -export([parse_unresolved_query_template_types_specification/1]). -if(?OTP_RELEASE >= 27). -define(MODULEDOC(Str), -moduledoc(Str)). -define(DOC(Str), -doc(Str)). -else. -define(MODULEDOC(Str), -compile([])). -define(DOC(Str), -compile([])). -endif. -file("src/caffeine_lang/phase_1/parser/specification/unresolved_query_template_specification.gleam", 23). ?DOC(" Parses a single unresolved query template type.\n"). -spec parse_query_template_type( glaml:node_(), gleam@dict:dict(binary(), binary()) ) -> {ok, caffeine_lang@types@unresolved@unresolved_query_template_type:query_template_type()} | {error, binary()}. parse_query_template_type(Type_node, _) -> gleam@result:'try'( caffeine_lang@phase_1@parser@utils@glaml_helpers:extract_string_from_node( Type_node, <<"name"/utf8>> ), fun(Name) -> gleam@result:'try'( caffeine_lang@phase_1@parser@utils@glaml_helpers:extract_string_list_from_node( Type_node, <<"specification_of_query_templates"/utf8>> ), fun(Specification_of_query_templates) -> gleam@result:'try'( caffeine_lang@phase_1@parser@utils@glaml_helpers:extract_string_from_node( Type_node, <<"query"/utf8>> ), fun(Query_string) -> gleam@result:'try'(case Query_string of <<""/utf8>> -> {error, <<"Empty query string is not allowed"/utf8>>}; _ -> {ok, Query_string} end, fun(Query_string@1) -> gleam@result:'try'( caffeine_lang@cql@parser:parse_expr( Query_string@1 ), fun(Query) -> {ok, {query_template_type, Name, Specification_of_query_templates, Query}} end ) end) end ) end ) end ). -file("src/caffeine_lang/phase_1/parser/specification/unresolved_query_template_specification.gleam", 10). ?DOC(" Given a specification file, returns a list of unresolved query template types.\n"). -spec parse_unresolved_query_template_types_specification(binary()) -> {ok, list(caffeine_lang@types@unresolved@unresolved_query_template_type:query_template_type())} | {error, binary()}. parse_unresolved_query_template_types_specification(File_path) -> caffeine_lang@phase_1@parser@utils@glaml_helpers:parse_specification( File_path, maps:new(), fun parse_query_template_type/2, <<"query_template_types"/utf8>> ).