129 lines
3.3 KiB
Go
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})
|
|
}
|
|
|