app-cloudep-permission-server/pkg/usecase/permiission.go

99 lines
2.2 KiB
Go

package usecase
import (
"context"
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/entity"
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/permission"
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/repository"
"code.30cm.net/digimon/app-cloudep-permission-server/pkg/domain/usecase"
)
type PermissionUseCaseParam struct {
permissionRepository repository.PermissionRepository
}
type PermissionUseCase struct {
PermissionUseCaseParam
}
func NewPermissionUseCase(param PermissionUseCaseParam) usecase.PermissionUseCase {
return &PermissionUseCase{
PermissionUseCaseParam: param,
}
}
func (use *PermissionUseCase) Insert(ctx context.Context, req usecase.CreatePermissionReq) error {
insert := entity.Permission{
Name: req.Name,
HTTPMethod: req.HTTPMethod,
HTTPPath: req.HTTPPath,
Status: req.Status,
Type: req.Type,
}
if req.Parent != nil {
insert.Parent = *req.Parent
}
err := use.permissionRepository.Insert(ctx, insert)
if err != nil {
return err
}
return nil
}
func (use *PermissionUseCase) Del(ctx context.Context, id string) error {
err := use.Del(ctx, id)
if err != nil {
return err
}
return nil
}
func (use *PermissionUseCase) Update(ctx context.Context, id string, req usecase.UpdatePermissionReq) error {
update := repository.UpdatePermission{
Name: req.Name,
HTTPMethod: req.HTTPMethod,
HTTPPath: req.HTTPPath,
Status: req.Status,
Type: req.Type,
}
err := use.permissionRepository.Update(ctx, id, update)
if err != nil {
return err
}
return nil
}
func (use *PermissionUseCase) All(ctx context.Context, status *permission.Status) ([]entity.Permission, error) {
all, err := use.permissionRepository.GetAll(ctx, status)
if err != nil {
return nil, err
}
return all, nil
}
func (use *PermissionUseCase) FilterAll(ctx context.Context) ([]entity.Permission, error) {
all, err := use.permissionRepository.GetAll(ctx, nil)
if err != nil {
return nil, err
}
nodes, err := GeneratePermissionTree(all).filterOpenNodes()
if err != nil {
return nil, err
}
result := make([]entity.Permission, 0, len(nodes))
for _, item := range nodes {
result = append(result, item)
}
return result, nil
}