62 lines
1.3 KiB
Go
Raw Normal View History

package sqlstore
2017-01-25 17:11:35 +01:00
import (
2018-04-25 13:45:21 +02:00
"database/sql"
2018-09-12 09:11:50 +02:00
"github.com/usefathom/fathom/pkg/models"
2017-01-25 17:11:35 +01:00
)
// GetUser retrieves user from datastore by its ID
func (db *sqlstore) GetUser(ID int64) (*models.User, error) {
2018-04-25 13:45:21 +02:00
u := &models.User{}
query := db.Rebind("SELECT * FROM users WHERE id = ? LIMIT 1")
err := db.Get(u, query, ID)
2018-04-25 13:45:21 +02:00
if err != nil {
2018-04-25 13:45:21 +02:00
if err == sql.ErrNoRows {
return nil, ErrNoResults
}
return nil, err
}
2018-04-25 13:45:21 +02:00
return u, err
2017-01-25 17:11:35 +01:00
}
// GetUserByEmail retrieves user from datastore by its email
func (db *sqlstore) GetUserByEmail(email string) (*models.User, error) {
2018-04-25 13:45:21 +02:00
u := &models.User{}
query := db.Rebind("SELECT * FROM users WHERE email = ? LIMIT 1")
err := db.Get(u, query, email)
if err != nil {
2018-04-25 13:45:21 +02:00
if err == sql.ErrNoRows {
return nil, ErrNoResults
}
return nil, err
}
2018-04-25 13:45:21 +02:00
return u, err
2017-01-25 17:11:35 +01:00
}
// SaveUser inserts the user model in the connected database
func (db *sqlstore) SaveUser(u *models.User) error {
var query = db.Rebind("INSERT INTO users(email, password) VALUES(?, ?)")
result, err := db.Exec(query, u.Email, u.Password)
if err != nil {
return err
}
u.ID, _ = result.LastInsertId()
return nil
}
2018-09-12 09:11:50 +02:00
// 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
}