pop icon indicating copy to clipboard operation
pop copied to clipboard

Support for `TxOptions` when creating a transaction

Open dylangleason opened this issue 2 years ago • 2 comments

Description

After checking the documentation, it doesn't appear that pop supports creating a transaction with TxOptions. I ran into this discovery after finding a need to explicitly set the IsolationLevel in Postgres.

If this feature is supported, it would be nice if it were more clearly documented, since it would appear to differ from the standard APIs for configuring these options.

Steps to Reproduce the Problem

  1. Attempted to find a way to specify TxOptions using code discovery tools, autocompletion
  2. Looked in the documentation to see if there was a different way to specify said options.
  3. Couldn't find anything, so posted in the #buffalo slack channel.

Expected Behavior

When invoking either pop.Connection.NewTransaction or pop.ConnectionTransaction(fn), I would expect to be able to provide TxOptions.

Actual Behavior

When invoking either pop.Connection.NewTransaction or pop.ConnectionTransaction(fn), I am unable to provide TxOptions.

Info

  • I am using Pop through Buffalo
  • Buffalo version 1.17.3 via Docker image: gobuffalo/buffalo:v0.17.3-slim

dylangleason avatar Feb 16 '22 16:02 dylangleason

I found this in a merged PR. https://github.com/gobuffalo/pop/pull/594/files

However, this forces the programmer to deal with a lower level API, making it hard to integrate with the ORM functionality provided by pop.Connection.

Is there not a simpler way to specify transaction options?

dylangleason avatar Feb 17 '22 03:02 dylangleason

Looking at the following in connection.go, I see how one could easily expose the transaction options using the feature provided in #594. I will work on testing a solution.

dylangleason avatar Feb 17 '22 04:02 dylangleason