add CountUsers func to sqlstore

This commit is contained in:
Danny van Kooten 2018-09-12 09:11:50 +02:00
parent b860937107
commit 291d53fcaf
3 changed files with 13 additions and 1 deletions

View File

@ -72,7 +72,7 @@ func (api *API) LogoutHandler(w http.ResponseWriter, r *http.Request) error {
return respond(w, envelope{Data: true}) return respond(w, envelope{Data: true})
} }
/* middleware */ // Authorize is middleware that aborts the request if unauthorized
func (api *API) Authorize(next http.Handler) http.Handler { func (api *API) Authorize(next http.Handler) http.Handler {
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
// clear context from request after it is handled // clear context from request after it is handled

View File

@ -10,11 +10,13 @@ import (
// ErrNoResults is returned whenever a single-item query returns 0 results // ErrNoResults is returned whenever a single-item query returns 0 results
var ErrNoResults = sqlstore.ErrNoResults // ??? var ErrNoResults = sqlstore.ErrNoResults // ???
// Datastore represents a database implementations
type Datastore interface { type Datastore interface {
// users // users
GetUser(int64) (*models.User, error) GetUser(int64) (*models.User, error)
GetUserByEmail(string) (*models.User, error) GetUserByEmail(string) (*models.User, error)
SaveUser(*models.User) error SaveUser(*models.User) error
CountUsers() (int64, error)
// site stats // site stats
GetSiteStats(time.Time) (*models.SiteStats, error) GetSiteStats(time.Time) (*models.SiteStats, error)

View File

@ -2,6 +2,7 @@ package sqlstore
import ( import (
"database/sql" "database/sql"
"github.com/usefathom/fathom/pkg/models" "github.com/usefathom/fathom/pkg/models"
) )
@ -49,3 +50,12 @@ func (db *sqlstore) SaveUser(u *models.User) error {
u.ID, _ = result.LastInsertId() u.ID, _ = result.LastInsertId()
return nil return nil
} }
// CountUsers returns the number of users
func (db *sqlstore) CountUsers() (int64, error) {
var c int64
var sql = `SELECT COUNT(*) FROM users`
query := db.Rebind(sql)
err := db.Get(&c, query)
return c, err
}