package mysql import ( "errors" "gorm.io/gorm" "myschools.me/heritage/heritage-api/model" ) func userByUserName(userName *string) (*model.User, bool, error) { db, err := newDB() if err != nil { return nil, false, err } var u model.User if err := db.Where("user_name = ?", *userName).First(&u).Error; err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { return nil, false, nil } return nil, false, err } return &u, true, nil } func userByID(userID *string) (*model.User, bool, error) { db, err := newDB() if err != nil { return nil, false, err } var u model.User if err := db.Where("id = ?", *userID).First(&u).Error; err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { return nil, false, nil } return nil, false, err } return &u, true, nil } func updateUserPasswordHash(userID, passwordHash *string) (bool, error) { db, err := newDB() if err != nil { return false, err } tx := db.Model(&model.User{}).Where("id = ?", *userID).Update("password_hash", *passwordHash) if tx.Error != nil { return false, tx.Error } return tx.RowsAffected > 0, nil } func userRoleIDByUserID(userID *string) (*string, bool, error) { db, err := newDB() if err != nil { return nil, false, err } var u model.User if err := db.Select("id", "role_id").Where("id = ?", *userID).First(&u).Error; err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { return nil, false, nil } return nil, false, err } return &u.RoleID, true, nil } func UserRoleIDByUserID(userID *string) (*string, bool, error) { return userRoleIDByUserID(userID) } func UserByUserName(userName *string) (*model.User, bool, error) { return userByUserName(userName) } func UserByID(userID *string) (*model.User, bool, error) { return userByID(userID) } func UpdateUserPasswordHash(userID, passwordHash *string) (bool, error) { return updateUserPasswordHash(userID, passwordHash) }