dcWorkingChestModel.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 _ DcWorkingChestModel = (*customDcWorkingChestModel)(nil)
  10. type (
  11. // DcWorkingChestModel is an interface to be customized, add more methods here,
  12. // and implement the added methods in customDcWorkingChestModel.
  13. DcWorkingChestModel interface {
  14. dcWorkingChestModel
  15. FindOneByCode(ctx context.Context, projectId int64, deviceCode string) (*DcWorkingChest, error)
  16. Search(ctx context.Context, projectId int64, deviceCode, st, et string, offset, limit int64, orderBy string) ([]DcWorkingChest, error)
  17. }
  18. customDcWorkingChestModel struct {
  19. *defaultDcWorkingChestModel
  20. }
  21. )
  22. // NewDcWorkingChestModel returns a model for the database table.
  23. func NewDcWorkingChestModel(conn sqlx.SqlConn) DcWorkingChestModel {
  24. return &customDcWorkingChestModel{
  25. defaultDcWorkingChestModel: newDcWorkingChestModel(conn),
  26. }
  27. }
  28. func (m *defaultDcWorkingChestModel) FindOneByCode(ctx context.Context, projectId int64, deviceCode string) (*DcWorkingChest, error) {
  29. var resp DcWorkingChest
  30. query := fmt.Sprintf("select %s from %s where `project_id` = ? and `device_code` = ? order by c_time desc limit 1", dcWorkingChestRows, m.table)
  31. err := m.conn.QueryRowCtx(ctx, &resp, query, projectId, deviceCode)
  32. switch err {
  33. case nil:
  34. return &resp, nil
  35. case sqlc.ErrNotFound:
  36. return nil, ErrNotFound
  37. default:
  38. return nil, err
  39. }
  40. }
  41. func (m *defaultDcWorkingChestModel) Search(ctx context.Context, projectId int64, deviceCode, st, et string, offset, limit int64, orderBy string) ([]DcWorkingChest, error) {
  42. var resp []DcWorkingChest
  43. condition := []string{"`project_id`=?", "`device_code`=?"}
  44. vars := []interface{}{projectId, deviceCode}
  45. if st != "" {
  46. condition = append(condition, "`c_time`>=?")
  47. vars = append(vars, st)
  48. }
  49. if et != "" {
  50. condition = append(condition, "`c_time`<?")
  51. vars = append(vars, et)
  52. }
  53. if orderBy == "" {
  54. orderBy = "id desc"
  55. }
  56. query := fmt.Sprintf("select %s from %s where %s order by %s limit %d, %d", dcWorkingChestRows, m.table, strings.Join(condition, " and "), orderBy, offset, limit)
  57. err := m.conn.QueryRowsCtx(ctx, &resp, query, vars...)
  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. }