dcWorkingPumpModel.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package model
  2. import (
  3. "context"
  4. "fmt"
  5. "github.com/zeromicro/go-zero/core/stores/sqlc"
  6. "github.com/zeromicro/go-zero/core/stores/sqlx"
  7. "strings"
  8. )
  9. var _ DcWorkingPumpModel = (*customDcWorkingPumpModel)(nil)
  10. type (
  11. // DcWorkingPumpModel is an interface to be customized, add more methods here,
  12. // and implement the added methods in customDcWorkingPumpModel.
  13. DcWorkingPumpModel interface {
  14. dcWorkingPumpModel
  15. FindOneByCode(ctx context.Context, projectId int64, deviceCode string) (*DcWorkingPump, error)
  16. Search(ctx context.Context, projectId int64, deviceCode, st, et string, offset, limit int64, orderBy string) ([]DcWorkingPump, error)
  17. }
  18. customDcWorkingPumpModel struct {
  19. *defaultDcWorkingPumpModel
  20. }
  21. )
  22. // NewDcWorkingPumpModel returns a model for the database table.
  23. func NewDcWorkingPumpModel(conn sqlx.SqlConn) DcWorkingPumpModel {
  24. return &customDcWorkingPumpModel{
  25. defaultDcWorkingPumpModel: newDcWorkingPumpModel(conn),
  26. }
  27. }
  28. func (m *defaultDcWorkingPumpModel) Search(ctx context.Context, projectId int64, deviceCode, st, et string, offset, limit int64, orderBy string) ([]DcWorkingPump, error) {
  29. var resp []DcWorkingPump
  30. condition := []string{"`project_id`=?", "`device_code`=?"}
  31. vars := []interface{}{projectId, deviceCode}
  32. if st != "" {
  33. condition = append(condition, "`c_time`>=?")
  34. vars = append(vars, st)
  35. }
  36. if et != "" {
  37. condition = append(condition, "`c_time`<?")
  38. vars = append(vars, et)
  39. }
  40. if orderBy == "" {
  41. orderBy = "id desc"
  42. }
  43. query := fmt.Sprintf("select %s from %s where %s order by %s limit %d, %d", dcWorkingPumpRows, m.table, strings.Join(condition, " and "), orderBy, offset, limit)
  44. err := m.conn.QueryRowsCtx(ctx, &resp, query, vars...)
  45. switch err {
  46. case nil:
  47. return resp, nil
  48. case sqlc.ErrNotFound:
  49. return nil, ErrNotFound
  50. default:
  51. return nil, err
  52. }
  53. }
  54. func (m *defaultDcWorkingPumpModel) FindOneByCode(ctx context.Context, projectId int64, deviceCode string) (*DcWorkingPump, error) {
  55. var resp DcWorkingPump
  56. query := fmt.Sprintf("select %s from %s where `project_id` = ? and `device_code` = ? order by c_time desc limit 1", dcWorkingPumpRows, m.table)
  57. err := m.conn.QueryRowCtx(ctx, &resp, query, projectId, deviceCode)
  58. switch err {
  59. case nil:
  60. return &resp, nil
  61. case sqlc.ErrNotFound:
  62. return nil, ErrNotFound
  63. default:
  64. return nil, err
  65. }
  66. }