find.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. package sqltemplate
  2. // 通过id查询
  3. var FindOne = `
  4. func (m *{{.upperObject}}Model) FindOne({{.lowerPrimaryKey}} {{.dataType}}) (*{{.upperObject}}, error) {
  5. {{if .withCache}}{{.cacheKey}}
  6. var resp {{.upperObject}}
  7. err := m.QueryRow(&resp, {{.cacheKeyVariable}}, func(conn sqlx.SqlConn, v interface{}) error {
  8. query := ` + "`" + `select ` + "`" + ` + {{.lowerObject}}Rows + ` + "`" + ` from ` + "` + " + `m.table ` + " + `" + ` where {{.snakePrimaryKey}} = ? limit 1` + "`" + `
  9. return conn.QueryRow(v, query, {{.lowerPrimaryKey}})
  10. })
  11. switch err {
  12. case nil:
  13. return &resp, nil
  14. case sqlc.ErrNotFound:
  15. return nil, ErrNotFound
  16. default:
  17. return nil, err
  18. }{{else}}query := ` + "`" + `select ` + "`" + ` + {{.lowerObject}}Rows + ` + "`" + ` from ` + "` + " + `m.table ` + " + `" + ` where {{.snakePrimaryKey}} = ? limit 1` + "`" + `
  19. var resp {{.upperObject}}
  20. err := m.QueryRowNoCache(&resp, query, {{.lowerPrimaryKey}})
  21. switch err {
  22. case nil:
  23. return &resp, nil
  24. case sqlc.ErrNotFound:
  25. return nil, ErrNotFound
  26. default:
  27. return nil, err
  28. }{{end}}
  29. }
  30. `
  31. // 通过指定字段查询
  32. var FindOneByField = `
  33. func (m *{{.upperObject}}Model) FindOneBy{{.upperFields}}({{.in}}) (*{{.upperObject}}, error) {
  34. {{if .onlyOneFiled}}{{if .withCache}}{{.cacheKey}}
  35. var resp {{.upperObject}}
  36. err := m.QueryRowIndex(&resp, {{.cacheKeyVariable}}, func(primary interface{}) string {
  37. return fmt.Sprintf("%s%v", {{.primaryKeyDefine}}, primary)
  38. }, func(conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
  39. query := ` + "`" + `select ` + "`" + ` + {{.lowerObject}}Rows + ` + "`" + ` from ` + "` + " + `m.table ` + " + `" + ` where {{.snakeField}} = ? limit 1` + "`" + `
  40. if err := conn.QueryRow(&resp, query, {{.lowerField}}); err != nil {
  41. return nil, err
  42. }
  43. return resp.{{.UpperPrimaryKey}}, nil
  44. }, func(conn sqlx.SqlConn, v, primary interface{}) error {
  45. query := ` + "`" + `select ` + "`" + ` + {{.lowerObject}}Rows + ` + "`" + ` from ` + "` + " + `m.table ` + " + `" + ` where {{.primarySnakeField}} = ? limit 1` + "`" + `
  46. return conn.QueryRow(v, query, primary)
  47. })
  48. switch err {
  49. case nil:
  50. return &resp, nil
  51. case sqlc.ErrNotFound:
  52. return nil, ErrNotFound
  53. default:
  54. return nil, err
  55. }{{else}}var resp {{.upperObject}}
  56. query := ` + "`" + `select ` + "`" + ` + {{.lowerObject}}Rows + ` + "`" + ` from ` + "` + " + `m.table ` + " + `" + ` where {{.expression}} limit 1` + "`" + `
  57. err := m.QueryRowNoCache(&resp, query, {{.expressionValues}})
  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. }{{end}}{{else}}var resp {{.upperObject}}
  66. query := ` + "`" + `select ` + "`" + ` + {{.lowerObject}}Rows + ` + "`" + ` from ` + "` + " + `m.table ` + " + `" + ` where {{.expression}} limit 1` + "`" + `
  67. err := m.QueryRowNoCache(&resp, query, {{.expressionValues}})
  68. switch err {
  69. case nil:
  70. return &resp, nil
  71. case sqlc.ErrNotFound:
  72. return nil, ErrNotFound
  73. default:
  74. return nil, err
  75. }{{end}}
  76. }
  77. `
  78. // 查询all
  79. var FindAllByField = `
  80. func (m *{{.upperObject}}Model) FindAllBy{{.upperFields}}({{.in}}) ([]*{{.upperObject}}, error) {
  81. var resp []*{{.upperObject}}
  82. query := ` + "`" + `select ` + "`" + ` + {{.lowerObject}}Rows + ` + "`" + ` from ` + "` + " + `m.table ` + " + `" + ` where {{.expression}}` + "`" + `
  83. err := m.QueryRowsNoCache(&resp, query, {{.expressionValues}})
  84. if err != nil {
  85. return nil, err
  86. }
  87. return resp, nil
  88. }
  89. `
  90. // limit分页查询
  91. var FindLimitByField = `
  92. func (m *{{.upperObject}}Model) FindLimitBy{{.upperFields}}({{.in}}, page, limit int) ([]*{{.upperObject}}, error) {
  93. var resp []*{{.upperObject}}
  94. query := ` + "`" + `select ` + "`" + ` + {{.lowerObject}}Rows + ` + "`" + `from ` + "` + " + `m.table ` + " + `" + ` where {{.expression}} order by {{.sortExpression}} limit ?,?` + "`" + `
  95. err := m.QueryRowsNoCache(&resp, query, {{.expressionValues}}, (page-1)*limit, limit)
  96. if err != nil {
  97. return nil, err
  98. }
  99. return resp, nil
  100. }
  101. func (m *{{.upperObject}}Model) FindAllCountBy{{.upperFields}}({{.in}}) (int64, error) {
  102. var count int64
  103. query := ` + "`" + `select count(1) from ` + "` + " + `m.table ` + " + `" + ` where {{.expression}} ` + "`" + `
  104. err := m.QueryRowNoCache(&count, query, {{.expressionValues}})
  105. if err != nil {
  106. return 0, err
  107. }
  108. return count, nil
  109. }
  110. `