heritage-api/mysql/user-mysql.go

85 lines
1.9 KiB
Go

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)
}