2017-01-25 16:11:35 +00:00
|
|
|
package datastore
|
|
|
|
|
|
|
|
import (
|
2018-04-24 08:28:23 +00:00
|
|
|
"github.com/usefathom/fathom/pkg/models"
|
2017-01-25 16:11:35 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
var u models.User
|
|
|
|
|
2017-01-25 19:01:02 +00:00
|
|
|
// GetUser retrieves user from datastore by its ID
|
2017-01-25 16:11:35 +00:00
|
|
|
func GetUser(id int64) (*models.User, error) {
|
2017-01-25 21:48:24 +00:00
|
|
|
stmt, err := DB.Prepare("SELECT id, email FROM users WHERE id = ? LIMIT 1")
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
2017-01-25 16:11:35 +00:00
|
|
|
err = stmt.QueryRow(id).Scan(&u.ID, &u.Email)
|
|
|
|
return &u, err
|
|
|
|
}
|
|
|
|
|
2017-01-25 19:01:02 +00:00
|
|
|
// GetUserByEmail retrieves user from datastore by its email
|
2017-01-25 16:11:35 +00:00
|
|
|
func GetUserByEmail(email string) (*models.User, error) {
|
2017-01-25 21:48:24 +00:00
|
|
|
stmt, err := DB.Prepare("SELECT id, email, password FROM users WHERE email = ? LIMIT 1")
|
|
|
|
if err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
|
2018-04-25 11:25:34 +00:00
|
|
|
err = stmt.QueryRow(email).Scan(&u.ID, &u.Email, &u.Password)
|
2017-01-25 16:11:35 +00:00
|
|
|
return &u, err
|
|
|
|
}
|
2018-04-25 11:25:34 +00:00
|
|
|
|
|
|
|
// SaveUser inserts the user model in the connected database
|
|
|
|
func SaveUser(u *models.User) error {
|
|
|
|
var sql = dbx.Rebind("INSERT INTO users(email, password) VALUES(?, ?)")
|
|
|
|
result, err := dbx.Exec(sql, u.Email, u.Password)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
u.ID, _ = result.LastInsertId()
|
|
|
|
return nil
|
|
|
|
}
|