Lightweight and easily self-hostable Git forge. git.poy.ooo
git-forge selfhosting homebrew
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960package 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.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}