93 lines
1.9 KiB
Go
93 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 UserCount() (*int64, error) {
|
|
db, err := newDB()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var count int64
|
|
if err := db.Model(&model.User{}).Count(&count).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
return &count, nil
|
|
}
|
|
|
|
func UserCreate(obj *model.User) (*model.User, error) {
|
|
db, err := newDB()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
if err := db.Create(obj).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
return obj, nil
|
|
}
|