Lightweight and easily self-hostable Git forge. git.poy.ooo
git-forge selfhosting homebrew
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758package db
import ( "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.Preload(clause.Associations).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}
func (db *DB) GetUser(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}
func (db *DB) GetUserByHandle(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}