Files
atom/modules/auth/dao/user_role.go
2023-02-05 13:30:43 +08:00

52 lines
1.4 KiB
Go
Executable File

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
}