package usecase import ( "backend/pkg/permission/domain/entity" "context" ) // RoleUseCase 角色用例介面 type RoleUseCase interface { CreateRole(ctx context.Context, req CreateRoleRequest) (*entity.Role, error) GetRole(ctx context.Context, id string) (*entity.Role, error) GetRoleByUID(ctx context.Context, uid string) (*entity.Role, error) UpdateRole(ctx context.Context, req UpdateRoleRequest) (*entity.Role, error) DeleteRole(ctx context.Context, id string) error ListRoles(ctx context.Context, req ListRolesRequest) ([]*entity.Role, error) AddPermissionToRole(ctx context.Context, roleID string, permissionKey string) error RemovePermissionFromRole(ctx context.Context, roleID string, permissionKey string) error BatchUpdateRolePermissions(ctx context.Context, roleID string, permissions entity.Permissions) error GetRolesByClientID(ctx context.Context, clientID string) ([]*entity.Role, error) CopyRole(ctx context.Context, sourceRoleID string, req CreateRoleRequest) (*entity.Role, error) } // CreateRoleRequest 創建角色請求 type CreateRoleRequest struct { ClientID string `json:"client_id"` UID string `json:"uid"` Name string `json:"name"` Status int `json:"status"` Permissions entity.Permissions `json:"permissions"` } // UpdateRoleRequest 更新角色請求 type UpdateRoleRequest struct { ID string `json:"id"` Name *string `json:"name,omitempty"` Status *int `json:"status,omitempty"` Permissions *entity.Permissions `json:"permissions,omitempty"` } // ListRolesRequest 列出角色請求 type ListRolesRequest struct { ClientID string `json:"client_id,omitempty"` Status *int `json:"status,omitempty"` Limit int `json:"limit"` Skip int `json:"skip"` }