Skip to main content

octra_sqlite/client/
raw.rs

1#[cfg(all(feature = "cli", feature = "http"))]
2use super::write::prepare_write_with_owner_auth;
3#[cfg(feature = "http")]
4use super::{
5    error::Result,
6    results::AuthInfo,
7    rpc::{
8        auth_info_with, circle_info_with, next_nonce_with, program_info_with, query_typed_with,
9        view_with, wait_for_transaction_with,
10    },
11    safety::Operation,
12    transport::{HttpTransport, RpcTraceMode},
13    write::{prepare_write_with, sign_write, submit_signed_write_with},
14};
15
16pub use super::session::{
17    ClientOptions, Session, build_control_session, build_session, resolve_database_target,
18    resolve_wallet_path,
19};
20pub use super::wallet::{discover_wallet_path, wallet_caller};
21
22#[cfg(feature = "cli")]
23pub(crate) use super::wallet::{
24    WalletMaterial, wallet_file_material, wallet_material_from_private_key,
25};
26
27#[cfg(feature = "http")]
28use crate::protocol::tx::Tx;
29#[cfg(feature = "http")]
30use serde_json::Value;
31
32#[cfg(feature = "http")]
33pub fn view(session: &Session, method: &str, params: Vec<Value>) -> Result<Value> {
34    let transport = HttpTransport::default();
35    view_with(&transport, session, method, params)
36}
37
38#[cfg(feature = "http")]
39pub fn query_typed(session: &Session, sql: &str) -> Result<Value> {
40    let transport = HttpTransport::default();
41    query_typed_with(&transport, session, sql)
42}
43
44#[cfg(feature = "http")]
45pub fn query_typed_traced(
46    session: &Session,
47    sql: &str,
48    trace_path: &std::path::Path,
49    trace_mode: RpcTraceMode,
50) -> Result<Value> {
51    let transport = HttpTransport::with_trace_jsonl_mode(trace_path, trace_mode)?;
52    query_typed_with(&transport, session, sql)
53}
54
55#[cfg(feature = "http")]
56pub fn auth_info(session: &Session) -> Result<AuthInfo> {
57    let transport = HttpTransport::default();
58    auth_info_with(&transport, session)
59}
60
61#[cfg(feature = "http")]
62pub fn program_info(session: &Session) -> Result<Value> {
63    let transport = HttpTransport::default();
64    program_info_with(&transport, session)
65}
66
67#[cfg(feature = "http")]
68pub fn circle_info(session: &Session) -> Result<Value> {
69    let transport = HttpTransport::default();
70    circle_info_with(&transport, session)
71}
72
73#[cfg(feature = "http")]
74pub fn exec_sql(session: &Session, sql: &str, no_wait: bool) -> Result<Value> {
75    let transport = HttpTransport::default();
76    let operation = if no_wait {
77        Operation::ExecuteNoWait
78    } else {
79        Operation::Execute
80    };
81    let prepared = prepare_write_with(&transport, session, sql, operation)?;
82    let signed = sign_write(session, &prepared)?;
83    submit_signed_write_with(&transport, session, signed, no_wait)
84}
85
86#[cfg(all(feature = "cli", feature = "http"))]
87pub(crate) fn exec_sql_with_owner_auth(
88    session: &Session,
89    sql: &str,
90    db_id: &str,
91    owner_pubkey: &str,
92) -> Result<Value> {
93    let transport = HttpTransport::default();
94    let prepared = prepare_write_with_owner_auth(
95        &transport,
96        session,
97        sql,
98        Operation::Execute,
99        db_id,
100        owner_pubkey,
101    )?;
102    let signed = sign_write(session, &prepared)?;
103    submit_signed_write_with(&transport, session, signed, false)
104}
105
106#[cfg(feature = "http")]
107pub fn next_nonce(session: &Session) -> Result<i64> {
108    let transport = HttpTransport::default();
109    next_nonce_with(&transport, session)
110}
111
112#[cfg(feature = "http")]
113pub fn submit_tx(session: &Session, tx: Tx, no_wait: bool) -> Result<Value> {
114    let transport = HttpTransport::default();
115    super::write::sign_and_submit_tx_with(&transport, session, tx, no_wait)
116}
117
118#[cfg(feature = "http")]
119pub fn wait_for_transaction(session: &Session, tx_hash: &str) -> Result<Value> {
120    let transport = HttpTransport::default();
121    wait_for_transaction_with(&transport, session, tx_hash)
122}