Go to file
2016-12-25 02:12:00 +01:00
src/Database Add documentation comments 2016-12-24 13:38:36 +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 Bower metadata 2016-12-22 22:09:25 +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 Read OID–PureScript mappings from a configurable file in purspgpp 2016-12-25 02:12:00 +01:00
PurspgppExample.purs Add command line parameter to purspgpp 2016-12-22 20:28:47 +01:00
README.md Add readme 2016-12-24 13:34:27 +01:00

purescript-postgresql-client

purescript-postgresql-client is a PostgreSQL client library for PureScript. 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 (UUID × Unit) (String × 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 $_"
    }
}