./ct_report/coverage/mongoose_graphql_operations.COVER.html

1 -module(mongoose_graphql_operations).
2
3 -export([verify_operations/2]).
4
5 -include_lib("graphql/src/graphql_schema.hrl").
6 -include_lib("graphql/src/graphql_internal.hrl").
7
8 verify_operations(Ctx, #document{definitions = Definitions}) ->
9 34175 Method = maps:get(method, Ctx, undefined),
10 34175 [verify_op_type(Method, op_type(Ty)) || #op{id = Id, ty = Ty} <- Definitions,
11 34175 is_requested_op(Ctx, Id)],
12 34173 ok.
13
14 verify_op_type(Method, OpType) ->
15 34175 case is_supported(Method, OpType) of
16 true ->
17 34173 ok;
18 false ->
19 2 Error = {unsupported_operation, Method, OpType},
20 2 graphql_err:abort([], verify, Error)
21 end.
22
23 3 is_supported(Method, subscription) -> Method =:= sse;
24 34172 is_supported(Method, _) -> Method =/= sse.
25
26 34175 is_requested_op(#{operation_name := undefined}, _) -> true;
27
:-(
is_requested_op(#{operation_name := OpName}, {name, _, Name}) -> OpName =:= Name.
28
29 519 op_type(undefined) -> query;
30 33656 op_type({OpType, _}) -> OpType.
Line Hits Source