Packages
caffeine_lang
0.0.7
6.3.1
6.3.0
6.2.2
6.2.1
6.2.0
6.1.2
6.1.1
6.1.0
6.0.0
5.6.0
5.5.0
5.4.4
5.4.3
5.4.2
5.4.1
5.4.0
5.3.0
5.2.0
5.1.1
5.1.0
5.0.12
5.0.11
5.0.10
5.0.8
5.0.7
5.0.6
5.0.5
5.0.4
5.0.1
5.0.0
4.10.0
4.9.0
4.8.3
4.8.2
4.8.1
4.8.0
4.7.9
4.7.8
4.7.7
4.7.6
4.7.5
4.6.7
4.6.6
4.6.5
4.6.4
4.6.3
4.6.2
4.6.0
4.5.1
4.5.0
4.4.4
4.4.3
4.4.1
4.4.0
4.3.7
4.3.6
3.0.6
3.0.5
3.0.4
3.0.3
3.0.2
3.0.1
3.0.0
2.0.5
2.0.4
2.0.3
2.0.2
2.0.1
2.0.0
1.0.2
1.0.1
0.1.0
0.0.24
0.0.23
0.0.22
0.0.21
0.0.20
0.0.19
0.0.18
0.0.17
0.0.16
0.0.15
0.0.14
0.0.13
0.0.12
0.0.11
0.0.10
0.0.9
0.0.8
0.0.7
0.0.6
0.0.5
0.0.4
0.0.2
0.0.1
A compiler for generating reliability artifacts from service expectation definitions.
Current section
Files
Jump to
Current section
Files
src/caffeine_lang@phase_4@slo_resolver.erl
-module(caffeine_lang@phase_4@slo_resolver).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/caffeine_lang/phase_4/slo_resolver.gleam").
-export([resolve_sli/2, resolve_slo/3, resolve_slos/1]).
-file("src/caffeine_lang/phase_4/slo_resolver.gleam", 57).
-spec resolve_sli(
gleam@dict:dict(binary(), binary()),
caffeine_lang@types@ast:sli_type()
) -> {ok, caffeine_lang@types@intermediate_representation:resolved_sli()} |
{error, binary()}.
resolve_sli(Filters, Sli_type) ->
Resolved_queries = begin
_pipe = erlang:element(4, Sli_type),
_pipe@1 = caffeine_lang@types@generic_dictionary:to_string_dict(_pipe),
_pipe@2 = maps:to_list(_pipe@1),
_pipe@4 = gleam@list:map(
_pipe@2,
fun(Pair) ->
{Metric_attribute, Template} = Pair,
Filter_names = maps:keys(Filters),
_pipe@3 = gleam@list:fold(
Filter_names,
Template,
fun(Acc, Name) ->
case gleam_stdlib:map_get(Filters, Name) of
{ok, Value} ->
gleam@string:replace(
Acc,
<<<<"$$"/utf8, Name/binary>>/binary,
"$$"/utf8>>,
Value
);
{error, _} ->
Acc
end
end
),
(fun(Processed) -> {Metric_attribute, Processed} end)(_pipe@3)
end
),
maps:from_list(_pipe@4)
end,
{ok, {resolved_sli, erlang:element(3, Sli_type), Resolved_queries}}.
-file("src/caffeine_lang/phase_4/slo_resolver.gleam", 31).
-spec resolve_slo(
caffeine_lang@types@ast:slo(),
binary(),
list(caffeine_lang@types@ast:sli_type())
) -> {ok, caffeine_lang@types@intermediate_representation:resolved_slo()} |
{error, binary()}.
resolve_slo(Slo, Team_name, Sli_types) ->
Sli_type@2 = case begin
_pipe = Sli_types,
gleam@list:find(
_pipe,
fun(Sli_type) ->
erlang:element(2, Sli_type) =:= erlang:element(4, Slo)
end
)
end of
{ok, Sli_type@1} -> Sli_type@1;
_assert_fail ->
erlang:error(#{gleam_error => let_assert,
message => <<"Pattern match failed, no pattern matched the value."/utf8>>,
file => <<?FILEPATH/utf8>>,
module => <<"caffeine_lang/phase_4/slo_resolver"/utf8>>,
function => <<"resolve_slo"/utf8>>,
line => 36,
value => _assert_fail,
start => 904,
'end' => 1008,
pattern_start => 915,
pattern_end => 927})
end,
Filters_dict = caffeine_lang@types@generic_dictionary:to_string_dict(
erlang:element(2, Slo)
),
gleam@result:'try'(
resolve_sli(Filters_dict, Sli_type@2),
fun(Resolve_sli) ->
{ok,
{resolved_slo,
erlang:element(6, Slo),
erlang:element(3, Slo),
erlang:element(5, Slo),
Team_name,
Resolve_sli}}
end
).
-file("src/caffeine_lang/phase_4/slo_resolver.gleam", 11).
-spec resolve_slos(caffeine_lang@types@ast:organization()) -> {ok,
list(caffeine_lang@types@intermediate_representation:resolved_slo())} |
{error, binary()}.
resolve_slos(Organization) ->
Sli_types = begin
_pipe = erlang:element(3, Organization),
_pipe@1 = gleam@list:flat_map(
_pipe,
fun(Service_definition) -> erlang:element(3, Service_definition) end
),
gleam@list:unique(_pipe@1)
end,
_pipe@2 = erlang:element(2, Organization),
_pipe@5 = gleam@list:map(
_pipe@2,
fun(Team) -> _pipe@3 = erlang:element(3, Team),
_pipe@4 = gleam@list:map(
_pipe@3,
fun(Slo) ->
resolve_slo(Slo, erlang:element(2, Team), Sli_types)
end
),
gleam@result:all(_pipe@4) end
),
_pipe@6 = gleam@result:all(_pipe@5),
gleam@result:map(_pipe@6, fun lists:append/1).