module Galley.Effects.TeamFeatureStore where
import Data.Id
import Polysemy
import Wire.API.Team.Feature
data TeamFeatureStore m a where
GetDbFeature ::
FeatureSingleton cfg ->
TeamId ->
TeamFeatureStore m (DbFeature cfg)
GetDbFeatureMulti ::
FeatureSingleton cfg ->
[TeamId] ->
TeamFeatureStore m [(TeamId, DbFeature cfg)]
SetDbFeature ::
FeatureSingleton cfg ->
TeamId ->
LockableFeature cfg ->
TeamFeatureStore m ()
SetFeatureLockStatus ::
FeatureSingleton cfg ->
TeamId ->
LockStatus ->
TeamFeatureStore m ()
GetAllDbFeatures ::
TeamId ->
TeamFeatureStore m (AllFeatures DbFeature)
getDbFeature ::
(Member TeamFeatureStore r, IsFeatureConfig cfg) =>
TeamId ->
Sem r (DbFeature cfg)
getDbFeature :: forall (r :: EffectRow) cfg.
(Member TeamFeatureStore r, IsFeatureConfig cfg) =>
TeamId -> Sem r (DbFeature cfg)
getDbFeature TeamId
tid = TeamFeatureStore (Sem r) (DbFeature cfg) -> Sem r (DbFeature cfg)
forall (e :: Effect) (r :: EffectRow) a.
Member e r =>
e (Sem r) a -> Sem r a
send (FeatureSingleton cfg
-> TeamId -> TeamFeatureStore (Sem r) (DbFeature cfg)
forall {k} cfg (m :: k).
FeatureSingleton cfg
-> TeamId -> TeamFeatureStore m (DbFeature cfg)
GetDbFeature FeatureSingleton cfg
forall cfg. IsFeatureConfig cfg => FeatureSingleton cfg
featureSingleton TeamId
tid)
getDbFeatureMulti ::
(Member TeamFeatureStore r, IsFeatureConfig cfg) =>
[TeamId] ->
Sem r [(TeamId, DbFeature cfg)]
getDbFeatureMulti :: forall (r :: EffectRow) cfg.
(Member TeamFeatureStore r, IsFeatureConfig cfg) =>
[TeamId] -> Sem r [(TeamId, DbFeature cfg)]
getDbFeatureMulti [TeamId]
tids = TeamFeatureStore (Sem r) [(TeamId, DbFeature cfg)]
-> Sem r [(TeamId, DbFeature cfg)]
forall (e :: Effect) (r :: EffectRow) a.
Member e r =>
e (Sem r) a -> Sem r a
send (FeatureSingleton cfg
-> [TeamId] -> TeamFeatureStore (Sem r) [(TeamId, DbFeature cfg)]
forall {k} cfg (m :: k).
FeatureSingleton cfg
-> [TeamId] -> TeamFeatureStore m [(TeamId, DbFeature cfg)]
GetDbFeatureMulti FeatureSingleton cfg
forall cfg. IsFeatureConfig cfg => FeatureSingleton cfg
featureSingleton [TeamId]
tids)
setDbFeature ::
(Member TeamFeatureStore r, IsFeatureConfig cfg) =>
TeamId ->
LockableFeature cfg ->
Sem r ()
setDbFeature :: forall (r :: EffectRow) cfg.
(Member TeamFeatureStore r, IsFeatureConfig cfg) =>
TeamId -> LockableFeature cfg -> Sem r ()
setDbFeature TeamId
tid LockableFeature cfg
feat = TeamFeatureStore (Sem r) () -> Sem r ()
forall (e :: Effect) (r :: EffectRow) a.
Member e r =>
e (Sem r) a -> Sem r a
send (FeatureSingleton cfg
-> TeamId -> LockableFeature cfg -> TeamFeatureStore (Sem r) ()
forall {k} cfg (m :: k).
FeatureSingleton cfg
-> TeamId -> LockableFeature cfg -> TeamFeatureStore m ()
SetDbFeature FeatureSingleton cfg
forall cfg. IsFeatureConfig cfg => FeatureSingleton cfg
featureSingleton TeamId
tid LockableFeature cfg
feat)
setFeatureLockStatus ::
forall cfg r.
(Member TeamFeatureStore r, IsFeatureConfig cfg) =>
TeamId ->
LockStatus ->
Sem r ()
setFeatureLockStatus :: forall cfg (r :: EffectRow).
(Member TeamFeatureStore r, IsFeatureConfig cfg) =>
TeamId -> LockStatus -> Sem r ()
setFeatureLockStatus TeamId
tid LockStatus
lockStatus =
TeamFeatureStore (Sem r) () -> Sem r ()
forall (e :: Effect) (r :: EffectRow) a.
Member e r =>
e (Sem r) a -> Sem r a
send (FeatureSingleton cfg
-> TeamId -> LockStatus -> TeamFeatureStore (Sem r) ()
forall {k} cfg (m :: k).
FeatureSingleton cfg
-> TeamId -> LockStatus -> TeamFeatureStore m ()
SetFeatureLockStatus (forall cfg. IsFeatureConfig cfg => FeatureSingleton cfg
featureSingleton @cfg) TeamId
tid LockStatus
lockStatus)
getAllDbFeatures :: (Member TeamFeatureStore r) => TeamId -> Sem r (AllFeatures DbFeature)
getAllDbFeatures :: forall (r :: EffectRow).
Member TeamFeatureStore r =>
TeamId -> Sem r (AllFeatures DbFeature)
getAllDbFeatures TeamId
tid = TeamFeatureStore (Sem r) (AllFeatures DbFeature)
-> Sem r (AllFeatures DbFeature)
forall (e :: Effect) (r :: EffectRow) a.
Member e r =>
e (Sem r) a -> Sem r a
send (TeamId -> TeamFeatureStore (Sem r) (AllFeatures DbFeature)
forall {k} (m :: k).
TeamId -> TeamFeatureStore m (AllFeatures DbFeature)
GetAllDbFeatures TeamId
tid)