我有一项服务可以一次性创建大量数据。假设我创建user -> user pic -> user contact -> user address
我为每个域创建的每个表。说,在user domain我有一个存储库来创建这样的用户:
stmt, err := db.Prepare(query)
checkError(err)
err = stmt.QueryRowContext(ctx, ...data).Scan(...model)
checkError(err)
return model
在我的案例中,每个存储库都使用Create Statement如上所示的 a,而我不使用db.BeginTx().
这是我谈论的一项服务:
dataUser, errCreate := user.repository.Create(ctx, modelUser)
dataPic, errCreatePic := pic.repository.Create(ctx, modelUserPic)
dataContact, errCreateContact := contact.repository.Create(ctx, modelUserContact)
dataAddress, errCreateAddress := address.repository.Create(ctx, modelUserAddress)
但是如果一个调用失败,在中间,父级将被提交到这里。是否可以在我创建的现有存储库中包装该案例? Transaction
或者我应该在存储库中创建一个方法来处理例如CreateWithTransaction()?
阿波罗的战车
料青山看我应如是
相关分类