- create
- use_db
- use_ns
SurrealDB create INSERT SELECT
examples/surrealdb/insert-select/Cargo.toml
[package] name = "in-docker-demo" version = "0.1.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] surrealdb = "2.0" serde = { version = "1.0", features = ["derive"] } tokio = { version = "1.35", features = ["macros", "rt-multi-thread"] }
examples/surrealdb/insert-select/src/main.rs
use serde::{Deserialize, Serialize}; use surrealdb::engine::remote::ws::Ws; use surrealdb::opt::auth::Root; 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 host = "127.0.0.1"; let port = "8000"; let dsn = format!("{host}:{port}"); let db = Surreal::new::<Ws>(dsn).await?; db.signin(Root { username: "root", password: "root", }) .await?; db.use_ns("demo").use_db("demo-1").await?; let args = std::env::args().collect::<Vec<String>>(); if args.len() == 2 { // Create a new message with a random id let created: Option<Record> = db .create("messages") .content(Message { text: args[1].to_owned(), }) .await?; dbg!(created); } else { // Select all the messages records let mut response = db.query("SELECT * from messages").await?; let messages: Vec<Message> = response.take(0)?; for message in &messages { println!("{}", message.text); } } Ok(()) }
$ cargo run -q "Hello World" [src/main.rs:34:9] created = [ Record { id: Thing { tb: "messages", id: String( "85d6tb5du6fsxp31wtnj", ), }, }, ] $ cargo run -q Hello World $ cargo run -q "Other message" [src/main.rs:34:9] created = [ Record { id: Thing { tb: "messages", id: String( "z17l4ylmkbyfj05iozqs", ), }, }, ] $ cargo run -q Hello World Other message