esqueleto-compat: Compatibility operators for Persistent and Esqueleto

[ bsd3, data, library ] [ Propose Tags ]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.0.2.0
Change log ChangeLog.md
Dependencies base (>=4.13 && <5), conduit, esqueleto, persistent, resourcet, transformers [details]
License BSD-3-Clause
Copyright 2023 Matt von Hagen
Author Matt von Hagen
Maintainer parsonsmatt@gmail.com
Category Data
Home page https://github.com/parsonsmatt/esqueleto-compat#readme
Bug tracker https://github.com/parsonsmatt/esqueleto-compat/issues
Source repo head: git clone https://github.com/parsonsmatt/esqueleto-compat
Uploaded by parsonsmatt at 2023-10-20T16:22:39Z
Distributions NixOS:0.0.2.0
Downloads 28 total (6 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2023-10-20 [all 1 reports]

Readme for esqueleto-compat-0.0.2.0

[back to package description]

esqueleto-compat

This library aims to provide compatibility operators that can allow esqueleto and persistent to be imported together.

Operators like ==. and >=. are defined as class members, and you can use them in the same module. Functions like update that are shared in both libraries are given an E suffix for the esqueleto version. And functions for operating on SqlExpr are given an _ suffix when the name would otherwise be a conflict.

Example:

import Database.Esqueleto.Compat

foo :: MonadIO m => TableId -> SqlPersistT m ()
foo tableKey = do
    -- Esqueleto:
    updateE $ \table -> do
        set [table ^. TableField =. val "Hello"] table
        where_ $ table ^. TableId ==. val tableKey

    -- Persistent
    update tableKey [TableField =. "Goodbye"]

    -- Esqueleto:
    select $ do
        pure $ exists_ $ do
            t <- from $ table @Table
            where_ $ t ^. TableField ==. val "Hello"

    -- Persistent
    exists [TableField ==. val "Hello"]