tetratto/crates/core/examples/sdk_db.rs

66 lines
1.9 KiB
Rust
Raw Normal View History

2025-07-19 15:31:06 -04:00
extern crate tetratto_core;
use tetratto_core::{
model::apps::{AppDataSelectMode, AppDataSelectQuery, AppDataQueryResult},
sdk::{DataClient, SimplifiedQuery},
};
use std::env::var;
// mirror of https://trisua.com/t/tetratto/src/branch/master/example/app_sdk_test.js ... but in rust
#[tokio::main]
pub async fn main() {
let client = DataClient::new(
Some("http://localhost:4118".to_string()),
var("APP_API_KEY").unwrap(),
);
println!("data used: {}", client.get_app().await.unwrap().data_used);
// record insert
client
.insert("rust_test".to_string(), "Hello, world!".to_string())
.await
.unwrap();
println!("record created");
println!("data used: {}", client.get_app().await.unwrap().data_used);
// testing record query then delete
let record = match client
.query(&SimplifiedQuery {
query: AppDataSelectQuery::KeyIs("rust_test".to_string()),
mode: AppDataSelectMode::One(0),
})
.await
.unwrap()
{
AppDataQueryResult::One(x) => x,
AppDataQueryResult::Many(_) => unreachable!(),
};
println!("{:?}", record);
client
.update(record.id, "Hello, world! 1".to_string())
.await
.unwrap();
println!("record updated");
println!("data used: {}", client.get_app().await.unwrap().data_used);
let record = match client
.query(&SimplifiedQuery {
query: AppDataSelectQuery::KeyIs("rust_test".to_string()),
mode: AppDataSelectMode::One(0),
})
.await
.unwrap()
{
AppDataQueryResult::One(x) => x,
AppDataQueryResult::Many(_) => unreachable!(),
};
println!("{:?}", record);
client.remove(record.id).await.unwrap();
println!("record deleted");
println!("data used: {}", client.get_app().await.unwrap().data_used);
}