92 lines
2.0 KiB
Go
92 lines
2.0 KiB
Go
package payload
|
|
|
|
import (
|
|
"RenewCMS/internal/domain/role"
|
|
"RenewCMS/internal/infrastructure/useCases"
|
|
"time"
|
|
)
|
|
|
|
type RoleRef struct {
|
|
ID uint32 `json:"id"`
|
|
Name string `json:"name"`
|
|
BuiltIn bool `json:"built_in"`
|
|
Locked bool `json:"locked"`
|
|
}
|
|
|
|
type RoleAssigner struct {
|
|
ID uint32 `json:"id"`
|
|
Name string `json:"name"`
|
|
}
|
|
|
|
type RoleEditor struct {
|
|
ID uint32 `json:"id"`
|
|
Name string `json:"name"`
|
|
}
|
|
|
|
type RoleView struct {
|
|
role.Role
|
|
Members int `json:"members"`
|
|
UpdatedAt *time.Time `json:"updated_at"`
|
|
UpdatedBy *RoleEditor `json:"updated_by"`
|
|
}
|
|
|
|
type OwnershipSuccessor struct {
|
|
ID uint32 `json:"id"`
|
|
Name string `json:"name"`
|
|
}
|
|
|
|
type OwnershipPredecessor struct {
|
|
ID uint32 `json:"id"`
|
|
Name string `json:"name"`
|
|
Role RoleRef `json:"role"`
|
|
}
|
|
|
|
type OwnershipTransfer struct {
|
|
Owner OwnershipSuccessor `json:"owner"`
|
|
FormerOwner OwnershipPredecessor `json:"former_owner"`
|
|
}
|
|
|
|
func RoleRefOf(ref useCases.RoleRef) RoleRef {
|
|
return RoleRef(ref)
|
|
}
|
|
|
|
func RoleRefPtrOf(ref *useCases.RoleRef) *RoleRef {
|
|
if ref == nil {
|
|
return nil
|
|
}
|
|
converted := RoleRefOf(*ref)
|
|
return &converted
|
|
}
|
|
|
|
func RoleAssignerPtrOf(assigner *useCases.RoleAssigner) *RoleAssigner {
|
|
if assigner == nil {
|
|
return nil
|
|
}
|
|
converted := RoleAssigner(*assigner)
|
|
return &converted
|
|
}
|
|
|
|
func RoleViewOf(view useCases.RoleView) RoleView {
|
|
converted := RoleView{Role: view.Role, Members: view.Members, UpdatedAt: view.UpdatedAt}
|
|
if view.UpdatedBy != nil {
|
|
editor := RoleEditor(*view.UpdatedBy)
|
|
converted.UpdatedBy = &editor
|
|
}
|
|
return converted
|
|
}
|
|
|
|
func RoleViewsOf(views []useCases.RoleView) []RoleView {
|
|
converted := make([]RoleView, 0, len(views))
|
|
for _, view := range views {
|
|
converted = append(converted, RoleViewOf(view))
|
|
}
|
|
return converted
|
|
}
|
|
|
|
func OwnershipTransferOf(transfer useCases.OwnershipTransfer) OwnershipTransfer {
|
|
return OwnershipTransfer{
|
|
Owner: OwnershipSuccessor(transfer.Owner),
|
|
FormerOwner: OwnershipPredecessor{ID: transfer.FormerOwner.ID, Name: transfer.FormerOwner.Name, Role: RoleRefOf(transfer.FormerOwner.Role)},
|
|
}
|
|
}
|