2020-03-04 10:29:00 +00:00
|
|
|
package users
|
|
|
|
|
|
|
|
import (
|
2020-03-05 05:38:56 +00:00
|
|
|
"errors"
|
2020-03-04 10:29:00 +00:00
|
|
|
"github.com/hunterlong/statping/database"
|
|
|
|
"github.com/hunterlong/statping/utils"
|
|
|
|
"time"
|
|
|
|
)
|
|
|
|
|
2020-03-04 14:20:47 +00:00
|
|
|
func DB() database.Database {
|
|
|
|
return database.DB().Model(&User{})
|
|
|
|
}
|
|
|
|
|
2020-03-04 10:29:00 +00:00
|
|
|
func Find(id int64) (*User, error) {
|
|
|
|
var user *User
|
2020-03-05 05:38:56 +00:00
|
|
|
db := DB().Where("id = ?", id).Find(user)
|
2020-03-04 10:29:00 +00:00
|
|
|
return user, db.Error()
|
|
|
|
}
|
|
|
|
|
|
|
|
func FindByUsername(username string) (*User, error) {
|
2020-03-05 05:38:56 +00:00
|
|
|
var user *User
|
|
|
|
db := DB().Where("username = ?", username).Find(user)
|
|
|
|
return user, db.Error()
|
2020-03-04 10:29:00 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func All() []*User {
|
|
|
|
var users []*User
|
2020-03-04 14:20:47 +00:00
|
|
|
DB().Find(&users)
|
2020-03-04 10:29:00 +00:00
|
|
|
return users
|
|
|
|
}
|
|
|
|
|
|
|
|
func (u *User) Create() error {
|
|
|
|
u.CreatedAt = time.Now().UTC()
|
2020-03-05 05:38:56 +00:00
|
|
|
if u.Password == "" {
|
|
|
|
return errors.New("did not supply user password")
|
|
|
|
}
|
2020-03-04 10:29:00 +00:00
|
|
|
u.Password = utils.HashPassword(u.Password)
|
|
|
|
u.ApiKey = utils.NewSHA1Hash(5)
|
|
|
|
u.ApiSecret = utils.NewSHA1Hash(10)
|
|
|
|
|
2020-03-05 17:11:15 +00:00
|
|
|
db := DB().Create(&u)
|
2020-03-04 10:29:00 +00:00
|
|
|
return db.Error()
|
|
|
|
}
|
|
|
|
|
|
|
|
func (u *User) Update() error {
|
|
|
|
u.ApiKey = utils.NewSHA1Hash(5)
|
|
|
|
u.ApiSecret = utils.NewSHA1Hash(10)
|
2020-03-05 17:11:15 +00:00
|
|
|
db := DB().Update(&u)
|
2020-03-04 10:29:00 +00:00
|
|
|
return db.Error()
|
|
|
|
}
|
|
|
|
|
|
|
|
func (u *User) Delete() error {
|
2020-03-05 17:11:15 +00:00
|
|
|
db := DB().Delete(&u)
|
2020-03-04 10:29:00 +00:00
|
|
|
return db.Error()
|
|
|
|
}
|