plain.go 724 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. // Copyright 2019 getensh.com. All rights reserved.
  2. // Use of this source code is governed by getensh.com.
  3. package transtasker
  4. import "gorm.io/gorm"
  5. // PlainTask 普通任务,即本身不支持事务的任务,如redis/es
  6. type PlainTask struct {
  7. exec Task
  8. rollback Task
  9. }
  10. // Exec 普通任务执行
  11. func (p *PlainTask) Exec(db *gorm.DB) error {
  12. if p.exec != nil {
  13. return p.exec(db)
  14. }
  15. return nil
  16. }
  17. // Rollback 普通任务回滚
  18. func (p *PlainTask) Rollback(db *gorm.DB) error {
  19. if p.rollback != nil {
  20. return p.rollback(db)
  21. }
  22. return nil
  23. }
  24. // NewPlainTask 新建一个普通任务
  25. func NewPlainTask(exec Task, rollback Task) Tasker {
  26. return &PlainTask{
  27. exec: exec,
  28. rollback: rollback,
  29. }
  30. }