Creates a transaction in the scope of a user.

Usage no npm install needed!

<script type="module">
  import lanetixAsUserTransaction from 'https://cdn.skypack.dev/@lanetix/as-user-transaction';


CircleCI codecov js-standard-style



Setup (v7.0.0+)

import { transaction } from '@lanetix/as-user-transaction'

const aUT = transaction({
  schema: `records,public`      // which schema(s) to query
  dbConfig: 'something'         // how to get to a DB; defaults to null in most cases
  timeout: '42s'                // optional parameter to set the statement timeout
  shouldRetry: (err) => false   // optional function which takes an error and indicates if the transaction should be retried

const asUserTransaction = (user, fn) => aUT({ user, writable: false }, fn)  // makes it a read only transaction
asUserTransaction.writable = (user, fn) => aUT({ user, writable: true }, fn)     // this is a write friendly transaction

export default asUserTransaction

Execution (v7.0.0+)

import asUserTransaction from './curried-as-user-transaction'

const user = {} // JWT in JSON form
const myResult = await asUserTransaction(user, (query, settings) => query('SELECT 1'))

console.log(myResult) // { rows: [] } # the PG JSON object


npm i -S @lanetix/as-user-transaction


This package uses debug, so you can log debugging things by setting DEBUG=lx-sql or DEBUG=lx-pg-pool to enable logs for the sql being executed and logs for the connection pool, respectively.