d36aaeb967
**TL;DR:** - Delete half-baked packaging attempts (`job.nix`, `token.nix`). - Ensure golang code compiles. - Some "packages" were being treated like "programs" presumably for debugging/testing purposes back when I was working on this. Make those behave like libraries. - Remove stale imports. - Fix syntax errors. - Miscellaneous other chores. - Drop `shell.nix` and `use_nix` directive. Change-Id: I63c275680bac55a3cad3b9cb48d51cdc431fbe48 Reviewed-on: https://cl.tvl.fyi/c/depot/+/7318 Autosubmit: wpcarro <wpcarro@gmail.com> Tested-by: BuildkiteCI Reviewed-by: wpcarro <wpcarro@gmail.com>
44 lines
1.5 KiB
Go
44 lines
1.5 KiB
Go
// This package hosts the serialization and deserialization logic for all of the
|
|
// data types with which our application interacts from the YNAB API.
|
|
package ynabSerde
|
|
|
|
import (
|
|
"encoding/json"
|
|
"time"
|
|
)
|
|
|
|
type Transaction struct {
|
|
Id string `json:"id"`
|
|
Date time.Time `json:"date"`
|
|
Amount int `json:"amount"`
|
|
Memo string `json:"memo"`
|
|
Cleared string `json:"cleared"`
|
|
Approved bool `json:"approved"`
|
|
FlagColor string `json:"flag_color"`
|
|
AccountId string `json:"account_id"`
|
|
AccountName string `json:"account_name"`
|
|
PayeeId string `json:"payeed_id"`
|
|
PayeeName string `json:"payee_name"`
|
|
CategoryId string `json:"category_id"`
|
|
CategoryName string `json:"category_name"`
|
|
Deleted bool `json:"deleted"`
|
|
// TransferAccountId interface{} `json:"transfer_account_id"`
|
|
// TransferTransactionId interface{} `json:"transfer_transaction_id"`
|
|
// MatchedTransactionId interface{} `json:"matched_transaction_id"`
|
|
// ImportId interface{} `json:"import_id"`
|
|
// Subtransactions interface{} `json:"subtransactions"`
|
|
}
|
|
|
|
// Attempts to encode a YNAB transaction into a string.
|
|
func serializeTx(tx *Transaction) (string, error) {
|
|
x, err := json.Marshal(tx)
|
|
return string(x), err
|
|
}
|
|
|
|
// Attempts to parse a string encoding a transaction presumably sent from a
|
|
// YNAB server.
|
|
func deserializeTx(x string) (*Transaction, error) {
|
|
target := &Transaction{}
|
|
err := json.Unmarshal([]byte(x), target)
|
|
return target, err
|
|
}
|