我使用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有谁知道执行上述示例的结构的实现是什么样的?