gestalt-postgres

0.0.20 • Public • Published

gestalt-postgres

npm version

A PostgreSQL database adapter for the Gestalt framework

Example

import gestaltPostgres from 'gestalt-postgres';
 
const adapter = gestaltPostgres({
  databaseURL: 'postgres://localhost/your-db'
});

Query helper API

Gestalt-postgres will add a query helper, db, to the GraphQL query context. This helper has the following API:

  • exec(query: string, escapes?: Array<mixed>): Promise<Object> runs the query using node-postgres, and returns the result directly with no formatting.

  • count(query: string, escapes?): Promise<number> runs the query, parses the result and returns a promised number.

  • find(query: string, escapes?): Promise<Object>) runs the query, throws an error if there is not exactly one row selected, and then formats the result. Returns a promised object formatted {camelCaseColumnName: value}.

  • query(query: string, escapes?): Promise<Object[]>) runs the query, and returns an array of objects formatted {camelCaseColumnName: value}.

  • insert(table: string, object: Object): Promise<Object> converts camel case keys in the object argument to column names, and inserts their values into table. It returns the inserted row as a promised object formatted {camelCaseColumnName: value}.

  • update(table: string, conditions: Object, updates: Object): Promise<Object[]> converts camel case keys in the conditions and updates objects to column names. Updates rows matching conditions using columns and values from updates, and returns the updated rows as a promised array of objects formatted {camelCaseColumnName: value}.

  • deleteBy(table: string, conditions: Object): Promise<Object> converts camel case keys in the conditions argument to column names, and deletes matching rows. Returns the result from node-postgres directly with no formatting.

  • findBy(table: string, conditions: Object): Promise<Object> converts camel case keys in the conditions argument to column names, and runs a query selecting matching rows. Throws an error unless exactly one row is selected, and returns the result as a promised object formatted {camelCaseColumnName: value}.

  • queryBy(table: string, conditionsL Object): Promise<Object[]> converts camel case keys in the conditions argument to column names, and runs a query selecting matching rows. Returns the result as a promised array of objects formatted {camelCaseColumnName: value}.

When these methods take objects as arguments, values are escaped but column names are not. It is important to ensure that the keys in these objects are not unexamined user input to prevent SQL injection attacks.

Readme

Keywords

none

Package Sidebar

Install

npm i gestalt-postgres

Weekly Downloads

2

Version

0.0.20

License

MIT

Last publish

Collaborators

  • charlieschwabacher