module Polysemy.Hasql.Interpreter.Reader where
import Polysemy.Db.Interpreter.Reader (interpretReaderStore)
import Sqel.Data.QuerySchema (emptyQuerySchema)
import Sqel.Data.TableSchema (TableSchema)
import Polysemy.Hasql.Effect.DbTable (DbTable)
import Polysemy.Hasql.Interpreter.Store (interpretQStoreDb)
interpretReaderDb ::
∀ d e r .
Member (DbTable d !! e) r =>
TableSchema d ->
Sem r d ->
InterpreterFor (Reader d !! e) r
interpretReaderDb :: forall d e (r :: EffectRow).
Member (DbTable d !! e) r =>
TableSchema d -> Sem r d -> InterpreterFor (Reader d !! e) r
interpretReaderDb TableSchema d
table Sem r d
initial =
forall (f :: * -> *) q d e (r :: EffectRow).
(ResultShape d (f d), Member (DbTable d !! e) r) =>
TableSchema d
-> QuerySchema q d -> InterpreterFor (QStore f q d !! e) r
interpretQStoreDb @Maybe TableSchema d
table forall {k} (a :: k). QuerySchema () a
emptyQuerySchema forall b c a. (b -> c) -> (a -> b) -> a -> c
.
forall d e (r :: EffectRow).
Member (QStore Maybe () d !! e) r =>
Sem r d -> InterpreterFor (Reader d !! e) r
interpretReaderStore (forall (e :: Effect) (r :: EffectRow) a. Sem r a -> Sem (e : r) a
raise Sem r d
initial) forall b c a. (b -> c) -> (a -> b) -> a -> c
.
forall (e2 :: Effect) (e1 :: Effect) (r :: EffectRow) a.
Sem (e1 : r) a -> Sem (e1 : e2 : r) a
raiseUnder