Fork of pgstore using sqlx instead of sql.
Go to file
Anton Lindström 269ca2e7e5 Update tests to use TravisCI
This will remove the current .drone.yml which isn't used anymore, update the
Makefile target and move tests to using `t.Skip` instead of `t.Fatal` if no
database exists during tests. This is so it's possible to develop new tests
that may not require a database.
2015-09-08 14:21:07 +00:00
.travis.yml Update tests to use TravisCI 2015-09-08 14:21:07 +00:00
Makefile Update tests to use TravisCI 2015-09-08 14:21:07 +00:00
README.md feature: expired sessions can be deleted via a background goroutine. 2015-07-11 11:56:04 +08:00
cleanup.go added missing docs and fixed vet warns 2015-09-08 10:21:43 -03:00
cleanup_test.go Update tests to use TravisCI 2015-09-08 14:21:07 +00:00
pgstore.go added missing docs and fixed vet warns 2015-09-08 10:21:43 -03:00
pgstore_test.go Update tests to use TravisCI 2015-09-08 14:21:07 +00:00

README.md

pgstore

A session store backend for gorilla/sessions - src.

Installation

make get-deps

Documentation

Available on godoc.org.

See http://www.gorillatoolkit.org/pkg/sessions for full documentation on underlying interface.

Example

// Fetch new store.
store := NewPGStore("postgres://user:password@127.0.0.1:5432/database?sslmode=verify-full", []byte("secret-key"))
defer store.Close()
// Run a background goroutine to clean up expired sessions from the database.
defer store.StopCleanup(store.Cleanup(time.Minute * 5))

// Get a session.
session, err = store.Get(req, "session-key")
if err != nil {
    log.Error(err.Error())
}

// Add a value.
session.Values["foo"] = "bar"

// Save.
if err = sessions.Save(req, rsp); err != nil {
    t.Fatalf("Error saving session: %v", err)
}

// Delete session.
session.Options.MaxAge = -1
if err = sessions.Save(req, rsp); err != nil {
    t.Fatalf("Error saving session: %v", err)
}

Thanks

I've stolen, borrowed and gotten inspiration from the other backends available:

Thank you all for sharing your code!

What makes this backend different is that it's for Postgresql and uses the fine datamapper Gorp. Make sure you use a somewhat new codebase of Gorp as it now defaults to text for strings when it used to default to varchar 255. Varchar 255 is unfortunately too small.