generated from tpl/purs
42 lines
1.1 KiB
Markdown
42 lines
1.1 KiB
Markdown
|
# 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:
|
|||
|
|
|||
|
```purescript
|
|||
|
userName = [query|
|
|||
|
SELECT first_name, last_name
|
|||
|
FROM users
|
|||
|
WHERE id = $1
|
|||
|
|]
|
|||
|
```
|
|||
|
|
|||
|
purspgpp will replace this by something like the following:
|
|||
|
|
|||
|
```purescript
|
|||
|
(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:
|
|||
|
|
|||
|
```powershell
|
|||
|
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 $_"
|
|||
|
}
|
|||
|
}
|
|||
|
```
|