diff options
author | Vincent Ambo <mail@tazj.in> | 2021-12-13T22·51+0300 |
---|---|---|
committer | Vincent Ambo <mail@tazj.in> | 2021-12-13T23·15+0300 |
commit | 019f8fd2113df4c5247c3969c60fd4f0e08f91f7 (patch) | |
tree | 76a857f61aa88f62a30e854651e8439db77fd0ea /users/wpcarro/tools/monzo_ynab/main.go | |
parent | 464bbcb15c09813172c79820bcf526bb10cf4208 (diff) | |
parent | 6123e976928ca3d8d93f0b2006b10b5f659eb74d (diff) |
subtree(users/wpcarro): docking briefcase at '24f5a642' r/3226
git-subtree-dir: users/wpcarro git-subtree-mainline: 464bbcb15c09813172c79820bcf526bb10cf4208 git-subtree-split: 24f5a642af3aa1627bbff977f0a101907a02c69f Change-Id: I6105b3762b79126b3488359c95978cadb3efa789
Diffstat (limited to 'users/wpcarro/tools/monzo_ynab/main.go')
-rw-r--r-- | users/wpcarro/tools/monzo_ynab/main.go | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/users/wpcarro/tools/monzo_ynab/main.go b/users/wpcarro/tools/monzo_ynab/main.go new file mode 100644 index 000000000000..06f1944eab70 --- /dev/null +++ b/users/wpcarro/tools/monzo_ynab/main.go @@ -0,0 +1,43 @@ +// Exporting Monzo transactions to my YouNeedABudget.com (i.e. YNAB) +// account. YNAB unfortunately doesn't currently offer an Monzo integration. As +// a workaround and a practical excuse to learn Go, I decided to write one +// myself. +// +// This job is going to run N times per 24 hours. Monzo offers webhooks for +// reacting to certain types of events. I don't expect I'll need realtime data +// for my YNAB integration. That may change, however, so it's worth noting. + +package main + +import ( + "fmt" +) + +var ( + ynabAccountID = os.Getenv("ynab_account_id") +) + +//////////////////////////////////////////////////////////////////////////////// +// Business Logic +//////////////////////////////////////////////////////////////////////////////// + +// Convert a Monzo transaction struct, `tx`, into a YNAB transaction struct. +func toYnab(tx monzoSerde.Transaction) ynabSerde.Transaction { + return ynabSerde.Transaction{ + Id: tx.Id, + Date: tx.Created, + Amount: tx.Amount, + Memo: tx.Notes, + AccountId: ynabAccountID, + } +} + +func main() { + txs := monzo.TransactionsLast24Hours() + var ynabTxs []ynabSerde.Transaction{} + for tx := range txs { + append(ynabTxs, toYnab(tx)) + } + ynab.PostTransactions(ynabTxs) + os.Exit(0) +} |