hasql-simple: A somewhat opinionated "simpler" API to hasql

[ bsd3, library, web ] [ Propose Tags ]

A somewhat opinionated "simpler" API to hasql

[Skip to Readme]
Dependencies aeson (>=1.1), base (>=4.7 && <5), bytestring (>=0.10), contravariant (>=1.4), hasql, text (>=1.2), time (>=1.6), unordered-containers (>=0.2), vector (>=0.12) [details]
License BSD-3-Clause
Copyright 2017 Alexander Thiemann <mail@athiemann.net>
Author Alexander Thiemann
Maintainer mail@athiemann.net
Category Web
Home page https://github.com/agrafix/hasql-simple#readme
Source repo head: git clone https://github.com/agrafix/hasql-simple
Uploaded by AlexanderThiemann at Sat Sep 23 21:18:11 UTC 2017
Distributions NixOS:
Downloads 237 total (14 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-09-23 [all 1 reports]
Hackage Matrix CI




Maintainer's Corner

For package maintainers and hackage trustees

Readme for hasql-simple-

[back to package description]



A somewhat opinionated "simpler" API to hasql. This allows to write code like:

import Hasql.Query
import Hasql.Simple
import qualified Hasql.Decoders as D

data NewUser
    = NewUser
    { nu_username :: !T.Text
    , nu_email :: !T.Text
    , nu_password :: !(Password 'PtHash)
    } deriving (Show)

createUserQ :: Query NewUser UserId
createUserQ =
    statement sql encoder decoder True
      sql =
          "INSERT INTO login (username, email, password) VALUES ($1, $2, $3) RETURNING id;"
      encoder =
          req nu_username
          <> req nu_email
          <> req nu_password
      decoder =
          D.singleRow dbDecVal

The -simple in the name is due to this type class approach beeing similar to the one found in postgresql-simple. All contributions (e.g. more instances and/or helper functions) are welcome, please send a PR.