f5f86fd237a7f629dbfaecb8fc3c7366e5d9dd80
Add testable example in README
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
andNewPGStoreFromPool
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.
Description
Languages
Go
90.2%
Makefile
9.8%