1 |
|
-module(mongoose_graphql_domain_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 |
|
execute(_Ctx, admin, <<"addDomain">>, #{<<"domain">> := Domain, <<"hostType">> := HostType}) -> |
11 |
5 |
case mongoose_domain_api:insert_domain(Domain, HostType) of |
12 |
|
ok -> |
13 |
2 |
{ok, #domain{domain = Domain, host_type = HostType}}; |
14 |
|
{error, Error} -> |
15 |
3 |
error_handler(Error, Domain, HostType) |
16 |
|
end; |
17 |
|
execute(_Ctx, admin, <<"removeDomain">>, #{<<"domain">> := Domain, <<"hostType">> := HostType}) -> |
18 |
3 |
case mongoose_domain_api:delete_domain(Domain, HostType) of |
19 |
|
ok -> |
20 |
2 |
DomainObj = #domain{domain = Domain, host_type = HostType}, |
21 |
2 |
{ok, #{<<"domain">> => DomainObj, <<"msg">> => <<"Domain removed!">>}}; |
22 |
|
{error, Error} -> |
23 |
1 |
error_handler(Error, Domain, HostType) |
24 |
|
end; |
25 |
|
execute(_Ctx, admin, <<"enableDomain">>, #{<<"domain">> := Domain}) -> |
26 |
2 |
case mongoose_domain_api:enable_domain(Domain) of |
27 |
|
ok -> |
28 |
1 |
{ok, #domain{enabled = true, domain = Domain}}; |
29 |
|
{error, Error} -> |
30 |
1 |
error_handler(Error, Domain, <<"">>) |
31 |
|
end; |
32 |
|
execute(_Ctx, admin, <<"disableDomain">>, #{<<"domain">> := Domain}) -> |
33 |
2 |
case mongoose_domain_api:disable_domain(Domain) of |
34 |
|
ok -> |
35 |
1 |
{ok, #domain{enabled = false, domain = Domain}}; |
36 |
|
{error, Error} -> |
37 |
1 |
error_handler(Error, Domain, <<"">>) |
38 |
|
end. |
39 |
|
|
40 |
|
error_handler(Error, Domain, HostType) -> |
41 |
6 |
case {error, Error} of |
42 |
|
{error, service_disabled} -> |
43 |
:-( |
{error, service_disabled}; |
44 |
|
{error, duplicate} -> |
45 |
1 |
{error, #{what => domain_duplicate, domain => Domain}}; |
46 |
|
{error, not_found} -> |
47 |
2 |
{error, #{what => domain_not_found, domain => Domain}}; |
48 |
|
{error, static} -> |
49 |
1 |
{error, #{what => domain_static, domain => Domain}}; |
50 |
|
{error, wrong_host_type} -> |
51 |
1 |
{error, #{what => wrong_host_type, host_type => HostType}}; |
52 |
|
{error, unknown_host_type} -> |
53 |
1 |
{error, #{what => unknown_host_type, host_type => HostType}}; |
54 |
|
{error, {db_error, Term}} -> |
55 |
:-( |
{error, #{what => db_error, term => Term}} |
56 |
|
end. |