From 6143924ed3f54c1431aaa9dc674d1b3547eb5e28 Mon Sep 17 00:00:00 2001 From: Aaron Lindsay Date: Wed, 8 Feb 2017 05:40:51 -0500 Subject: [PATCH] lua: Add account types and type names --- accounts.go | 68 ++++++++++++++++++++++++++++++++++++++++--------- accounts_lua.go | 9 +++++++ 2 files changed, 65 insertions(+), 12 deletions(-) diff --git a/accounts.go b/accounts.go index 5045d6f..847e291 100644 --- a/accounts.go +++ b/accounts.go @@ -10,27 +10,71 @@ import ( "strings" ) +type AccountType int64 + const ( - Bank int64 = 1 - Cash = 2 - Asset = 3 - Liability = 4 - Investment = 5 - Income = 6 - Expense = 7 - Trading = 8 - Equity = 9 - Receivable = 10 - Payable = 11 + Bank AccountType = 1 // start at 1 so that the default (0) is invalid + Cash = 2 + Asset = 3 + Liability = 4 + Investment = 5 + Income = 6 + Expense = 7 + Trading = 8 + Equity = 9 + Receivable = 10 + Payable = 11 ) +var AccountTypes = []AccountType{ + Bank, + Cash, + Asset, + Liability, + Investment, + Income, + Expense, + Trading, + Equity, + Receivable, + Payable, +} + +func (t AccountType) String() string { + switch t { + case Bank: + return "Bank" + case Cash: + return "Cash" + case Asset: + return "Asset" + case Liability: + return "Liability" + case Investment: + return "Investment" + case Income: + return "Income" + case Expense: + return "Expense" + case Trading: + return "Trading" + case Equity: + return "Equity" + case Receivable: + return "Receivable" + case Payable: + return "Payable" + } + return "" +} + type Account struct { AccountId int64 ExternalAccountId string UserId int64 SecurityId int64 ParentAccountId int64 // -1 if this account is at the root - Type int64 + Type AccountType Name string // monotonically-increasing account transaction version number. Used for diff --git a/accounts_lua.go b/accounts_lua.go index 59b3bf6..4ab1c07 100644 --- a/accounts_lua.go +++ b/accounts_lua.go @@ -5,6 +5,7 @@ import ( "errors" "github.com/yuin/gopher-lua" "math/big" + "strings" ) const luaAccountTypeName = "account" @@ -63,6 +64,10 @@ func luaRegisterAccounts(L *lua.LState) { L.SetField(mt, "__eq", L.NewFunction(luaAccount__eq)) L.SetField(mt, "__metatable", lua.LString("protected")) + for _, accttype := range AccountTypes { + L.SetField(mt, accttype.String(), lua.LNumber(float64(accttype))) + } + getAccountsFn := L.NewFunction(luaGetAccounts) L.SetField(mt, "get_all", getAccountsFn) // also register the get_accounts function as a global in its own right @@ -121,6 +126,10 @@ func luaAccount__index(L *lua.LState) int { L.Push(lua.LString(a.Name)) case "Type", "type": L.Push(lua.LNumber(float64(a.Type))) + case "TypeName", "Typename": + L.Push(lua.LString(a.Type.String())) + case "typename": + L.Push(lua.LString(strings.ToLower(a.Type.String()))) case "Balance", "balance": L.Push(L.NewFunction(luaAccountBalance)) default: