Go to file
2017-01-07 15:30:31 +01:00
src/Database Add ByteString support 2017-01-07 15:30:31 +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 Add ByteString support 2017-01-07 15:30:31 +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 Add return types more consistently 2016-12-26 02:45:16 +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 $_"
    }
}