1
0
mirror of https://github.com/aclindsa/moneygo.git synced 2024-12-26 23:42:29 -05:00

lua: Add account types and type names

This commit is contained in:
Aaron Lindsay 2017-02-08 05:40:51 -05:00
parent af704250e2
commit 6143924ed3
2 changed files with 65 additions and 12 deletions

View File

@ -10,8 +10,10 @@ import (
"strings"
)
type AccountType int64
const (
Bank int64 = 1
Bank AccountType = 1 // start at 1 so that the default (0) is invalid
Cash = 2
Asset = 3
Liability = 4
@ -24,13 +26,55 @@ const (
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

View File

@ -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: