Files
sendico/api/pkg/model/account_role/account_role.go
2026-02-03 00:40:46 +01:00

118 lines
3.5 KiB
Go

package account_role
import (
"strings"
accountrolev1 "github.com/tech/sendico/pkg/proto/common/account_role/v1"
)
type AccountRole string
const (
AccountRoleOperating AccountRole = "operating"
AccountRoleHold AccountRole = "hold"
AccountRoleTransit AccountRole = "transit"
AccountRoleSettlement AccountRole = "settlement"
AccountRoleClearing AccountRole = "clearing"
AccountRolePending AccountRole = "pending"
AccountRoleReserve AccountRole = "reserve"
AccountRoleLiquidity AccountRole = "liquidity"
AccountRoleFee AccountRole = "fee"
AccountRoleChargeback AccountRole = "chargeback"
AccountRoleAdjustment AccountRole = "adjustment"
)
const (
MetadataKeyFromRole = "from_role"
MetadataKeyToRole = "to_role"
)
func Parse(value string) (AccountRole, bool) {
switch strings.ToUpper(strings.TrimSpace(value)) {
case "ACCOUNT_ROLE_OPERATING", "OPERATING":
return AccountRoleOperating, true
case "ACCOUNT_ROLE_HOLD", "HOLD":
return AccountRoleHold, true
case "ACCOUNT_ROLE_TRANSIT", "TRANSIT":
return AccountRoleTransit, true
case "ACCOUNT_ROLE_SETTLEMENT", "SETTLEMENT":
return AccountRoleSettlement, true
case "ACCOUNT_ROLE_CLEARING", "CLEARING":
return AccountRoleClearing, true
case "ACCOUNT_ROLE_PENDING", "PENDING":
return AccountRolePending, true
case "ACCOUNT_ROLE_RESERVE", "RESERVE":
return AccountRoleReserve, true
case "ACCOUNT_ROLE_LIQUIDITY", "LIQUIDITY":
return AccountRoleLiquidity, true
case "ACCOUNT_ROLE_FEE", "FEE":
return AccountRoleFee, true
case "ACCOUNT_ROLE_CHARGEBACK", "CHARGEBACK":
return AccountRoleChargeback, true
case "ACCOUNT_ROLE_ADJUSTMENT", "ADJUSTMENT":
return AccountRoleAdjustment, true
case "ACCOUNT_ROLE_UNSPECIFIED", "UNSPECIFIED", "":
return "", true
default:
return "", false
}
}
func ToProto(role AccountRole) accountrolev1.AccountRole {
switch role {
case AccountRoleOperating:
return accountrolev1.AccountRole_OPERATING
case AccountRoleHold:
return accountrolev1.AccountRole_HOLD
case AccountRoleTransit:
return accountrolev1.AccountRole_TRANSIT
case AccountRoleSettlement:
return accountrolev1.AccountRole_SETTLEMENT
case AccountRoleClearing:
return accountrolev1.AccountRole_CLEARING
case AccountRolePending:
return accountrolev1.AccountRole_PENDING
case AccountRoleReserve:
return accountrolev1.AccountRole_RESERVE
case AccountRoleLiquidity:
return accountrolev1.AccountRole_LIQUIDITY
case AccountRoleFee:
return accountrolev1.AccountRole_FEE
case AccountRoleChargeback:
return accountrolev1.AccountRole_CHARGEBACK
case AccountRoleAdjustment:
return accountrolev1.AccountRole_ADJUSTMENT
default:
return accountrolev1.AccountRole_ACCOUNT_ROLE_UNSPECIFIED
}
}
func FromProto(role accountrolev1.AccountRole) AccountRole {
switch role {
case accountrolev1.AccountRole_OPERATING:
return AccountRoleOperating
case accountrolev1.AccountRole_HOLD:
return AccountRoleHold
case accountrolev1.AccountRole_TRANSIT:
return AccountRoleTransit
case accountrolev1.AccountRole_SETTLEMENT:
return AccountRoleSettlement
case accountrolev1.AccountRole_CLEARING:
return AccountRoleClearing
case accountrolev1.AccountRole_PENDING:
return AccountRolePending
case accountrolev1.AccountRole_RESERVE:
return AccountRoleReserve
case accountrolev1.AccountRole_LIQUIDITY:
return AccountRoleLiquidity
case accountrolev1.AccountRole_FEE:
return AccountRoleFee
case accountrolev1.AccountRole_CHARGEBACK:
return AccountRoleChargeback
case accountrolev1.AccountRole_ADJUSTMENT:
return AccountRoleAdjustment
default:
return ""
}
}