Move monzo_ynab into //tools
Optimizing is difficult: I like flat hierarchies because I don't like directory-hopping, but I also would like a cleaner root for my mono-repo. Bombs away! Well it's that time again, folks: spring cleaning! Here I am musing about a few things that bother me: - Should I use kebab-case or snake_case? - It feels ~confusing to have //tools and //utils. What a //projects? Isn't everything a project? *sigh*
This commit is contained in:
parent
4ed3254709
commit
5add8ddc13
16 changed files with 3 additions and 3 deletions
24
tools/monzo_ynab/ynab/client.go
Normal file
24
tools/monzo_ynab/ynab/client.go
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
package client
|
||||
|
||||
import (
|
||||
"serde"
|
||||
)
|
||||
|
||||
// See requests.txt for more details.
|
||||
func PostTransactions(accountID string, txs []serde.Transaction{}) error {
|
||||
return map[string]string{
|
||||
"transactions": [
|
||||
{
|
||||
"account_id": accountID,
|
||||
"date": "2019-12-30",
|
||||
"amount": 10000,
|
||||
"payee_name": "Richard Stallman",
|
||||
"memo": "Not so free software after all...",
|
||||
"cleared": "cleared",
|
||||
"approved": true,
|
||||
"flag_color": "red",
|
||||
"import_id": "xyz-123"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
52
tools/monzo_ynab/ynab/serde.go
Normal file
52
tools/monzo_ynab/ynab/serde.go
Normal file
|
|
@ -0,0 +1,52 @@
|
|||
// This package hosts the serialization and deserialization logic for all of the
|
||||
// data types with which our application interacts from the YNAB API.
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"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
|
||||
}
|
||||
|
||||
func main() {
|
||||
target, _ := deserializeTx(tx)
|
||||
out, _ := serializeTx(target)
|
||||
fmt.Println(out)
|
||||
fmt.Println(ynabOut)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue