Go to file
2017-03-21 11:00:56 +01:00
src/Database Add ToSQLValue Number instance 2017-03-21 11:00:56 +01:00
.editorconfig Extract from dinote 2016-12-22 19:12:38 +01:00
.gitignore Extract from dinote 2016-12-22 19:12:38 +01:00
bower.json Throw Eff exception instead of Partial exception when row structure does not match 2017-03-17 14:56:50 +01:00
LICENSE Add license 2016-12-24 13:34:58 +01:00
package.json Add pg dependency 2016-12-22 22:10:28 +01:00
purspgpp Support OS X 2017-01-17 12:20:52 +01:00
PurspgppExample.purs Add command line parameter to purspgpp 2016-12-22 20:28:47 +01:00
README.md Use Tuple in favor of × 2016-12-26 02:43:06 +01:00

purescript-postgresql-client

purescript-postgresql-client is a PostgreSQL client library for PureScript.

To use this library, you need to add pg as an npm dependency.

Included is a preprocessor, purspgpp, which finds embedded SQL queries in PureScript source files and infers their types. Such queries can be written as follows:

userName = [query|
    SELECT first_name, last_name
    FROM users
    WHERE id = $1
|]

purspgpp will replace this by something like the following:

(Query """
    SELECT first_name, last_name
    FROM users
    WHERE id = $1
""" :: Query (Tuple UUID Unit) (Tuple String (Tuple String Unit))

You can integrate purspgpp into your build system. For example, here is a PowerShell script that executes it for all .purspg files:

Get-ChildItem src -Recurse -Filter *.purspg `
| ForEach-Object {
    perl6 `
        bower_components/purescript-postgresql-client/purspgpp `
        "user=postgres password=lol123 dbname=nn" `
        "$($_.FullName)" `
        "$([IO.Path]::ChangeExtension($_.FullName, "purs"))"
    if (!$?) {
        Write-Error "Unable to preprocess $_"
    }
}