napkin-runtime-2.0.0
Safe HaskellNone
LanguageGHC2024

Napkin.Run.Effects.Interpreters.SqlRead

Synopsis

Documentation

type SqlReadIO (m :: Type -> Type) bk = (SqlIO m, MonadNapkin bk m, Backend bk) #

A multi-backend interpreter that uses our previous Command typeclass machinery to dispatch to different backends. This is an easy way to write a single interpreter that works for all backends, given that we already have the typeclass based machinery in place.

Alternatively, we could get rid of the command system and implement either individual interpreters for each backend, or pass in backend-specific capability dictionaries/records or something.

runSqlReadIO :: forall (m :: Type -> Type) bk a (r :: EffectRow). (SqlReadIO m bk, Members '[FatalError :: (Type -> Type) -> Type -> Type, Embed m] r) => BackendConn bk -> Sem ((SqlRead bk :: (Type -> Type) -> Type -> Type) ': r) a -> Sem r a #