如何在存储库之间共享事务?

Rom*_*kyi 6 rust rust-sqlx

我使用sqlx与 Postgres 数据库进行通信。我试图用存储库模式抽象数据库通信。另外,通过这个抽象,我想使用工作单元模式在存储库之间共享数据库事务。我遇到的唯一问题是,如果没有明确提供参数(例如) ,我不知道如何sqlx在这些存储库之间共享事务。我想在(工作单元)抽象中创建和共享事务。transactionsaverepository_x.save(entity, transaction)uow

我想实现这样的目标

struct CommandHandler {
  unit_of_work: UnitOfWork
}

impl CommandHandler {
  pub fn handle(&self, &command: Command) {
    let repository_a = self.unit_of_work.repository_a();
    let repository_b = self.unit_of_work.repository_b();    

    let entity_a = repository_a.get_by_id(command.id);
    let entity_b = repository_b.get_by_id(entity_a.id);


    unit_of_work.start_transaction();

    repository_a.save(entity_a);
    repository_b.save(entity_b);

    unit_of_work.commit_transaction();
  }
}

Run Code Online (Sandbox Code Playgroud)

unit_of_work有谁知道执行上述示例的结构的实现是什么样的?