gestalt-postgres
A PostgreSQL database adapter for the Gestalt framework
Example
; const adapter = ;
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 theobject
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 theconditions
andupdates
objects to column names. Updates rows matchingconditions
using columns and values fromupdates
, 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 theconditions
argument to column names, and deletes matching rows. Returns the result fromnode-postgres
directly with no formatting. -
findBy(table: string, conditions: Object): Promise<Object>
converts camel case keys in theconditions
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 theconditions
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.