MCPcopy Create free account
hub / github.com/SeaQL/sea-orm / loader_load_many

Function loader_load_many

tests/loader_tests.rs:47–113  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

45
46#[sea_orm_macros::test]
47async fn loader_load_many() -> Result<(), DbErr> {
48 let ctx = TestContext::new("loader_test_load_many").await;
49 create_tables(&ctx.db).await?;
50
51 let bakery_1 = insert_bakery(&ctx.db, "SeaSide Bakery").await?;
52 let bakery_2 = insert_bakery(&ctx.db, "Offshore Bakery").await?;
53 let bakery_3 = insert_bakery(&ctx.db, "Rocky Bakery").await?;
54
55 let baker_1 = insert_baker(&ctx.db, "Baker 1", bakery_1.id).await?;
56 let baker_2 = insert_baker(&ctx.db, "Baker 2", bakery_1.id).await?;
57
58 let baker_3 = insert_baker(&ctx.db, "John", bakery_2.id).await?;
59 let baker_4 = insert_baker(&ctx.db, "Baker 4", bakery_2.id).await?;
60
61 let bakeries = bakery::Entity::find().all(&ctx.db).await?;
62 let bakers = bakeries.load_many(baker::Entity, &ctx.db).await?;
63
64 assert_eq!(
65 bakeries,
66 [bakery_1.clone(), bakery_2.clone(), bakery_3.clone()]
67 );
68 assert_eq!(
69 bakers,
70 [
71 vec![baker_1.clone(), baker_2.clone()],
72 vec![baker_3.clone(), baker_4.clone()],
73 vec![]
74 ]
75 );
76
77 // load bakers again but with additional condition
78
79 let bakers = bakeries
80 .load_many(
81 baker::Entity::find().filter(baker::Column::Name.like("Baker%")),
82 &ctx.db,
83 )
84 .await?;
85
86 assert_eq!(
87 bakers,
88 [
89 vec![baker_1.clone(), baker_2.clone()],
90 vec![baker_4.clone()],
91 vec![]
92 ]
93 );
94
95 // now, start from baker
96
97 let bakers = baker::Entity::find().all(&ctx.db).await?;
98 let bakeries = bakers.load_one(bakery::Entity::find(), &ctx.db).await?;
99
100 // note that two bakers share the same bakery
101 assert_eq!(bakers, [baker_1, baker_2, baker_3, baker_4]);
102 assert_eq!(
103 bakeries,
104 [

Callers

nothing calls this directly

Calls 9

insert_bakeryFunction · 0.85
insert_bakerFunction · 0.85
load_manyMethod · 0.80
filterMethod · 0.80
likeMethod · 0.80
load_oneMethod · 0.80
newFunction · 0.50
create_tablesFunction · 0.50
allMethod · 0.45

Tested by

no test coverage detected