module Polysemy.Account.Api.Server.Account where
import Servant (ServerError, ServerT, (:<|>) ((:<|>)))
import Servant.API (NoContent (NoContent))
import Sqel (Uid (Uid))
import Polysemy.Account.Api.Effect.Authorize (Authorize)
import Polysemy.Account.Api.Routes (AccountApi)
import Polysemy.Account.Api.Server.AuthEndpoint (AuthEndpointParam, adminOnly1_, adminOnly2_, adminOnly_)
import Polysemy.Account.Api.Server.Error (accountsError)
import Polysemy.Account.Data.Account (Account)
import Polysemy.Account.Data.AccountsError (AccountsError)
import qualified Polysemy.Account.Effect.Accounts as Accounts
import Polysemy.Account.Effect.Accounts (Accounts)
getAccount ::
Members [Accounts i p !! AccountsError, Log, Stop ServerError] r =>
i ->
Sem r (Uid i (Account p))
getAccount :: forall i p (r :: EffectRow).
Members
'[Accounts i p !! AccountsError, Log, Stop ServerError] r =>
i -> Sem r (Uid i (Account p))
getAccount i
i =
forall i p (r :: EffectRow).
Member (Accounts i p) r =>
i -> Sem r (Uid i (Account p))
Accounts.byId i
i forall err (eff :: (* -> *) -> * -> *) (r :: EffectRow) a.
Member (Resumable err eff) r =>
Sem (eff : r) a -> (err -> Sem r a) -> Sem r a
!! forall (r :: EffectRow) a.
Members '[Log, Stop ServerError] r =>
AccountsError -> Sem r a
accountsError
getAccounts ::
Members [Accounts i p !! AccountsError, Log, Stop ServerError] r =>
Sem r [Uid i (Account p)]
getAccounts :: forall i p (r :: EffectRow).
Members
'[Accounts i p !! AccountsError, Log, Stop ServerError] r =>
Sem r [Uid i (Account p)]
getAccounts =
forall i p (r :: EffectRow).
Member (Accounts i p) r =>
Sem r [Uid i (Account p)]
Accounts.all forall err (eff :: (* -> *) -> * -> *) (r :: EffectRow) a.
Member (Resumable err eff) r =>
Sem (eff : r) a -> (err -> Sem r a) -> Sem r a
!! forall (r :: EffectRow) a.
Members '[Log, Stop ServerError] r =>
AccountsError -> Sem r a
accountsError
putAccount ::
Members [Accounts i p !! AccountsError, Log, Stop ServerError] r =>
Uid i (Account p) ->
Sem r NoContent
putAccount :: forall i p (r :: EffectRow).
Members
'[Accounts i p !! AccountsError, Log, Stop ServerError] r =>
Uid i (Account p) -> Sem r NoContent
putAccount Uid i (Account p)
account =
NoContent
NoContent forall (f :: * -> *) a b. Functor f => a -> f b -> f a
<$ forall i p (r :: EffectRow).
Member (Accounts i p) r =>
Uid i (Account p) -> Sem r ()
Accounts.update Uid i (Account p)
account forall err (eff :: (* -> *) -> * -> *) (r :: EffectRow) a.
Member (Resumable err eff) r =>
Sem (eff : r) a -> (err -> Sem r a) -> Sem r a
!! forall (r :: EffectRow) a.
Members '[Log, Stop ServerError] r =>
AccountsError -> Sem r a
accountsError
putAccount' ::
Members [Accounts i p !! AccountsError, Log, Stop ServerError] r =>
i ->
Account p ->
Sem r NoContent
putAccount' :: forall i p (r :: EffectRow).
Members
'[Accounts i p !! AccountsError, Log, Stop ServerError] r =>
i -> Account p -> Sem r NoContent
putAccount' i
i Account p
account =
NoContent
NoContent forall (f :: * -> *) a b. Functor f => a -> f b -> f a
<$ forall i p (r :: EffectRow).
Member (Accounts i p) r =>
Uid i (Account p) -> Sem r ()
Accounts.update (forall i a. i -> a -> Uid i a
Uid i
i Account p
account) forall err (eff :: (* -> *) -> * -> *) (r :: EffectRow) a.
Member (Resumable err eff) r =>
Sem (eff : r) a -> (err -> Sem r a) -> Sem r a
!! forall (r :: EffectRow) a.
Members '[Log, Stop ServerError] r =>
AccountsError -> Sem r a
accountsError
accountServer ::
∀ i param p r .
Show i =>
Show p =>
AuthEndpointParam param =>
Members [Authorize i param p, Accounts i p !! AccountsError, Log, Stop ServerError] r =>
ServerT (AccountApi i p) (Sem r)
accountServer :: forall i param p (r :: EffectRow).
(Show i, Show p, AuthEndpointParam param,
Members
'[Authorize i param p, Accounts i p !! AccountsError, Log,
Stop ServerError]
r) =>
ServerT (AccountApi i p) (Sem r)
accountServer =
forall i param p (r :: EffectRow) a b.
(Show (AuthedAccount i p), AuthEndpoint i param p r) =>
(a -> Sem r b) -> AuthResult (AuthedAccount i p) -> a -> Sem r b
adminOnly1_ forall i p (r :: EffectRow).
Members
'[Accounts i p !! AccountsError, Log, Stop ServerError] r =>
i -> Sem r (Uid i (Account p))
getAccount forall a b. a -> b -> a :<|> b
:<|> forall i param p (r :: EffectRow) a.
(Show (AuthedAccount i p), AuthEndpoint i param p r) =>
Sem r a -> AuthResult (AuthedAccount i p) -> Sem r a
adminOnly_ forall i p (r :: EffectRow).
Members
'[Accounts i p !! AccountsError, Log, Stop ServerError] r =>
Sem r [Uid i (Account p)]
getAccounts forall a b. a -> b -> a :<|> b
:<|> forall i param p (r :: EffectRow) a b.
(Show (AuthedAccount i p), AuthEndpoint i param p r) =>
(a -> Sem r b) -> AuthResult (AuthedAccount i p) -> a -> Sem r b
adminOnly1_ forall i p (r :: EffectRow).
Members
'[Accounts i p !! AccountsError, Log, Stop ServerError] r =>
Uid i (Account p) -> Sem r NoContent
putAccount forall a b. a -> b -> a :<|> b
:<|> forall i param p (r :: EffectRow) a b c.
(Show (AuthedAccount i p), AuthEndpoint i param p r) =>
(a -> b -> Sem r c)
-> AuthResult (AuthedAccount i p) -> a -> b -> Sem r c
adminOnly2_ forall i p (r :: EffectRow).
Members
'[Accounts i p !! AccountsError, Log, Stop ServerError] r =>
i -> Account p -> Sem r NoContent
putAccount'