Files
atom/modules/auth/dao/role.go
2023-02-09 14:57:32 +08:00

86 lines
2.1 KiB
Go
Executable File

package dao
import (
"atom/common/request"
"atom/database/models"
"atom/database/query"
"atom/modules/auth/dto"
"context"
)
type RoleDao struct {
query *query.Query
}
func NewRoleDao(query *query.Query) *RoleDao {
return &RoleDao{query: query}
}
func (dao *RoleDao) GetByFilter(ctx context.Context, filter dto.RoleRequestFilter, page request.PageFilter) ([]*models.SysRole, uint64, error) {
role := dao.query.SysRole
query := role.WithContext(ctx)
if filter.DefaultRouter != nil {
query = query.Where(role.DefaultRouter.Eq(*filter.DefaultRouter))
}
if filter.Name != nil {
query = query.Where(role.Name.Like(*filter.Name))
}
if filter.ParentID != nil {
query = query.Where(role.ParentID.Eq(uint64(*filter.ParentID)))
}
total, err := query.Count()
if err != nil {
return nil, 0, err
}
items, err := query.Find()
if err != nil {
return nil, 0, err
}
return items, uint64(total), nil
}
func (dao *RoleDao) All(ctx context.Context) ([]*models.SysRole, error) {
role := dao.query.SysRole
return role.WithContext(ctx).Find()
}
func (dao *RoleDao) FindByID(ctx context.Context, id uint64) (*models.SysRole, error) {
role := dao.query.SysRole
return role.WithContext(ctx).Where(role.ID.Eq(id)).First()
}
func (dao *RoleDao) Create(ctx context.Context, model *models.SysRole) (*models.SysRole, error) {
role := dao.query.SysRole
if err := role.WithContext(ctx).Create(model); err != nil {
return nil, err
}
return model, nil
}
func (dao *RoleDao) UpdateByID(ctx context.Context, model *models.SysRole) (*models.SysRole, error) {
role := dao.query.SysRole
_, err := role.WithContext(ctx).Where(role.ID.Eq(model.ID)).Updates(model)
if err != nil {
return nil, err
}
return model, nil
}
func (dao *RoleDao) DeleteByID(ctx context.Context, id uint64) error {
role := dao.query.SysRole
_, err := role.WithContext(ctx).Where(role.ID.Eq(id)).Delete()
return err
}
func (dao *RoleDao) DeletePermanentlyByID(ctx context.Context, id uint64) error {
role := dao.query.SysRole
_, err := role.WithContext(ctx).Unscoped().Where(role.ID.Eq(id)).Delete()
return err
}