module Polysemy.Hasql.Data.InitDb where import Hasql.Connection (Connection) newtype ClientTag = ClientTag { ClientTag -> Text unInitTag :: Text } deriving stock (ClientTag -> ClientTag -> Bool forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a /= :: ClientTag -> ClientTag -> Bool $c/= :: ClientTag -> ClientTag -> Bool == :: ClientTag -> ClientTag -> Bool $c== :: ClientTag -> ClientTag -> Bool Eq, Int -> ClientTag -> ShowS [ClientTag] -> ShowS ClientTag -> String forall a. (Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a showList :: [ClientTag] -> ShowS $cshowList :: [ClientTag] -> ShowS show :: ClientTag -> String $cshow :: ClientTag -> String showsPrec :: Int -> ClientTag -> ShowS $cshowsPrec :: Int -> ClientTag -> ShowS Show, forall x. Rep ClientTag x -> ClientTag forall x. ClientTag -> Rep ClientTag x forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a $cto :: forall x. Rep ClientTag x -> ClientTag $cfrom :: forall x. ClientTag -> Rep ClientTag x Generic) deriving newtype (String -> ClientTag forall a. (String -> a) -> IsString a fromString :: String -> ClientTag $cfromString :: String -> ClientTag IsString, Eq ClientTag ClientTag -> ClientTag -> Bool ClientTag -> ClientTag -> Ordering ClientTag -> ClientTag -> ClientTag forall a. Eq a -> (a -> a -> Ordering) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> Bool) -> (a -> a -> a) -> (a -> a -> a) -> Ord a min :: ClientTag -> ClientTag -> ClientTag $cmin :: ClientTag -> ClientTag -> ClientTag max :: ClientTag -> ClientTag -> ClientTag $cmax :: ClientTag -> ClientTag -> ClientTag >= :: ClientTag -> ClientTag -> Bool $c>= :: ClientTag -> ClientTag -> Bool > :: ClientTag -> ClientTag -> Bool $c> :: ClientTag -> ClientTag -> Bool <= :: ClientTag -> ClientTag -> Bool $c<= :: ClientTag -> ClientTag -> Bool < :: ClientTag -> ClientTag -> Bool $c< :: ClientTag -> ClientTag -> Bool compare :: ClientTag -> ClientTag -> Ordering $ccompare :: ClientTag -> ClientTag -> Ordering Ord) data InitDb m = InitDb { forall (m :: * -> *). InitDb m -> ClientTag tag :: ClientTag, forall (m :: * -> *). InitDb m -> Bool once :: Bool, forall (m :: * -> *). InitDb m -> Connection -> m () thunk :: Connection -> m () } deriving stock (forall a. (forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a forall (m :: * -> *) x. Rep (InitDb m) x -> InitDb m forall (m :: * -> *) x. InitDb m -> Rep (InitDb m) x $cto :: forall (m :: * -> *) x. Rep (InitDb m) x -> InitDb m $cfrom :: forall (m :: * -> *) x. InitDb m -> Rep (InitDb m) x Generic) instance Applicative m => Default (InitDb m) where def :: InitDb m def = forall (m :: * -> *). ClientTag -> Bool -> (Connection -> m ()) -> InitDb m InitDb ClientTag "global" Bool True (forall a b. a -> b -> a const forall (f :: * -> *). Applicative f => f () unit) hoistInitDb :: (m () -> n ()) -> InitDb m -> InitDb n hoistInitDb :: forall (m :: * -> *) (n :: * -> *). (m () -> n ()) -> InitDb m -> InitDb n hoistInitDb m () -> n () f (InitDb ClientTag t Bool o Connection -> m () th) = forall (m :: * -> *). ClientTag -> Bool -> (Connection -> m ()) -> InitDb m InitDb ClientTag t Bool o (m () -> n () f forall b c a. (b -> c) -> (a -> b) -> a -> c . Connection -> m () th) raiseInitDb :: InitDb (Sem r) -> InitDb (Sem (e : r)) raiseInitDb :: forall (r :: EffectRow) (e :: Effect). InitDb (Sem r) -> InitDb (Sem (e : r)) raiseInitDb = forall (m :: * -> *) (n :: * -> *). (m () -> n ()) -> InitDb m -> InitDb n hoistInitDb forall (e :: Effect) (r :: EffectRow) a. Sem r a -> Sem (e : r) a raise