toasty_driver_integration_suite/tests/
one_model_composite_key.rs1use 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}