init push
This commit is contained in:
98
internal/service/role_service.go
Normal file
98
internal/service/role_service.go
Normal file
@@ -0,0 +1,98 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"strings"
|
||||
|
||||
"wucher/internal/domain/auth"
|
||||
)
|
||||
|
||||
type RoleService struct {
|
||||
repo auth.RoleRepository
|
||||
}
|
||||
|
||||
func NewRoleService(repo auth.RoleRepository) *RoleService {
|
||||
return &RoleService{repo: repo}
|
||||
}
|
||||
|
||||
func (s *RoleService) Create(ctx context.Context, role *auth.Role) error {
|
||||
if strings.TrimSpace(role.Name) == "" {
|
||||
return errors.New("name is required")
|
||||
}
|
||||
return s.repo.CreateRole(ctx, role)
|
||||
}
|
||||
|
||||
func (s *RoleService) Update(ctx context.Context, role *auth.Role) error {
|
||||
if strings.TrimSpace(role.Name) == "" {
|
||||
return errors.New("name is required")
|
||||
}
|
||||
return s.repo.UpdateRole(ctx, role)
|
||||
}
|
||||
|
||||
func (s *RoleService) Delete(ctx context.Context, id []byte) error {
|
||||
return s.repo.DeleteRole(ctx, id)
|
||||
}
|
||||
|
||||
func (s *RoleService) GetByID(ctx context.Context, id []byte) (*auth.Role, error) {
|
||||
return s.repo.GetRoleByID(ctx, id)
|
||||
}
|
||||
|
||||
func (s *RoleService) GetByName(ctx context.Context, name string) (*auth.Role, error) {
|
||||
return s.repo.GetRoleByName(ctx, name)
|
||||
}
|
||||
|
||||
func (s *RoleService) GetPermissionByID(ctx context.Context, id []byte) (*auth.Permission, error) {
|
||||
return s.repo.GetPermissionByID(ctx, id)
|
||||
}
|
||||
|
||||
func (s *RoleService) GetPermissionByKey(ctx context.Context, key string) (*auth.Permission, error) {
|
||||
return s.repo.GetPermissionByKey(ctx, key)
|
||||
}
|
||||
|
||||
func (s *RoleService) UpdatePermission(ctx context.Context, permission *auth.Permission) error {
|
||||
if strings.TrimSpace(permission.Name) == "" {
|
||||
return errors.New("name is required")
|
||||
}
|
||||
if strings.TrimSpace(permission.Key) == "" {
|
||||
return errors.New("key is required")
|
||||
}
|
||||
return s.repo.UpdatePermission(ctx, permission)
|
||||
}
|
||||
|
||||
func (s *RoleService) AssignPermission(ctx context.Context, roleID, permissionID []byte) (*auth.RolePermission, error) {
|
||||
return s.repo.AssignPermission(ctx, roleID, permissionID)
|
||||
}
|
||||
|
||||
func (s *RoleService) RemovePermission(ctx context.Context, roleID, permissionID []byte) error {
|
||||
return s.repo.RemovePermission(ctx, roleID, permissionID)
|
||||
}
|
||||
|
||||
func (s *RoleService) ListPermissions(ctx context.Context, filter, sort string, limit, offset int) ([]auth.Permission, int64, error) {
|
||||
return s.repo.ListPermissions(ctx, filter, normalizePermissionSort(sort), limit, offset)
|
||||
}
|
||||
|
||||
func (s *RoleService) ListPermissionsByRoleID(ctx context.Context, roleID []byte) ([]auth.Permission, error) {
|
||||
return s.repo.ListPermissionsByRoleID(ctx, roleID)
|
||||
}
|
||||
|
||||
func (s *RoleService) List(ctx context.Context, filterName, sort string, limit, offset int) ([]auth.Role, int64, error) {
|
||||
return s.repo.ListRoles(ctx, filterName, normalizeSort(sort), limit, offset)
|
||||
}
|
||||
|
||||
func normalizeSort(sort string) string {
|
||||
return normalizeSortByRules(sort,
|
||||
sortField("name"),
|
||||
sortField("created_at"),
|
||||
sortField("updated_at"),
|
||||
)
|
||||
}
|
||||
|
||||
func normalizePermissionSort(sort string) string {
|
||||
return normalizeSortByRules(sort,
|
||||
sortField("name"),
|
||||
sortField("`key`", "key"),
|
||||
sortField("created_at"),
|
||||
sortField("updated_at"),
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user