support user role attachment
This commit is contained in:
51
modules/auth/dao/user_role.go
Executable file
51
modules/auth/dao/user_role.go
Executable file
@@ -0,0 +1,51 @@
|
||||
package dao
|
||||
|
||||
import (
|
||||
"atom/database/models"
|
||||
"atom/database/query"
|
||||
"context"
|
||||
)
|
||||
|
||||
type UserRoleDao interface {
|
||||
Exists(context.Context, int) bool
|
||||
Create(context.Context, int, int) error
|
||||
Update(context.Context, int, int) error
|
||||
Delete(context.Context, int, int) error
|
||||
}
|
||||
|
||||
type userRoleDaoImpl struct {
|
||||
query *query.Query
|
||||
}
|
||||
|
||||
func NewUserRoleDao(query *query.Query) UserRoleDao {
|
||||
return &userRoleDaoImpl{query: query}
|
||||
}
|
||||
|
||||
func (dao *userRoleDaoImpl) Exists(ctx context.Context, userID int) bool {
|
||||
userRole := dao.query.UserRole
|
||||
count, _ := userRole.WithContext(ctx).Where(userRole.UserID.Eq(uint64(userID))).Count()
|
||||
return count > 0
|
||||
}
|
||||
|
||||
func (dao *userRoleDaoImpl) Create(ctx context.Context, userID, roleID int) error {
|
||||
userRole := dao.query.UserRole
|
||||
return userRole.WithContext(ctx).Create(&models.UserRole{
|
||||
UserID: uint64(userID),
|
||||
RoleID: uint64(roleID),
|
||||
})
|
||||
}
|
||||
|
||||
func (dao *userRoleDaoImpl) Update(ctx context.Context, userID, roleID int) error {
|
||||
userRole := dao.query.UserRole
|
||||
_, err := userRole.WithContext(ctx).Where(userRole.UserID.Eq(uint64(userID))).Update(userRole.RoleID, roleID)
|
||||
return err
|
||||
}
|
||||
|
||||
func (dao *userRoleDaoImpl) Delete(ctx context.Context, userID, roleID int) error {
|
||||
userRole := dao.query.UserRole
|
||||
_, err := userRole.WithContext(ctx).
|
||||
Where(userRole.UserID.Eq(uint64(userID))).
|
||||
Where(userRole.RoleID.Eq(uint64(roleID))).
|
||||
Delete()
|
||||
return err
|
||||
}
|
||||
Reference in New Issue
Block a user