machinepack-postgresql
Version:
Structured Node.js bindings for connecting and running queries against a PostgreSQL database.
94 lines (74 loc) • 3.06 kB
JavaScript
module.exports = {
friendlyName: 'Begin transaction',
description: 'Begin a new database transaction on the provided connection.',
inputs: {
connection: {
friendlyName: 'Connection',
description: 'An active database connection.',
extendedDescription: 'The provided database connection instance must still be active. Only database ' +
'connection instances created by the `getConnection()` machine in this driver are supported.',
example: '===',
required: true
},
meta: {
friendlyName: 'Meta (custom)',
description: 'Additional stuff to pass to the driver.',
extendedDescription: 'This is reserved for custom driver-specific extensions. Please refer to the ' +
'documentation for the driver you are using for more specific information.',
example: '==='
}
},
exits: {
success: {
description: 'The transaction was successfully started.',
extendedDescription: 'Until it is committed, rolled back, or times out, subsequent queries run on this ' +
'connection will be transactional. They will not have any true effect on the database until the transaction ' +
'is committed, and will not affect queries made on other connections.',
outputVariableName: 'report',
outputDescription: 'The `meta` property is reserved for custom driver-specific extensions.',
outputExample: '==='
// example: {
// meta: '==='
// }
},
badConnection: {
friendlyName: 'Bad connection',
description: 'The provided connection is not valid or no longer active. Are you sure it was obtained by ' +
'calling this driver\'s `getConnection()` method?',
extendedDescription: 'Usually, this means the connection to the database was lost due to a logic error or ' +
'timing issue in userland code. In production, this can mean that the database became overwhelemed or was shut ' +
'off while some business logic was in progress.',
outputVariableName: 'report',
outputDescription: 'The `error` property is a JavaScript Error instance containing the raw error from the database. ' +
'The `meta` property is reserved for custom driver-specific extensions.',
outputExample: '==='
// example: {
// meta: '==='
// }
}
},
fn: function beginTransaction(inputs, exits) {
// Dependencies
var Pack = require('../');
// Since we're using `sendNativeQuery()` to access the underlying connection,
// we have confidence it will be validated before being used.
Pack.sendNativeQuery({
connection: inputs.connection,
nativeQuery: 'BEGIN'
}).switch({
error: function error(err) {
return exits.error(err);
},
badConnection: function badConnection() {
return exits.badConnection({
meta: inputs.meta
});
},
success: function success() {
return exits.success({
meta: inputs.meta
});
}
});
}
};