zhangkun9038@dingtalk.com 375b305ab4 aliyun-deepseek-r1
2025-02-20 11:29:57 +08:00

129 lines
3.3 KiB
Go

package repositories
import (
"gitea.zjmud.com/phyer/rbac/models"
"gorm.io/gorm"
)
type UserRepository interface {
Create(user *models.User) error
Update(user *models.User) error
Delete(user *models.User) error
FindByID(id uint) (*models.User, error)
FindAll() ([]models.User, error)
FindByUsername(username string) (*models.User, error)
}
type userRepository struct {
*BaseRepository
}
func NewUserRepository(db *gorm.DB) UserRepository {
return &userRepository{
BaseRepository: NewBaseRepository(db),
}
}
func (r *userRepository) Create(user *models.User) error {
return r.BaseRepository.Create(user)
}
func (r *userRepository) Update(user *models.User) error {
return r.BaseRepository.Update(user)
}
func (r *userRepository) Delete(user *models.User) error {
return r.BaseRepository.Delete(user)
}
func (r *userRepository) FindByID(id uint) (*models.User, error) {
var user models.User
err := r.BaseRepository.FindByID(&user, id)
return &user, err
}
func (r *userRepository) FindAll() ([]models.User, error) {
var users []models.User
err := r.BaseRepository.FindAll(&users)
return users, err
}
func (r *userRepository) FindByUsername(username string) (*models.User, error) {
var user models.User
err := r.db.Where("username = ?", username).First(&user).Error
return &user, err
}
package repositories
import (
"gitea.zjmud.com/phyer/rbac/models"
"gorm.io/gorm"
)
type UserRepository interface {
Create(user *models.User) error
Update(user *models.User) error
Delete(user *models.User) error
FindByID(id uint) (*models.User, error)
FindAll() ([]models.User, error)
FindByUsername(username string) (*models.User, error)
GetUserRoles(userID uint) ([]models.Role, error)
AssignRole(userID uint, roleID uint) error
RemoveRole(userID uint, roleID uint) error
}
type userRepository struct {
*BaseRepository
}
func NewUserRepository(db *gorm.DB) UserRepository {
return &userRepository{
BaseRepository: NewBaseRepository(db),
}
}
func (r *userRepository) Create(user *models.User) error {
return r.BaseRepository.Create(user)
}
func (r *userRepository) Update(user *models.User) error {
return r.BaseRepository.Update(user)
}
func (r *userRepository) Delete(user *models.User) error {
return r.BaseRepository.Delete(user)
}
func (r *userRepository) FindByID(id uint) (*models.User, error) {
var user models.User
err := r.db.Preload("Roles").First(&user, id).Error
return &user, err
}
func (r *userRepository) FindAll() ([]models.User, error) {
var users []models.User
err := r.BaseRepository.FindAll(&users, "Roles")
return users, err
}
func (r *userRepository) FindByUsername(username string) (*models.User, error) {
var user models.User
err := r.db.Where("username = ?", username).First(&user).Error
return &user, err
}
func (r *userRepository) GetUserRoles(userID uint) ([]models.Role, error) {
var roles []models.Role
err := r.db.Model(&models.User{ID: userID}).Association("Roles").Find(&roles)
return roles, err
}
func (r *userRepository) AssignRole(userID uint, roleID uint) error {
return r.db.Model(&models.User{ID: userID}).Association("Roles").Append(&models.Role{ID: roleID})
}
func (r *userRepository) RemoveRole(userID uint, roleID uint) error {
return r.db.Model(&models.User{ID: userID}).Association("Roles").Delete(&models.Role{ID: roleID})
}