./ct_report/coverage/mongoose_graphql_roster_admin_mutation.COVER.html

1 -module(mongoose_graphql_roster_admin_mutation).
2 -behaviour(mongoose_graphql).
3
4 -export([execute/4]).
5
6 -ignore_xref([execute/4]).
7
8 -include("../mongoose_graphql_types.hrl").
9
10 -import(mongoose_graphql_helper, [make_error/2, format_result/2, null_to_default/2]).
11
12 execute(_Ctx, _Obj, <<"addContact">>, Args) ->
13 10 add_contact(Args);
14 execute(_Ctx, _Obj, <<"addContacts">>, Args) ->
15 2 add_contacts(Args);
16 execute(_Ctx, _Obj, <<"subscription">>, Args) ->
17 6 subscription(Args);
18 execute(_Ctx, _Obj, <<"setMutualSubscription">>, Args) ->
19 4 set_mutual_subscription(Args);
20 execute(_Ctx, _Obj, <<"deleteContact">>, Args) ->
21 3 delete_contact(Args);
22 execute(_Ctx, _Obj, <<"deleteContacts">>, Args) ->
23 1 delete_contacts(Args);
24 execute(_Ctx, _Obj, <<"subscribeToAll">>, Args) ->
25 2 subscribe_to_all(Args);
26 execute(_Ctx, _Obj, <<"subscribeAllToAll">>, Args) ->
27 2 subscribe_all_to_all(Args).
28
29 -spec add_contact(mongoose_graphql:args()) -> mongoose_graphql_roster:binary_result().
30 add_contact(#{<<"user">> := UserJID, <<"contact">> := ContactJID,
31 <<"name">> := Name, <<"groups">> := Groups}) ->
32 10 mongoose_graphql_roster:add_contact(UserJID, ContactJID, Name, Groups).
33
34 -spec add_contacts(mongoose_graphql:args()) -> mongoose_graphql_roster:list_binary_result().
35 add_contacts(#{<<"user">> := UserJID, <<"contacts">> := Contacts}) ->
36 2 {ok, [mongoose_graphql_roster:add_contact(UserJID, ContactJID, Name, Groups)
37 2 || #{<<"jid">> := ContactJID, <<"name">> := Name, <<"groups">> := Groups} <- Contacts]}.
38
39 -spec subscription(mongoose_graphql:args()) -> mongoose_graphql_roster:binary_result().
40 subscription(#{<<"user">> := UserJID, <<"contact">> := ContactJID, <<"action">> := Action}) ->
41 6 Type = mongoose_graphql_roster:translate_sub_action(Action),
42 6 Res = mod_roster_api:subscription(UserJID, ContactJID, Type),
43 6 format_result(Res, #{user => jid:to_binary(UserJID),
44 contact => jid:to_binary(ContactJID)}).
45
46 -spec set_mutual_subscription(mongoose_graphql:args()) -> mongoose_graphql_roster:binary_result().
47 set_mutual_subscription(#{<<"userA">> := UserAJID, <<"userB">> := UserBJID,
48 <<"action">> := Action}) ->
49 4 Res = mod_roster_api:set_mutual_subscription(UserAJID, UserBJID, Action),
50 4 format_result(Res, #{userA => jid:to_binary(UserAJID),
51 userB => jid:to_binary(UserBJID)}).
52
53 -spec delete_contact(mongoose_graphql:args()) -> mongoose_graphql_roster:binary_result().
54 delete_contact(#{<<"user">> := UserJID, <<"contact">> := ContactJID}) ->
55 3 mongoose_graphql_roster:delete_contact(UserJID, ContactJID).
56
57 -spec delete_contacts(mongoose_graphql:args()) -> mongoose_graphql_roster:list_binary_result().
58 delete_contacts(#{<<"user">> := UserJID, <<"contacts">> := ContactJIDs}) ->
59 1 {ok, [mongoose_graphql_roster:delete_contact(UserJID, ContactJID)
60 1 || ContactJID <- ContactJIDs]}.
61
62 -spec subscribe_to_all(mongoose_graphql:args()) -> mongoose_graphql_roster:list_binary_result().
63 subscribe_to_all(#{<<"user">> := User, <<"contacts">> := Contacts}) ->
64 2 {ok, do_subscribe_to_all(User, Contacts)}.
65
66 -spec subscribe_all_to_all(mongoose_graphql:args()) -> mongoose_graphql_roster:list_binary_result().
67 subscribe_all_to_all(#{<<"contacts">> := Contacts}) ->
68 2 {ok, do_subscribe_all_to_all(Contacts)}.
69
70 -spec do_subscribe_to_all(mongoose_graphql_roster:contact_input(),
71 [mongoose_graphql_roster:contact_input()]) ->
72 [mongoose_graphql_roster:binary_result()].
73 do_subscribe_to_all(User, Contacts) ->
74 6 UserTuple = contact_input_map_to_tuple(User),
75 6 lists:map(fun(Contact) ->
76 10 ContactTuple = contact_input_map_to_tuple(Contact),
77 10 Res = mod_roster_api:subscribe_both(UserTuple, ContactTuple),
78 10 format_result(Res, #{user => jid:to_binary(element(1, UserTuple)),
79 contact => jid:to_binary(element(1, ContactTuple))})
80 end, Contacts).
81
82 -spec do_subscribe_all_to_all([mongoose_graphql_roster:contact_input()]) ->
83 [mongoose_graphql_roster:binary_result()].
84 do_subscribe_all_to_all([_]) ->
85 2 [];
86 do_subscribe_all_to_all([User | Contacts]) ->
87 4 do_subscribe_to_all(User, Contacts) ++ do_subscribe_all_to_all(Contacts).
88
89 contact_input_map_to_tuple(#{<<"jid">> := JID, <<"name">> := Name, <<"groups">> := Groups}) ->
90 16 {JID, Name, Groups}.
Line Hits Source