pg-range

node-postgres plugin to parse range columns

Usage no npm install needed!

<script type="module">
  import pgRange from 'https://cdn.skypack.dev/pg-range';
</script>

README

node-pg-range

Range type support for node-postgres.

Usage

Install pg-range into your existing pg adapter:

var pg = require("pg");
require("pg-range").install(pg);

Then make a query that returns range objects!

client.query("SELECT range FROM table", function (result) {
  // result.range = {
  //   begin: Thu Mar 26 2014 17:57:02 GMT-0400 (EDT),
  //   end: Thu Mar 27 2014 17:57:02 GMT-0400 (EDT),
  //   bounds: '[)'
  // }
});

Or make a query that inserts range objects:

var Range = require("pg-range").Range;

client.query("INSERT INTO table VALUES ($1)", [Range(1, 3)]);

See the Postgres "Range Types" documentation for details.

Range objects

pg-range uses stRange.js, a JavaScript range library, to provide a Range class with useful methods, like contains and intersects. See the stRange.js API documentation.

Values of (PostgreSQL) type

  • int4range
  • int8range
  • numrange
  • tsrange
  • tstzrange
  • daterange

will be automatically parsed into instances of Range when the pg-range type adapter is installed.

Warning: When constructing range objects for use in queries, use the pg-range Range constructor as shown above, and not raw stRange.js Range objects. Raw stRange.js objects do not provide a toPostgres method, and will not properly serialize date ranges and empty ranges in queries!