tvl-depot/users/wpcarro/tools/monzo_ynab/ynab/serde.go
William Carroll d36aaeb967 fix(wpcarro/ynab): Remove .skip-subtree
**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>
2022-11-21 05:30:58 +00:00

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
}