forked from Concordium/concordium-rust-sdk
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpostgres.rs
81 lines (72 loc) · 2.06 KB
/
postgres.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
use clap::AppSettings;
use concordium_rust_sdk::{
id::types::AccountAddress,
postgres::{DatabaseClient, QueryOrder},
types::ContractAddress,
};
use futures::StreamExt;
use structopt::StructOpt;
use tokio_postgres::NoTls;
#[derive(StructOpt)]
struct App {
#[structopt(long = "account")]
account: AccountAddress,
#[structopt(
long = "db",
default_value = "host=localhost dbname=transaction-outcome user=postgres \
password=password port=5432",
help = "Database connection string."
)]
config: tokio_postgres::Config,
}
#[tokio::main(flavor = "multi_thread")]
async fn main() -> anyhow::Result<()> {
let app = {
let app = App::clap()
// .setting(AppSettings::ArgRequiredElseHelp)
.global_setting(AppSettings::ColoredHelp);
let matches = app.get_matches();
App::from_clap(&matches)
};
let config = app.config;
let db = DatabaseClient::create(config, NoTls).await?;
let addr: AccountAddress = app.account;
let rows = db
.query_account(&addr, 50, QueryOrder::Ascending { start: None })
.await?;
rows.for_each(|entry| async move {
println!("{:?}", entry.id);
})
.await;
let rows = db
.query_contract(ContractAddress::new(0, 0), 20, QueryOrder::Ascending {
start: None,
})
.await?;
rows.for_each(|entry| async move {
println!("{:?}", entry);
})
.await;
let rows = db
.query_account(&addr, 20, QueryOrder::Descending { start: None })
.await?;
rows.for_each(|entry| async move {
println!("{:?}", entry);
})
.await;
let rows = db
.query_contract(ContractAddress::new(0, 0), 20, QueryOrder::Descending {
start: None,
})
.await?;
rows.for_each(|entry| async move {
println!("{:?}", entry);
})
.await;
let rows = db.iterate_account(&addr, None).await?;
rows.for_each(|entry| async move {
println!("{:?}", entry.id);
})
.await;
Ok(())
}