99 lines
2.2 KiB
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
|
|
}
|