/sharedb-postgres

PostgreSQL adapter for ShareDB

Primary LanguageJavaScriptMIT LicenseMIT

sharedb-postgres

PostgreSQL database adapter for sharedb. This driver can be used both as a snapshot store and oplog.

Doesn't support queries (yet?).

Moderately experimental. (This drives Synaptograph's backend, and @nornagon hasn't noticed any issues so far.)

Requirements

Due to the fix to resolve high concurency issues Postgres 9.5+ is now required.

Migrating older versions

Older versions of this adaptor used the data type json. You will need to alter the data type prior to using if you are upgrading.

ALTER TABLE ops
  ALTER COLUMN operation
  SET DATA TYPE jsonb
  USING operation::jsonb;

ALTER TABLE snapshots
  ALTER COLUMN data
  SET DATA TYPE jsonb
  USING data::jsonb;

In addition, the snapshots table might have a NOT NULL constraint on the doc_type and data columns that will need to be dropped, since these are set to null when a ShareDB document is deleted via its .del() method.

ALTER TABLE snapshots
  ALTER COLUMN doc_type
  DROP NOT NULL;
  
ALTER TABLE snapshots
  ALTER COLUMN data
  DROP NOT NULL;

Usage

sharedb-postgres wraps native node-postgres, and it supports the same configuration options.

To instantiate a sharedb-postgres wrapper, invoke the module and pass in your PostgreSQL configuration as an argument or use environmental arguments.

For example using environmental arugments:

var db = require('sharedb-postgres')();
var backend = require('sharedb')({db: db})

Then executing via the command line

PGUSER=dbuser  PGPASSWORD=secretpassword PGHOST=database.server.com PGDATABASE=mydb PGPORT=5433 npm start

Example using an object

var db = require('sharedb-postgres')({host: 'localhost', database: 'mydb'});
var backend = require('sharedb')({db: db})

Error codes

PostgreSQL errors are passed back directly.

Changelog

Note that version 3.0.0 introduces breaking changes in how you specify connection parameters. See the changelog for more info.