Fork of pgstore using sqlx instead of sql.
Go to file
Anton Lindstrom be8bed0dab Add testable example in README
This adds a testable example for the README to be able to make the user
experience for new users better.
2016-07-21 20:39:33 +00:00
examples Add testable example in README 2016-07-21 20:39:33 +00:00
.travis.yml Add testable example in README 2016-07-21 20:39:33 +00:00
Makefile Add testable example in README 2016-07-21 20:39:33 +00:00
README.md Add testable example in README 2016-07-21 20:39:33 +00:00
cleanup.go Refactor parts of the code and add more tests 2016-07-21 20:02:52 +00:00
cleanup_test.go Refactor parts of the code and add more tests 2016-07-21 20:02:52 +00:00
pgstore.go Refactor parts of the code and add more tests 2016-07-21 20:02:52 +00:00
pgstore_test.go Refactor parts of the code and add more tests 2016-07-21 20:02:52 +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

package examples

import (
	"log"
	"net/http"
	"time"

	"github.com/antonlindstrom/pgstore"
)

// ExampleHandler is an example that displays the usage of PGStore.
func ExampleHandler(w http.ResponseWriter, r *http.Request) {
	// Fetch new store.
	store, err := pgstore.NewPGStore("postgres://user:password@127.0.0.1:5432/database?sslmode=verify-full", []byte("secret-key"))
	if err != nil {
		log.Fatalf(err.Error())
	}
	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(r, "session-key")
	if err != nil {
		log.Fatalf(err.Error())
	}

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

	// Save.
	if err = session.Save(r, w); err != nil {
		log.Fatalf("Error saving session: %v", err)
	}

	// Delete session.
	session.Options.MaxAge = -1
	if err = session.Save(r, w); err != nil {
		log.Fatalf("Error saving session: %v", err)
	}
}

Breaking changes

  • 2016-07-19 - NewPGStore and NewPGStoreFromPool now returns (*PGStore, error)

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.