statping/types/users/database.go

63 lines
1.3 KiB
Go
Raw Normal View History

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"
2020-03-06 09:33:46 +00:00
"github.com/prometheus/common/log"
2020-03-04 10:29:00 +00:00
"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) {
2020-03-06 03:03:18 +00:00
var user User
2020-03-06 09:33:46 +00:00
db := DB().Where("id = ?", id).Find(&user)
2020-03-06 03:03:18 +00:00
return &user, db.Error()
2020-03-04 10:29:00 +00:00
}
func FindByUsername(username string) (*User, error) {
2020-03-06 09:33:46 +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)
2020-03-06 09:33:46 +00:00
u.ApiKey = utils.NewSHA1Hash(16)
u.ApiSecret = utils.NewSHA1Hash(16)
2020-03-04 10:29:00 +00:00
2020-03-06 03:03:18 +00:00
db := DB().Create(u)
2020-03-06 09:33:46 +00:00
if db.Error() == nil {
log.Warnf("User #%d (%s) has been created", u.Id, u.Username)
}
2020-03-04 10:29:00 +00:00
return db.Error()
}
func (u *User) Update() error {
2020-03-06 09:33:46 +00:00
//u.ApiKey = utils.NewSHA1Hash(5)
//u.ApiSecret = utils.NewSHA1Hash(10)
db := DB().Update(u)
2020-03-04 10:29:00 +00:00
return db.Error()
}
func (u *User) Delete() error {
2020-03-06 03:03:18 +00:00
db := DB().Delete(u)
2020-03-06 09:33:46 +00:00
if db.Error() == nil {
log.Warnf("User #%d (%s) has been deleted")
}
2020-03-04 10:29:00 +00:00
return db.Error()
}