tvl-depot/users/wpcarro/tools/monzo_ynab/main.go
William Carroll b6d143e5d2 fix(wpcarro/nix): Remove <briefcase> references
Angle-bracketed references are a Nix anti-pattern, and thankfully this
repository enforces this as a standard.

TL;DR:
- Drop angle-bracketed references
- Change `briefcase` -> `users.wpcarro`
- Fix any resulting regressions
- Fix //users/wpcarro/tools/simple_vim
- Mark //users/wpcarro/boilerplate/typescript and related projects
  as broken
- drop .skip-subtree file, enabling depot CI

Change-Id: I7153cbabafa617bfd6b199370cbec65cb75441f6
Reviewed-on: https://cl.tvl.fyi/c/depot/+/4325
Tested-by: BuildkiteCI
Reviewed-by: wpcarro <wpcarro@gmail.com>
Reviewed-by: tazjin <mail@tazj.in>
Reviewed-by: grfn <grfn@gws.fyi>
Autosubmit: wpcarro <wpcarro@gmail.com>
2021-12-15 15:49:40 +00:00

44 lines
1.2 KiB
Go

// 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 (
"os"
"monzoSerde"
)
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)
}