use a3s_orm::{
insert_into, orm_table, select_from, Database, SqliteDialect,
SqliteExecutor,
};
orm_table! {
struct Person => "person" {
id: i64 => "id",
name: String => "name",
age: i32 => "age",
}
}
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let executor = SqliteExecutor::open_in_memory().await?;
executor
.execute_schema(
"create table person (\
id integer primary key, \
name text not null, \
age integer not null)",
)
.await?;
let database = Database::new(SqliteDialect, executor);
database
.execute(
insert_into::<Person>()
.value(Person::id(), 1)
.value(Person::name(), "Ada")
.value(Person::age(), 36),
)
.await?;
let (name, age): (String, i32) = database
.fetch_one_as(
select_from::<Person>()
.select((Person::name(), Person::age()))
.filter(Person::id().eq(1)),
)
.await?;
assert_eq!((name.as_str(), age), ("Ada", 36));
Ok(())
}