https://github.com/131/pg-aa
postgres wrapper with ES6 generator API (pg/co)
https://github.com/131/pg-aa
Last synced: 5 months ago
JSON representation
postgres wrapper with ES6 generator API (pg/co)
- Host: GitHub
- URL: https://github.com/131/pg-aa
- Owner: 131
- Created: 2016-05-07T13:36:59.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2024-05-22T13:05:37.000Z (about 2 years ago)
- Last Synced: 2025-03-05T03:18:05.911Z (over 1 year ago)
- Language: JavaScript
- Size: 59.6 KB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
A ES7 wrapper for node-postgres.
[](https://github.com/131/pg-aa/actions/workflows/test.yml)
[](https://coveralls.io/github/131/pg-aa?branch=master)
[](https://www.npmjs.com/package/pg-aa)
[](https://www.npmjs.com/package/eslint-plugin-ivs)
# Example
```
var pg = require('pg-aa');
var SQL = require('sql-template');
var conString = "postgres://postgres:1234@localhost/postgres";
var client = new pg(conString);
(async function(){
var line;
line = await client.row(SQL`SELECT * FROM users WHERE id=${22}`);
// same line = await client.row('users', {id:22});
if(!line)
throw "Missing user";
await client.insert("users_log", {
user_id : 22,
time : Date.now(),
});
})();
```
# API
## await client.select(table [,condition = true [, columns = * [, extra ]]])
## await client.select(PG_TEMPLATED_QUERY)
Select stuffs ? what did you expect ...
```
var line = await client.select(SQL`SELECT * FROM users WHERE parentId=${22}`);
=> [ {id:1, name : "John doe", parentId:22}, {id:2, name : "Jane doe", parentId:22}]
```
## await client.row(table [,condition = true [, columns = * [, extra = LIMIT 1 ]]])
## await client.row(PG_TEMPLATED_QUERY)
return a single row, and a falsy value if no match (see example below)
```
var line = await client.row(SQL`SELECT * FROM users WHERE id=${22}`);
=> { id : 22, name : "John doe" }
```
## await client.col(table [,condition = true [, column = * [, extra = '']]])
## await client.col(PG_TEMPLATED_QUERY)
return an array of values from a single column
```
var line = await client.col('users', true, 'user_id');
=> [22, 1, 25, 55]
```
## await client.insert(table, values)
Insert values in table...
```
await client.insert("users_log", {
user_id : 22,
time : Date.now(),
});
```
## await client.update(table, values[, where])
Update values in a table...
```
await client.insert("users_log", {
time : Date.now(),
}, {
user_id : 22,
});
```
## await client.delete(table[, where])
Delete rows in a table...
```
await client.delete("users_log", "log_weight < 51");
```
## await client.replace(table, values[, where])
Replace values in a table... (lock select using * postgresql FOR UPDATE)
```
await client.replace("users_log", {
time : Date.now(),
}, {
user_id : 22,
});
```
## await client.query(queryString);
```
await client.query("TRUNCATE TABLE donttruncatemeplznooooo");
```
## await client.truncate(tableName);
```
await client.truncate("donttruncatemeplznooooo");
```
## await client.begin() => transaction token
## await client.commit(transaction token)
## await client.rollback(transaction token)
Start/commit/rollback a transaction (or a savepoint, if nested)
```
var transaction_token = await client.begin();
if(Math.random() < 0.5)
await client.commit(transaction_token);
else await client.rollback(transaction_token);
```
# Recommended template string engine
* [sql-template](https://github.com/131/sql-template)
# Not invented here / key features
* Supported nested transaction (through savepoints)
* Sane API = sane implementation (whole lib is < 150 lines)
# Credits
* [131](https://github.com/131)