79 lines
1.8 KiB
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())
|
|
}
|