INSERT and SELECT in Memory
examples/surrealdb/insert-select-in-memory/src/main.rs
use serde::{Deserialize, Serialize}; use surrealdb::engine::local::Db; use surrealdb::engine::local::Mem; use surrealdb::sql::Thing; use surrealdb::Surreal; #[derive(Debug, Serialize, Deserialize)] struct Message { text: String, } #[derive(Debug, Deserialize)] struct Record { #[allow(dead_code)] id: Thing, } #[tokio::main] async fn main() -> surrealdb::Result<()> { let db = Surreal::new::<Mem>(()).await?; db.use_ns("demo").use_db("insert-select-in-memory").await?; create_a_new_message_with_random_id(&db, "Hello World").await?; create_a_new_message_with_random_id(&db, "Another message").await?; select_all_the_messages(&db).await?; Ok(()) } async fn select_all_the_messages(db: &Surreal<Db>) -> surrealdb::Result<()> { let mut response = db.query("SELECT * from messages").await?; let messages: Vec<Message> = response.take(0)?; for message in &messages { println!("{}", message.text); } Ok(()) } async fn create_a_new_message_with_random_id( db: &Surreal<Db>, message: &str, ) -> surrealdb::Result<()> { let created: Vec<Record> = db .create("messages") .content(Message { text: message.to_owned(), }) .await?; println!("{created:?}"); Ok(()) }
[Record { id: Thing { tb: "messages", id: String("s727xixdknh1v7fco4l3") } }] [Record { id: Thing { tb: "messages", id: String("tnj5imy5fx4v8qvurcv7") } }] Hello World Another message