From 291d53fcaf6243a523069217395643517603c00c Mon Sep 17 00:00:00 2001 From: Danny van Kooten Date: Wed, 12 Sep 2018 09:11:50 +0200 Subject: [PATCH] add CountUsers func to sqlstore --- pkg/api/auth.go | 2 +- pkg/datastore/datastore.go | 2 ++ pkg/datastore/sqlstore/users.go | 10 ++++++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/pkg/api/auth.go b/pkg/api/auth.go index a565dfa..04526c1 100644 --- a/pkg/api/auth.go +++ b/pkg/api/auth.go @@ -72,7 +72,7 @@ func (api *API) LogoutHandler(w http.ResponseWriter, r *http.Request) error { 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 { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { // clear context from request after it is handled diff --git a/pkg/datastore/datastore.go b/pkg/datastore/datastore.go index 07cb5e3..afee1dc 100644 --- a/pkg/datastore/datastore.go +++ b/pkg/datastore/datastore.go @@ -10,11 +10,13 @@ import ( // ErrNoResults is returned whenever a single-item query returns 0 results var ErrNoResults = sqlstore.ErrNoResults // ??? +// Datastore represents a database implementations type Datastore interface { // users GetUser(int64) (*models.User, error) GetUserByEmail(string) (*models.User, error) SaveUser(*models.User) error + CountUsers() (int64, error) // site stats GetSiteStats(time.Time) (*models.SiteStats, error) diff --git a/pkg/datastore/sqlstore/users.go b/pkg/datastore/sqlstore/users.go index 3f9f53d..3c5dd6f 100644 --- a/pkg/datastore/sqlstore/users.go +++ b/pkg/datastore/sqlstore/users.go @@ -2,6 +2,7 @@ package sqlstore import ( "database/sql" + "github.com/usefathom/fathom/pkg/models" ) @@ -49,3 +50,12 @@ func (db *sqlstore) SaveUser(u *models.User) error { u.ID, _ = result.LastInsertId() 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 +}