electricity_bill_calc_service/service/god_mode.go

47 lines
953 B
Go

package service
import (
"electricity_bill_calc/global"
"electricity_bill_calc/logger"
"electricity_bill_calc/repository"
"fmt"
"github.com/doug-martin/goqu/v9"
"go.uber.org/zap"
)
type _GMService struct {
l *zap.Logger
gm goqu.DialectWrapper
}
var GMService = _GMService{
logger.Named("Service", "GM"),
goqu.Dialect("postgres"),
}
func (gm _GMService) DeleteTenements(pid string, tenements []string) error {
var err error
ctx, cancel := global.TimeoutContext()
defer cancel()
tx, err := global.DB.Begin(ctx)
if err != nil {
gm.l.Error("未能启动数据库事务", zap.Error(err))
return fmt.Errorf("未能启动数据库事务,%w", err)
}
err = repository.GMRepository.DeleteMeterBinding(ctx, tx, pid, tenements)
if err != nil {
tx.Rollback(ctx)
return err
}
err = repository.GMRepository.DeleteTenements(ctx, tx, pid, tenements)
if err != nil {
tx.Rollback(ctx)
return err
}
tx.Commit(ctx)
return nil
}