Personal Git forge.

Code git clone ssh://git.poy.ooo:6969/~poyo/farga ZIP
db/users.go / 1KiB #4c92908c
Raw
package dbimport (	"errors"	"farga/db/types"	"farga/lib"	"github.com/google/uuid"	"gorm.io/gorm/clause")var (	UserNotFound      = errors.New("No such user was found")	IncorrectPassword = errors.New("Incorrect password"))func (db *DB) NewUser(user *types.User) error {	return db.Create(user).Error}// clause.Associations might be slow? idkfunc (db *DB) LoginUser(email string, password string) (*types.User, error) {	var user types.User	result := db.Where(&types.User{Email: email}).First(&user)	if result.Error != nil {		return nil, UserNotFound	}	valid, err := lib.ValidateHash(password, user.PasswordHash)	if err != nil || !valid {		return nil, IncorrectPassword	}	return &user, nil}// retrieves a user by their UUID.func (db *DB) User(id uuid.UUID) (*types.User, error) {	var user types.User	if err := db.Preload(clause.Associations).Where(&types.User{UUID_ID: types.UUID_ID{ID: id}}).First(&user).Error; err != nil {		return nil, err	}	return &user, nil}// find a user by their handle.func (db *DB) UserHandle(handle string) (*types.User, error) {	var user types.User	if err := db.Preload(clause.Associations).Where(&types.User{Handle: handle}).First(&user).Error; err != nil {		return nil, err	}	return &user, nil}// saves the hackatime secret of a userfunc (db *DB) SaveHackatimeToken(userID uuid.UUID, token string) error {	var user = types.User{		UUID_ID: types.UUID_ID{ID: userID},	}	return db.Model(&user).Where(&user).Update("hackatime_token", token).Error}