heritage-api/mysql/user-mysql.go

93 lines
1.9 KiB
Go
Raw Normal View History

2026-03-12 09:28:19 +00:00
package mysql
import (
"errors"
"gorm.io/gorm"
"myschools.me/heritage/heritage-api/model"
)
2026-03-13 08:35:54 +00:00
func UserByUserName(userName *string) (*model.User, bool, error) {
2026-03-12 09:28:19 +00:00
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
}
2026-03-13 08:35:54 +00:00
func UserByID(userID *string) (*model.User, bool, error) {
2026-03-12 09:28:19 +00:00
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
}
2026-03-13 08:35:54 +00:00
func UpdateUserPasswordHash(userID, passwordHash *string) (bool, error) {
2026-03-12 09:28:19 +00:00
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
}
2026-03-13 08:35:54 +00:00
func UserRoleIDByUserID(userID *string) (*string, bool, error) {
2026-03-12 09:28:19 +00:00
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
}
2026-03-13 08:35:54 +00:00
func UserCount() (*int64, error) {
db, err := newDB()
if err != nil {
return nil, err
}
2026-03-12 09:28:19 +00:00
2026-03-13 08:35:54 +00:00
var count int64
if err := db.Model(&model.User{}).Count(&count).Error; err != nil {
return nil, err
}
return &count, nil
2026-03-12 09:28:19 +00:00
}
2026-03-13 08:35:54 +00:00
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
2026-03-12 09:28:19 +00:00
}