The monad-persist package

[ Tags: database, library ] [ Propose Tags ]

An mtl-style typeclass and transformer for persistent.


[Skip to Readme]

Properties

Versions 0.0.1.0, 0.0.1.1, 0.0.1.2, 0.0.1.3, 0.0.1.4, 0.0.2.0
Change log CHANGELOG.md
Dependencies base (>=4.8 && <5), exceptions (>=0.6), monad-control (>=1.0.0.0 && <2), monad-logger (>=0.3.10), mtl, persistent (>=2.5 && <3), text, transformers, transformers-base [details]
License ISC
Copyright 2017 CJ Affiliate by Conversant
Author Alexis King <lexi.lambda@gmail.com>
Maintainer Alexis King <lexi.lambda@gmail.com>
Category Database
Home page https://github.com/cjdev/monad-persist#readme
Bug tracker https://github.com/cjdev/monad-persist/issues
Source repository head: git clone https://github.com/cjdev/monad-persist
Uploaded Thu Nov 9 23:31:03 UTC 2017 by lexi_lambda
Updated Thu Nov 9 23:48:02 UTC 2017 by lexi_lambda to revision 1   [What is this?]
Distributions NixOS:0.0.2.0
Downloads 364 total (90 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2017-11-09 [all 1 reports]
Hackage Matrix CI

Modules

[Index]

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

For package maintainers and hackage trustees


Readme for monad-persist-0.0.2.0

[back to package description]

monad-persist Build Status

This module provides an mtl-style MonadPersist typeclass for persistent, as well as a PersistT monad transformer that implements it. This makes it easier to use persistent in an arbitrary monad transformer stack, rather than one that must be ReaderT over MonadIO.

import Control.Monad.Logger (runNoLoggingT)
import Control.Monad.Persist
import Data.Text (Text)
import Database.Persist.Sqlite (withSqliteConn)
import Database.Persist.TH

share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistLowerCase|
User
  name Text
  email Text

  UniqueEmail email

  deriving Eq Show
|]


ghci> runNoLoggingT $ withSqliteConn ":memory:" $ \conn -> flip runSqlPersistT conn $ do
        runMigration migrateAll
        insert_ User { userName = "Alyssa", userEmail = "alyssa@example.com" }
        users <- selectList [] []
        return (users :: [Entity User])

Migrating: CREATE TABLE "user"("id" INTEGER PRIMARY KEY,"name" VARCHAR NOT NULL,"email" VARCHAR NOT NULL,CONSTRAINT "unique_email" UNIQUE ("email"))
[Entity {entityKey = UserKey {unUserKey = SqlBackendKey {unSqlBackendKey = 1}}, entityVal = User {userName = "Alyssa", userEmail = "alyssa@example.com"}}]

For more information, see the documentation on Hackage.