package main import ( "database/sql" "log" _ "github.com/lib/pq" ) type Session struct { Id string UserId int64 } type User struct { Id int64 UserName string } type Store interface { GetSession(id string) (*Session, bool) GetUser(id int64) (*User, bool) } type PgStore struct { *sql.DB cache map[string]*Session } func NewPgStore() *PgSessionStore { db, err := sql.Open("postgres", "postgres://auth_master:pass@localhost/authdb") if err != nil { log.Panic(err) } return &PgSessionStore{db, make(map[string]*Session)} } func (store *PgSessionStore) Get(id string) (*Session, bool) { s, ok := store.cache[id] if !ok { row := store.QueryRow("SELECT id, user_id FROM session WHERE id = ?", id) var s Session row.Scan(&s. } return s, ok }