electricity_bill_calc_service/service/synchronize.go
2023-08-04 17:11:10 +08:00

52 lines
1.3 KiB
Go

package service
import (
"electricity_bill_calc/global"
"electricity_bill_calc/logger"
"electricity_bill_calc/repository"
"electricity_bill_calc/vo"
"github.com/doug-martin/goqu/v9"
"go.uber.org/zap"
)
type _SynchronizeService struct {
log *zap.Logger
ds goqu.DialectWrapper
}
var SynchronizeService = _SynchronizeService{
log: logger.Named("Service", "Synchronize"),
ds: goqu.Dialect("postgres"),
}
func (ss _SynchronizeService) CreateSynchronizeConfiguration(userId string, form *vo.SynchronizeConfigurationCreateForm) error {
ss.log.Info("创建一条新的同步配置", zap.String("user id", userId))
ctx, cancel := global.TimeoutContext()
defer cancel()
tx, err := global.DB.Begin(ctx)
if err != nil {
ss.log.Error("无法启动数据库事务。", zap.Error(err))
return err
}
ok, err := repository.SynchronizeRepository.CreateSynchronizeConfiguration(tx, ctx, userId, form)
if err != nil {
ss.log.Error("无法创建新的同步配置。", zap.Error(err))
tx.Rollback(ctx)
return err
}
if !ok {
ss.log.Error("数据库未能记录新的同步配置。")
tx.Rollback(ctx)
return err
}
err = tx.Commit(ctx)
if err != nil {
ss.log.Error("未能成功提交数据库事务。", zap.Error(err))
tx.Rollback(ctx)
return err
}
return nil
}