./ct_report/coverage/mongoose_graphql_muc_light_user_query.COVER.html

1 -module(mongoose_graphql_muc_light_user_query).
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]).
11 -import(mongoose_graphql_muc_light_helper, [make_room/1,
12 make_ok_user/1,
13 blocking_item_to_map/1,
14 null_to_undefined/1,
15 page_size_or_max_limit/2]).
16
17 execute(Ctx, _Obj, <<"listRooms">>, Args) ->
18 1 list_user_rooms(Ctx, Args);
19 execute(Ctx, _Obj, <<"listRoomUsers">>, Args) ->
20 5 list_room_users(Ctx, Args);
21 execute(Ctx, _Obj, <<"getRoomConfig">>, Args) ->
22 5 get_room_config(Ctx, Args);
23 execute(Ctx, _Obj, <<"getRoomMessages">>, Args) ->
24
:-(
get_room_messages(Ctx, Args);
25 execute(Ctx, _Obj, <<"getBlockingList">>, Args) ->
26 3 get_blocking_list(Ctx, Args).
27
28 -spec list_user_rooms(map(), map()) -> {ok, [{ok, jid:simple_bare_jid()}]}.
29 list_user_rooms(#{user := UserJID}, #{}) ->
30 1 {ok, Rooms} = mod_muc_light_api:get_user_rooms(UserJID),
31 1 {ok, [{ok, R} || R <- Rooms]}.
32
33 -spec list_room_users(map(), map()) -> {ok, [{ok, map()}]} | {error, resolver_error()}.
34 list_room_users(#{user := UserJID}, #{<<"room">> := RoomJID}) ->
35 5 case mod_muc_light_api:get_room_aff(RoomJID, UserJID) of
36 {ok, Affs} ->
37 2 {ok, [make_ok_user(A) || A <- Affs]};
38 Err ->
39 3 make_error(Err, #{room => RoomJID})
40 end.
41
42 -spec get_room_config(map(), map()) -> {ok, map()} | {error, resolver_error()}.
43 get_room_config(#{user := UserJID}, #{<<"room">> := RoomJID}) ->
44 5 case mod_muc_light_api:get_room_info(RoomJID, UserJID) of
45 {ok, Room} ->
46 2 {ok, make_room(Room)};
47 Err ->
48 3 make_error(Err, #{room => RoomJID})
49 end.
50
51 -spec get_room_messages(map(), map()) -> {ok, map()} | {error, resolver_error()}.
52 get_room_messages(#{user := UserJID}, #{<<"room">> := RoomJID, <<"pageSize">> := PageSize,
53 <<"before">> := Before}) ->
54
:-(
Before2 = null_to_undefined(Before),
55
:-(
PageSize2 = page_size_or_max_limit(PageSize, 50),
56
:-(
case mod_muc_light_api:get_room_messages(RoomJID, UserJID, PageSize2, Before2) of
57 {ok, Rows} ->
58
:-(
Maps = lists:map(fun mongoose_graphql_stanza_helper:row_to_map/1, Rows),
59
:-(
{ok, #{<<"stanzas">> => Maps, <<"limit">> => PageSize2}};
60 Err ->
61
:-(
make_error(Err, #{room => RoomJID})
62 end.
63
64 -spec get_blocking_list(map(), map()) -> {ok, [{ok, map()}]}.
65 get_blocking_list(#{user := UserJID}, #{}) ->
66 3 {ok, Items} = mod_muc_light_api:get_blocking_list(UserJID),
67 3 Items2 = lists:map(fun mongoose_graphql_muc_light_helper:blocking_item_to_map/1, Items),
68 3 {ok, Items2}.
Line Hits Source