Skip to main content

sdk_db/
sdk_db.rs

1extern crate tetratto_core;
2use tetratto_core::{
3    model::apps::{AppDataSelectMode, AppDataSelectQuery, AppDataQueryResult},
4    sdk::{DataClient, SimplifiedQuery},
5};
6use std::env::var;
7
8// mirror of https://trisua.com/shrimpcamp/tetratto/src/branch/master/example/app_sdk_test.js ... but in rust
9#[tokio::main]
10pub async fn main() {
11    let client = DataClient::new(
12        Some("http://localhost:4118".to_string()),
13        var("APP_API_KEY").unwrap(),
14    );
15
16    println!("data used: {}", client.get_app().await.unwrap().data_used);
17
18    // record insert
19    client
20        .insert("rust_test".to_string(), "Hello, world!".to_string())
21        .await
22        .unwrap();
23    println!("record created");
24    println!("data used: {}", client.get_app().await.unwrap().data_used);
25
26    // testing record query then delete
27    let record = match client
28        .query(&SimplifiedQuery {
29            query: AppDataSelectQuery::KeyIs("rust_test".to_string()),
30            mode: AppDataSelectMode::One(0),
31            cache: false,
32        })
33        .await
34        .unwrap()
35    {
36        AppDataQueryResult::One(x) => x,
37        AppDataQueryResult::Many(_) => unreachable!(),
38    };
39
40    println!("{:?}", record);
41
42    client
43        .update(record.id, "Hello, world! 1".to_string())
44        .await
45        .unwrap();
46    println!("record updated");
47    println!("data used: {}", client.get_app().await.unwrap().data_used);
48
49    let record = match client
50        .query(&SimplifiedQuery {
51            query: AppDataSelectQuery::KeyIs("rust_test".to_string()),
52            mode: AppDataSelectMode::One(0),
53            cache: false,
54        })
55        .await
56        .unwrap()
57    {
58        AppDataQueryResult::One(x) => x,
59        AppDataQueryResult::Many(_) => unreachable!(),
60    };
61
62    println!("{:?}", record);
63
64    client.remove(record.id).await.unwrap();
65    println!("record deleted");
66    println!("data used: {}", client.get_app().await.unwrap().data_used);
67}