Current section
Files
Jump to
Current section
Files
src/gauth@user@deletion.erl
-module(gauth@user@deletion).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch]).
-export([with_middleware/2, with_errorware/2, delete_user/2]).
-export_type([user_deletion_error/1, user_deletion_service/1]).
-type user_deletion_error(FBY) :: {no_such_user, FBY} | {generic, binary()}.
-type user_deletion_service(FBZ) :: {user_deletion_service,
fun((FBZ) -> {ok, nil} | {error, user_deletion_error(FBZ)}),
list(fun((FBZ) -> {ok, FBZ} | {error, user_deletion_error(FBZ)})),
list(fun((user_deletion_error(FBZ)) -> user_deletion_error(FBZ)))}.
-file("src\\gauth\\user\\deletion.gleam", 31).
-spec delete_user_middleware(
FCA,
list(fun((FCA) -> {ok, FCA} | {error, user_deletion_error(FCA)}))
) -> {ok, FCA} | {error, user_deletion_error(FCA)}.
delete_user_middleware(User, Middleware) ->
case Middleware of
[] ->
{ok, User};
[Middleware@1 | Rest] ->
case Middleware@1(User) of
{ok, User@1} ->
delete_user_middleware(User@1, Rest);
{error, Error} ->
{error, Error}
end
end.
-file("src\\gauth\\user\\deletion.gleam", 47).
-spec do_ware(FCI, list(fun((FCI) -> FCI))) -> FCI.
do_ware(Obj, Ware) ->
case Ware of
[] ->
Obj;
[Ware@1 | Rest] ->
do_ware(Ware@1(Obj), Rest)
end.
-file("src\\gauth\\user\\deletion.gleam", 54).
-spec with_middleware(
user_deletion_service(FCK),
fun((FCK) -> {ok, FCK} | {error, user_deletion_error(FCK)})
) -> user_deletion_service(FCK).
with_middleware(Service, Middleware) ->
{user_deletion_service,
erlang:element(2, Service),
[Middleware | erlang:element(3, Service)],
erlang:element(4, Service)}.
-file("src\\gauth\\user\\deletion.gleam", 66).
-spec with_errorware(
user_deletion_service(FCQ),
fun((user_deletion_error(FCQ)) -> user_deletion_error(FCQ))
) -> user_deletion_service(FCQ).
with_errorware(Service, Errorware) ->
{user_deletion_service,
erlang:element(2, Service),
erlang:element(3, Service),
[Errorware | erlang:element(4, Service)]}.
-file("src\\gauth\\user\\deletion.gleam", 76).
-spec delete_user(FCV, user_deletion_service(FCV)) -> {ok, nil} |
{error, user_deletion_error(FCV)}.
delete_user(User, Service) ->
case delete_user_middleware(User, erlang:element(3, Service)) of
{ok, User@1} ->
(erlang:element(2, Service))(User@1);
{error, Error} ->
{error, do_ware(Error, erlang:element(4, Service))}
end.