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

Function transaction_nested

tests/transaction_tests.rs:405–649  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

403
404#[sea_orm_macros::test]
405pub async fn transaction_nested() {
406 let ctx = TestContext::new("transaction_nested_test").await;
407 create_tables(&ctx.db).await.unwrap();
408
409 ctx.db
410 .transaction::<_, _, DbErr>(|txn| {
411 Box::pin(async move {
412 let _ = bakery::ActiveModel {
413 name: Set("SeaSide Bakery".to_owned()),
414 profit_margin: Set(10.4),
415 ..Default::default()
416 }
417 .save(txn)
418 .await?;
419
420 let _ = bakery::ActiveModel {
421 name: Set("Top Bakery".to_owned()),
422 profit_margin: Set(15.0),
423 ..Default::default()
424 }
425 .save(txn)
426 .await?;
427
428 // Try nested transaction committed
429 txn.transaction::<_, _, DbErr>(|txn| {
430 Box::pin(async move {
431 let _ = bakery::ActiveModel {
432 name: Set("Nested Bakery".to_owned()),
433 profit_margin: Set(88.88),
434 ..Default::default()
435 }
436 .save(txn)
437 .await?;
438
439 let bakeries = Bakery::find()
440 .filter(bakery::Column::Name.contains("Bakery"))
441 .all(txn)
442 .await?;
443
444 assert_eq!(bakeries.len(), 3);
445
446 // Try nested-nested transaction rollbacked
447 let is_err = txn
448 .transaction::<_, _, DbErr>(|txn| {
449 Box::pin(async move {
450 let _ = bakery::ActiveModel {
451 name: Set("Rock n Roll Bakery".to_owned()),
452 profit_margin: Set(28.8),
453 ..Default::default()
454 }
455 .save(txn)
456 .await?;
457
458 let bakeries = Bakery::find()
459 .filter(bakery::Column::Name.contains("Bakery"))
460 .all(txn)
461 .await?;
462

Callers

nothing calls this directly

Calls 9

unwrapMethod · 0.80
saveMethod · 0.80
filterMethod · 0.80
containsMethod · 0.80
newFunction · 0.50
create_tablesFunction · 0.50
QueryClass · 0.50
allMethod · 0.45
deleteMethod · 0.45

Tested by

no test coverage detected