MyNixOS website logo
Description

Monad classes for running queries with Persistent and Esqueleto.

This package introduces two classes: MonadSqlBackend for monadic contexts in which a SqlBackend is available, and MonadSqlBackend for contexts in which we can execute a SQL transaction.

Additionally, this package provides variants of query-running utilities from Persistent and Esqueleto which are concretized to use SqlBackend, generalized to a MonadSqlBackend m constraint rather than "ReaderT backend", and wrapped in checkpointCallStack so that exceptions will include call stacks.

persistent-sql-lifted

This package introduces two classes:

  • MonadSqlBackend m, for monadic contexts m in which a SqlBackend is available

  • MonadSqlBackend db m, for monadic contexts m in which we can execute a SQL transaction of type db a and get a result m a. (The type db should have an instance of `MonadSqlBackend.)

Additionally, this package provides variants of query-running utilities from persistent and esqueleto which are

  1. Concretized to use SqlBackend;
  2. Generalized to a MonadSqlBackend m constraint rather than ReaderT backend m;
  3. Wrapped in checkpointCallStack so that exceptions will include call stacks.

How to migrate from vanilla persistent/esqueleto:

  • Instead of SqlPersistT, use a MonadSqlBackend constraint.

  • Define an instance of MonadSqlTx for your application Monad that specifies how your application runs database transactions, e.g. by running runSqlPool.

  • Instead of calling runSqlPool directly from the rest of your application code, use the runSqlTx method from the MonadSqlTx class.

Metadata

Version

0.1.0.0

License

Platforms (77)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-freebsd
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64-windows
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows