Files
cloud-services/pkg/db/queries/ecu_dtc.go

79 lines
1.8 KiB
Go

package queries
import (
"time"
"fiskerinc.com/modules/common"
"github.com/go-pg/pg/v10/orm"
"github.com/pkg/errors"
)
type ECUInterface interface {
Insert(dtc *[]common.DTC_ECU) (orm.Result, error)
UpdateTimestamp(dtc *common.DTC_ECU) error
Select(dtcecu common.DTC_ECUQuery, paging *PageQueryOptions) ([]common.DTC_ECU, error)
Count(filter common.DTC_ECUQuery) (int, error)
}
type ECU struct {
QueryBase
}
func (c *ECU) Insert(ecuDtc *[]common.DTC_ECU) (orm.Result, error) {
if len(*ecuDtc) > 0 {
return c.insert(ecuDtc)
}
return nil, nil
}
func (c *ECU) UpdateTimestamp(dtc *common.DTC_ECU) error {
_, err := c.GetDBConn().Model(dtc).
Where("vin = ?vin AND ecu = ?ecu AND trouble_code = ?trouble_code").
Set("updated_at = ?", time.Now()).
Update()
return errors.WithStack(err)
}
func (c *ECU) Select(filter common.DTC_ECUQuery, paging *PageQueryOptions) ([]common.DTC_ECU, error) {
dtcEcu := []common.DTC_ECU{}
query := c.GetDBConn().Model(&dtcEcu)
c.applyFilters(query, filter)
c.pageQuery(query, paging)
err := query.Select()
if err != nil {
return nil, errors.WithStack(err)
}
return dtcEcu, nil
}
func (c *ECU) applyFilters(query *orm.Query, filter common.DTC_ECUQuery) {
query.Where("vin = ?", filter.VIN)
if filter.ECU != "" {
query.Where("ecu = ?", filter.ECU)
}
if filter.TroubleCode != 0 {
query.Where("trouble_code = ?", filter.TroubleCode)
}
if filter.StartTime != nil {
query.Where("epoch_usec >= ?", filter.StartTime.Unix()*1000000)
}
if filter.EndTime != nil {
query.Where("epoch_usec <= ?", filter.EndTime.Unix()*1000000)
}
}
func (c *ECU) Count(filter common.DTC_ECUQuery) (int, error) {
ecu_dtc := common.DTC_ECU{}
query := c.GetDBConn().Model(&ecu_dtc)
c.applyFilters(query, filter)
return c.countWithStack(query.Count())
}