sqlx-ledger 0.3.0

An embeddable double sided accounting ledger built on PG/SQLx
Documentation
mod helpers;

use rand::distributions::{Alphanumeric, DistString};
use sqlx_ledger::{tx_template::*, *};

#[tokio::test]
async fn test_tx_template() -> anyhow::Result<()> {
    let pool = helpers::init_pool().await?;

    let code = Alphanumeric.sample_string(&mut rand::thread_rng(), 32);

    let params = vec![ParamDefinition::builder()
        .name("input1")
        .r#type(ParamDataType::STRING)
        .default_expr("'input'")
        .build()
        .unwrap()];
    let tx_input = TxInput::builder()
        .effective("1")
        .journal_id("1")
        .build()
        .unwrap();
    let entries = vec![EntryInput::builder()
        .entry_type("'TEST_DR'")
        .account_id("param.recipient")
        .layer("'Settled'")
        .direction("'Settled'")
        .units("1290")
        .currency("'BTC'")
        .build()
        .unwrap()];
    let new_template = NewTxTemplate::builder()
        .code(code)
        .params(params)
        .tx_input(tx_input)
        .entries(entries)
        .build()
        .unwrap();
    SqlxLedger::new(&pool)
        .tx_templates()
        .create(new_template)
        .await
        .unwrap();

    Ok(())
}