use ormlite::model::*;
use ormlite::Connection;
#[derive(Model, Debug)]
#[ormlite(insertable = InsertPerson)]
pub struct Person {
pub id: i32,
pub name: String,
pub age: i16,
}
pub static CREATE_TABLE_SQL: &str = "CREATE TABLE person (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)";
#[tokio::test]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut conn = ormlite::sqlite::SqliteConnection::connect(":memory:").await.unwrap();
env_logger::init();
ormlite::query(CREATE_TABLE_SQL).execute(&mut conn).await?;
let mut john = Person {
id: 1,
name: "John".to_string(),
age: 99,
}
.insert(&mut conn)
.await?;
println!("{:?}", john);
println!("select");
let people = Person::select().where_bind("age > ?", 50).fetch_all(&mut conn).await?;
println!("select query builder {:?}", people);
let r = sqlx::query_as::<_, Person>("select * from person where age > ?")
.bind(50)
.fetch_all(&mut conn)
.await?;
println!("sqlx {:?}", r);
john.age = john.age + 1;
john = john.update_all_fields(&mut conn).await?;
println!("{:?}", john);
john.delete(&mut conn).await?;
Person::fetch_one(1, &mut conn).await.expect_err("Should not exist");
Person {
id: 1,
name: "Dan".to_string(),
age: 28,
}
.insert(&mut conn)
.await?;
let dan = Person::fetch_one(1, &mut conn).await?;
println!("get_one {:?}", dan);
let dan2 = dan.update_partial().age(29).update(&mut conn).await?;
println!("dan1 {:?}", dan);
println!("dan2 {:?}", dan2);
InsertPerson {
name: "Albert Einstein".to_string(),
age: 60,
}
.insert(&mut conn)
.await?;
let kurt = Person::builder()
.name("Kurt".to_string())
.age(29)
.insert(&mut conn)
.await?;
println!("built {:?}", kurt);
let people = Person::select().where_("age > ?").bind(50).fetch_all(&mut conn).await?;
println!("select builder {:?}", people);
let people = Person::query("SELECT * FROM person WHERE age > ?")
.bind(20)
.fetch_all(&mut conn)
.await?;
println!("raw query: {:?}", people);
Ok(())
}