toasty_driver_integration_suite/tests/
one_model_composite_key.rs

1use crate::prelude::*;
2
3#[driver_test]
4pub async fn batch_get_by_key(test: &mut Test) -> Result<()> {
5    #[derive(Debug, toasty::Model)]
6    struct Item {
7        #[key]
8        one: String,
9
10        #[key]
11        two: String,
12    }
13
14    let mut db = test.setup_db(models!(Item)).await;
15    let mut keys = vec![];
16
17    for i in 0..5 {
18        let item = Item::create()
19            .one(format!("one-{i}"))
20            .two(format!("two-{i}"))
21            .exec(&mut db)
22            .await?;
23
24        keys.push((item.one.clone(), item.two.clone()));
25    }
26
27    let items: Vec<_> = Item::filter_by_one_and_two_batch([
28        (&keys[0].0, &keys[0].1),
29        (&keys[1].0, &keys[1].1),
30        (&keys[2].0, &keys[2].1),
31    ])
32    .exec(&mut db)
33    .await?;
34
35    assert_eq!(3, items.len());
36
37    for item in items {
38        assert!(keys
39            .iter()
40            .any(|key| item.one == key.0 && item.two == key.1));
41    }
42    Ok(())
43}