Files
sendico/api/pkg/ledgerconv/account.go
2026-01-30 16:07:28 +01:00

96 lines
3.3 KiB
Go

package ledgerconv
import (
"strings"
ledgerv1 "github.com/tech/sendico/pkg/proto/ledger/v1"
)
func ParseAccountType(value string) (ledgerv1.AccountType, bool) {
switch strings.ToUpper(strings.TrimSpace(value)) {
case "ACCOUNT_TYPE_ASSET", "ASSET":
return ledgerv1.AccountType_ACCOUNT_TYPE_ASSET, true
case "ACCOUNT_TYPE_LIABILITY", "LIABILITY":
return ledgerv1.AccountType_ACCOUNT_TYPE_LIABILITY, true
case "ACCOUNT_TYPE_REVENUE", "REVENUE":
return ledgerv1.AccountType_ACCOUNT_TYPE_REVENUE, true
case "ACCOUNT_TYPE_EXPENSE", "EXPENSE":
return ledgerv1.AccountType_ACCOUNT_TYPE_EXPENSE, true
case "ACCOUNT_TYPE_UNSPECIFIED", "UNSPECIFIED":
return ledgerv1.AccountType_ACCOUNT_TYPE_UNSPECIFIED, true
default:
return ledgerv1.AccountType_ACCOUNT_TYPE_UNSPECIFIED, false
}
}
func ParseAccountStatus(value string) (ledgerv1.AccountStatus, bool) {
switch strings.ToUpper(strings.TrimSpace(value)) {
case "ACCOUNT_STATUS_ACTIVE", "ACTIVE":
return ledgerv1.AccountStatus_ACCOUNT_STATUS_ACTIVE, true
case "ACCOUNT_STATUS_FROZEN", "FROZEN":
return ledgerv1.AccountStatus_ACCOUNT_STATUS_FROZEN, true
case "ACCOUNT_STATUS_UNSPECIFIED", "UNSPECIFIED":
return ledgerv1.AccountStatus_ACCOUNT_STATUS_UNSPECIFIED, true
default:
return ledgerv1.AccountStatus_ACCOUNT_STATUS_UNSPECIFIED, false
}
}
func ParseAccountRole(value string) (ledgerv1.AccountRole, bool) {
switch strings.ToUpper(strings.TrimSpace(value)) {
case "ACCOUNT_ROLE_OPERATING", "OPERATING":
return ledgerv1.AccountRole_ACCOUNT_ROLE_OPERATING, true
case "ACCOUNT_ROLE_HOLD", "HOLD":
return ledgerv1.AccountRole_ACCOUNT_ROLE_HOLD, true
case "ACCOUNT_ROLE_TRANSIT", "TRANSIT":
return ledgerv1.AccountRole_ACCOUNT_ROLE_TRANSIT, true
case "ACCOUNT_ROLE_SETTLEMENT", "SETTLEMENT":
return ledgerv1.AccountRole_ACCOUNT_ROLE_SETTLEMENT, true
case "ACCOUNT_ROLE_CLEARING", "CLEARING":
return ledgerv1.AccountRole_ACCOUNT_ROLE_CLEARING, true
case "ACCOUNT_ROLE_PENDING", "PENDING":
return ledgerv1.AccountRole_ACCOUNT_ROLE_PENDING, true
case "ACCOUNT_ROLE_RESERVE", "RESERVE":
return ledgerv1.AccountRole_ACCOUNT_ROLE_RESERVE, true
case "ACCOUNT_ROLE_LIQUIDITY", "LIQUIDITY":
return ledgerv1.AccountRole_ACCOUNT_ROLE_LIQUIDITY, true
case "ACCOUNT_ROLE_FEE", "FEE":
return ledgerv1.AccountRole_ACCOUNT_ROLE_FEE, true
case "ACCOUNT_ROLE_CHARGEBACK", "CHARGEBACK":
return ledgerv1.AccountRole_ACCOUNT_ROLE_CHARGEBACK, true
case "ACCOUNT_ROLE_ADJUSTMENT", "ADJUSTMENT":
return ledgerv1.AccountRole_ACCOUNT_ROLE_ADJUSTMENT, true
case "ACCOUNT_ROLE_UNSPECIFIED", "UNSPECIFIED", "":
return ledgerv1.AccountRole_ACCOUNT_ROLE_UNSPECIFIED, true
default:
return ledgerv1.AccountRole_ACCOUNT_ROLE_UNSPECIFIED, false
}
}
func IsAccountTypeUnspecified(value string) bool {
switch strings.ToUpper(strings.TrimSpace(value)) {
case "", "ACCOUNT_TYPE_UNSPECIFIED", "UNSPECIFIED":
return true
default:
return false
}
}
func IsAccountStatusUnspecified(value string) bool {
switch strings.ToUpper(strings.TrimSpace(value)) {
case "", "ACCOUNT_STATUS_UNSPECIFIED", "UNSPECIFIED":
return true
default:
return false
}
}
func IsAccountRoleUnspecified(value string) bool {
switch strings.ToUpper(strings.TrimSpace(value)) {
case "", "ACCOUNT_ROLE_UNSPECIFIED", "UNSPECIFIED":
return true
default:
return false
}
}