dcitemhistorydatamodel.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package model
  2. import (
  3. "context"
  4. "fmt"
  5. "github.com/zeromicro/go-zero/core/stores/sqlx"
  6. )
  7. var _ DcItemHistoryDataModel = (*customDcItemHistoryDataModel)(nil)
  8. type (
  9. // DcItemHistoryDataModel is an interface to be customized, add more methods here,
  10. // and implement the added methods in customDcItemHistoryDataModel.
  11. DcItemHistoryDataModel interface {
  12. dcItemHistoryDataModel
  13. MultiInsert(ctx context.Context, datas []DcItemHistoryData) (int64, error)
  14. }
  15. customDcItemHistoryDataModel struct {
  16. *defaultDcItemHistoryDataModel
  17. }
  18. )
  19. // NewDcItemHistoryDataModel returns a model for the database table.
  20. func NewDcItemHistoryDataModel(conn sqlx.SqlConn) DcItemHistoryDataModel {
  21. return &customDcItemHistoryDataModel{
  22. defaultDcItemHistoryDataModel: newDcItemHistoryDataModel(conn),
  23. }
  24. }
  25. func (m *defaultDcItemHistoryDataModel) MultiInsert(ctx context.Context, datas []DcItemHistoryData) (int64, error) {
  26. query := fmt.Sprintf("insert into %s (%s) values (?, ?, ?, ?)", m.table, dcItemHistoryDataRowsExpectAutoSet)
  27. if bulk, err := sqlx.NewBulkInserter(m.conn, query); err == nil {
  28. for _, data := range datas {
  29. if err = bulk.Insert(data.ProjectId, data.ItemName, data.Val, data.CTime); err != nil {
  30. return 0, err
  31. }
  32. }
  33. bulk.Flush()
  34. return int64(len(datas)), nil
  35. } else {
  36. return 0, err
  37. }
  38. }