use rust_query::{
Database, Transaction,
migration::{Config, schema},
};
#[schema(MySchema)]
pub mod vN {
pub struct User {
pub name: String,
}
pub struct Image {
pub description: String,
pub uploaded_by: rust_query::TableRow<User>,
}
}
use v0::*;
fn main() {
let database = Database::new(Config::open_in_memory());
database.transaction_mut_ok(|txn| {
do_stuff_with_database(txn);
});
}
fn do_stuff_with_database(txn: &mut Transaction<MySchema>) {
let mike = User {
name: "mike".to_owned(),
};
let mike_id = txn.insert_ok(mike);
let dog_picture = Image {
description: "dog".to_owned(),
uploaded_by: mike_id,
};
let _picture_id = txn.insert_ok(dog_picture);
let mike_pictures = txn.query(|rows| {
let picture = rows.join(Image);
rows.filter(picture.uploaded_by.eq(mike_id));
rows.into_vec(&picture.description)
});
println!("{mike_pictures:?}"); }
#[test]
fn run() {
main();
}
#[test]
#[cfg(feature = "dev")]
fn schema_hash() {
use expect_test::expect;
use rust_query::migration::hash_schema;
expect!["e6dbf93daba3ccfa"].assert_eq(&hash_schema::<v0::MySchema>());
}