-module(datadog_query@query). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/datadog_query/query.gleam"). -export([new/3, by/2, with_function/2, aggregator_to_string/1, to_string/1]). -export_type([aggregator/0, 'query'/0]). -if(?OTP_RELEASE >= 27). -define(MODULEDOC(Str), -moduledoc(Str)). -define(DOC(Str), -doc(Str)). -else. -define(MODULEDOC(Str), -compile([])). -define(DOC(Str), -compile([])). -endif. -type aggregator() :: sum | avg | max | min | count | {percentile, integer()}. -type 'query'() :: {'query', aggregator(), binary(), binary(), list(binary()), list(binary())}. -file("src/datadog_query/query.gleam", 38). ?DOC( " Convenience constructor with sensible defaults: empty grouping and no\n" " postfix functions. `scope` may be `\"\"` to emit the empty `{}` scope or\n" " `filter.wildcard_all` to emit `{*}`.\n" ). -spec new(aggregator(), binary(), binary()) -> 'query'(). new(Aggregator, Metric, Scope) -> {'query', Aggregator, Metric, Scope, [], []}. -file("src/datadog_query/query.gleam", 43). ?DOC(" Returns a copy of `query` with `grouping` set.\n"). -spec by('query'(), list(binary())) -> 'query'(). by(Query, Grouping) -> {'query', erlang:element(2, Query), erlang:element(3, Query), erlang:element(4, Query), Grouping, erlang:element(6, Query)}. -file("src/datadog_query/query.gleam", 48). ?DOC(" Appends a postfix function (already-rendered) to the chain.\n"). -spec with_function('query'(), binary()) -> 'query'(). with_function(Query, Function) -> {'query', erlang:element(2, Query), erlang:element(3, Query), erlang:element(4, Query), erlang:element(5, Query), lists:append(erlang:element(6, Query), [Function])}. -file("src/datadog_query/query.gleam", 66). -spec aggregator_to_string(aggregator()) -> binary(). aggregator_to_string(Aggregator) -> case Aggregator of sum -> <<"sum"/utf8>>; avg -> <<"avg"/utf8>>; max -> <<"max"/utf8>>; min -> <<"min"/utf8>>; count -> <<"count"/utf8>>; {percentile, N} -> <<"p"/utf8, (erlang:integer_to_binary(N))/binary>> end. -file("src/datadog_query/query.gleam", 52). -spec to_string('query'()) -> binary(). to_string(Query) -> Prefix = <<(aggregator_to_string(erlang:element(2, Query)))/binary, ":"/utf8>>, Body = <<<<<<(erlang:element(3, Query))/binary, "{"/utf8>>/binary, (erlang:element(4, Query))/binary>>/binary, "}"/utf8>>, By_clause = case erlang:element(5, Query) of [] -> <<""/utf8>>; _ -> <<<<" by {"/utf8, (gleam@string:join(erlang:element(5, Query), <<","/utf8>>))/binary>>/binary, "}"/utf8>> end, Func_chain = case erlang:element(6, Query) of [] -> <<""/utf8>>; Fs -> <<"."/utf8, (gleam@string:join(Fs, <<"."/utf8>>))/binary>> end, <<<<<>/binary, By_clause/binary>>/binary, Func_chain/binary>>.