56 lines
1.6 KiB
Go
56 lines
1.6 KiB
Go
package mappers
|
|
|
|
import (
|
|
permissionV1 "service/internal/infrastructure/transport/grpc/gen/permission/v1"
|
|
"service/internal/master/role/permission"
|
|
)
|
|
|
|
// mapAccessTreeToProto secara rekursif mengubah tree dari service ke format proto.
|
|
func mapAccessTreeToProto(serviceAccess []*permission.AccessTreeItem) []*permissionV1.AccessTreeItem {
|
|
if serviceAccess == nil {
|
|
return nil
|
|
}
|
|
|
|
protoAccess := make([]*permissionV1.AccessTreeItem, len(serviceAccess))
|
|
for i, item := range serviceAccess {
|
|
protoItem := &permissionV1.AccessTreeItem{
|
|
Id: item.ID,
|
|
Name: item.Name,
|
|
Icon: item.Icon,
|
|
Url: item.URL,
|
|
Level: int32(item.Level),
|
|
Sort: int32(item.Sort),
|
|
Active: item.Active,
|
|
Children: mapAccessTreeToProto(item.Children), // Panggilan rekursif
|
|
}
|
|
|
|
if item.Permission != nil {
|
|
protoItem.Permission = &permissionV1.Permission{
|
|
Create: item.Permission.Create,
|
|
Read: item.Permission.Read,
|
|
Update: item.Permission.Update,
|
|
Delete: item.Permission.Delete,
|
|
Disable: item.Permission.Disable,
|
|
}
|
|
}
|
|
protoAccess[i] = protoItem
|
|
}
|
|
return protoAccess
|
|
}
|
|
|
|
// MapRolePermissionTreeToProto adalah fungsi utama untuk mengubah seluruh respons tree.
|
|
func MapRolePermissionTreeToProto(serviceResponse *permission.RolePermissionTreeResponse) *permissionV1.RolePermissionTreeResponse {
|
|
if serviceResponse == nil {
|
|
return nil
|
|
}
|
|
|
|
return &permissionV1.RolePermissionTreeResponse{
|
|
Success: serviceResponse.Success,
|
|
Data: &permissionV1.RolePermissionData{
|
|
Role: serviceResponse.Data.Role,
|
|
// Group: serviceResponse.Data.Group,
|
|
Access: mapAccessTreeToProto(serviceResponse.Data.Access),
|
|
},
|
|
}
|
|
}
|