1.13.1 • Published 9 years ago

pg-co v1.13.1

Weekly downloads
2
License
ISC
Repository
github
Last release
9 years ago

A ES6 wrapper (co & generator based - async/await style) for node-postgres.

Build Status Coverage Status NPM version

Example

var pg  = require('pg-co');
var SQL = require('sql-template');

var conString = "postgres://postgres:1234@localhost/postgres";

var client = new pg(conString);

co(function*(){
  var line;
  line = yield client.row(SQL`SELECT * FROM users WHERE id=${22}`);
  // same line = yield client.row('users', {id:22});
  if(!line)
    throw "Missing user";

  yield 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 = yield 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 = yield 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 = yield client.col('users', true, 'user_id');
=> [22, 1, 25, 55]

await client.insert(table, values)

Insert values in table...

yield client.insert("users_log", {
  user_id : 22,
  time    : Date.now(),
});

await client.update(table, values, where)

Update values in a table...

yield client.insert("users_log", {
  time    : Date.now(),
}, {
  user_id : 22,
});

await client.delete(table, where)

Delete rows in a table...

yield client.delete("users_log", "log_weight < 51");

await client.replace(table, values, where)

Replace values in a table... (lock select using * postgresql FOR UPDATE)

yield client.replace("users_log", {
  time    : Date.now(),
}, {
  user_id : 22,
});

await client.query(queryString);

yield client.query("TRUNCATE TABLE donttruncatemeplznooooo");

await client.truncate(tableName);

yield 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

Not invented here / key features

  • Supported nested transaction (through savepoints)
  • Sane API = sane implementation (whole lib is < 150 lines)

Credits

1.13.1

9 years ago

1.13.0

9 years ago

1.12.1

9 years ago

1.12.0

9 years ago

1.11.1

9 years ago

1.11.0

9 years ago

1.10.0

9 years ago

1.9.8

9 years ago

1.9.7

9 years ago

1.9.6

9 years ago

1.9.5

9 years ago

1.9.4

9 years ago

1.9.3

9 years ago

1.9.2

9 years ago

1.9.1

9 years ago

1.9.0

9 years ago

1.8.1

9 years ago

1.8.0

9 years ago

1.7.3

9 years ago

1.7.2

9 years ago

1.7.1

9 years ago

1.7.0

10 years ago

1.6.0

10 years ago

1.5.0

10 years ago

1.4.0

10 years ago

1.3.1

10 years ago

1.3.0

10 years ago

1.2.0

10 years ago

1.1.0

10 years ago

1.0.0

10 years ago