dcWorkingValveModel.go 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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 _ DcWorkingValveModel = (*customDcWorkingValveModel)(nil)
  10. type (
  11. // DcWorkingValveModel is an interface to be customized, add more methods here,
  12. // and implement the added methods in customDcWorkingValveModel.
  13. DcWorkingValveModel interface {
  14. dcWorkingValveModel
  15. FindOneByCode(ctx context.Context, projectId int64, deviceCode string) (*DcWorkingValve, error)
  16. Search(ctx context.Context, projectId int64, deviceCode, st, et string, offset, limit int64, orderBy string) ([]DcWorkingValve, error)
  17. }
  18. customDcWorkingValveModel struct {
  19. *defaultDcWorkingValveModel
  20. }
  21. )
  22. // NewDcWorkingValveModel returns a model for the database table.
  23. func NewDcWorkingValveModel(conn sqlx.SqlConn) DcWorkingValveModel {
  24. return &customDcWorkingValveModel{
  25. defaultDcWorkingValveModel: newDcWorkingValveModel(conn),
  26. }
  27. }
  28. func (m *defaultDcWorkingValveModel) Search(ctx context.Context, projectId int64, deviceCode, st, et string, offset, limit int64, orderBy string) ([]DcWorkingValve, error) {
  29. var resp []DcWorkingValve
  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", dcWorkingValveRows, 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 *defaultDcWorkingValveModel) FindOneByCode(ctx context.Context, projectId int64, deviceCode string) (*DcWorkingValve, error) {
  55. var resp DcWorkingValve
  56. query := fmt.Sprintf("select %s from %s where `project_id` = ? and `device_code` = ? order by c_time desc limit 1", dcWorkingValveRows, 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. }