Skip to content

A plugin to use gobuffalo/pop with buffalo

License

Notifications You must be signed in to change notification settings

gochigo/buffalo-pop

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GoDoc Go Report Card

github.com/gobuffalo/buffalo-pop

This is the home for all things that combine Buffalo and Pop.

Installation

go install github.com/gobuffalo/buffalo-pop/v3@latest

Or with SQLite 3 support:

go get -tags sqlite -v github.com/gobuffalo/buffalo-pop/v3

Transaction Middleware

The popmw.Transaction will wrap each request inside of a new database transaction and automatically commit, or rollback, based on whether or not an error was returned from an upstream buffalo.Handler or buffalo.MiddlewareFunc.

Usage

First you need to add the middleware to your application giving it access to your *pop.Connection, typically found at models.DB.

import "github.com/gobuffalo/buffalo-pop/v3/pop/popmw"

func App() *buffalo.App {
  // ...
  app.Use(popmw.Transaction(models.DB))
  // ...
}

Once added to the middleware stack for your application you can then use this transaction in upstream middleware or handlers.

func MyHandler(c buffalo.Context) error {
  // Get the DB connection from the context
  tx, ok := c.Value("tx").(*pop.Connection)
  if !ok {
    return errors.New("no transaction found")
  }
}

WARNING: DO NOT OPEN MULTIPLE TRANSACTIONS WITHIN EACH OTHER - doing so will cause many, many, many problems.

About

A plugin to use gobuffalo/pop with buffalo

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Go 98.4%
  • Makefile 1.6%