Bruno BELANYI
ab8ecf8121
transaction: use proper 'ParseError' type
2022-08-23 14:05:03 +02:00
Bruno BELANYI
19b5f3390d
core: add arithmetic operators for 'TxAmount'
2022-08-23 14:05:03 +02:00
Bruno BELANYI
963748e1d9
core: define 'TxAmount::ZERO'
2022-08-23 14:05:03 +02:00
Bruno BELANYI
ffd6a20a30
transaction: add CSV deserialization
...
It is unfortunate that both [1] and [2] conspire to make this code way
worse than it could otherwise be with a saner (de)serialization format.
We both need to introduce `TransactionRecord` due to tagged enums not
being powerful enough in CSV, and make its `amount` field optional to
deal with the varying number of fields for each kind of transaction.
[1]: https://github.com/BurntSushi/rust-csv/issues/211
[2]: https://github.com/BurntSushi/rust-csv/issues/172
2022-08-23 14:05:03 +02:00
Bruno BELANYI
c7e64692e6
lib: add 'Transaction' variants
...
Represent each enum variant with its own type to allow stronger typing
when processing only a singular type of transactions.
2022-08-23 14:05:03 +02:00
Bruno BELANYI
eae54b8ce0
lib: add core type definitions
2022-08-23 14:05:03 +02:00
Bruno BELANYI
1ea0505098
cargo: move 'processor' to 'bin' directory
...
I like to keep executables in their own folders, and the as much of the
business logic in a library at the root.
2022-08-22 17:49:06 +02:00
Bruno BELANYI
c17a70bb39
cargo: add 'fpdec' dependency
...
Instead of implementing custom fixed-point decimal numbers, let's make
use of an existing implementation until it is deemed inappropriate.
2022-08-22 17:25:18 +02:00
Bruno BELANYI
aedc20526a
git: ignore generated files
2022-08-22 17:11:53 +02:00
Bruno BELANYI
aae81e0e91
nix: add direnv integration
2022-08-22 17:11:53 +02:00
Bruno BELANYI
e53634976c
nix: init flake environment
2022-08-22 17:11:53 +02:00
Bruno BELANYI
7797f40d2e
cargo: init build system
2022-08-22 17:11:53 +02:00