find.go 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package template
  2. // 通过id查询
  3. var FindOne = `
  4. func (m *{{.upperStartCamelObject}}Model) FindOne({{.lowerStartCamelPrimaryKey}} {{.dataType}}) (*{{.upperStartCamelObject}}, error) {
  5. {{if .withCache}}{{.cacheKey}}
  6. var resp {{.upperStartCamelObject}}
  7. err := m.QueryRow(&resp, {{.cacheKeyVariable}}, func(conn sqlx.SqlConn, v interface{}) error {
  8. query := fmt.Sprintf("select %s from %s where {{.originalPrimaryKey}} = ? limit 1", {{.lowerStartCamelObject}}Rows, m.table)
  9. return conn.QueryRow(v, query, {{.lowerStartCamelPrimaryKey}})
  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 := fmt.Sprintf("select %s from %s where {{.originalPrimaryKey}} = ? limit 1", {{.lowerStartCamelObject}}Rows, m.table)
  19. var resp {{.upperStartCamelObject}}
  20. err := m.conn.QueryRow(&resp, query, {{.lowerStartCamelPrimaryKey}})
  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 *{{.upperStartCamelObject}}Model) FindOneBy{{.upperField}}({{.in}}) (*{{.upperStartCamelObject}}, error) {
  34. {{if .withCache}}{{.cacheKey}}
  35. var resp {{.upperStartCamelObject}}
  36. err := m.QueryRowIndex(&resp, {{.cacheKeyVariable}}, m.formatPrimary, func(conn sqlx.SqlConn, v interface{}) (i interface{}, e error) {
  37. query := fmt.Sprintf("select %s from %s where {{.originalField}} = ? limit 1", {{.lowerStartCamelObject}}Rows, m.table)
  38. if err := conn.QueryRow(&resp, query, {{.lowerStartCamelField}}); err != nil {
  39. return nil, err
  40. }
  41. return resp.{{.upperStartCamelPrimaryKey}}, nil
  42. }, m.queryPrimary)
  43. switch err {
  44. case nil:
  45. return &resp, nil
  46. case sqlc.ErrNotFound:
  47. return nil, ErrNotFound
  48. default:
  49. return nil, err
  50. }
  51. }{{else}}var resp {{.upperStartCamelObject}}
  52. query := fmt.Sprintf("select %s from %s where {{.originalField}} = ? limit 1", {{.lowerStartCamelObject}}Rows, m.table )
  53. err := m.conn.QueryRow(&resp, query, {{.lowerStartCamelField}})
  54. switch err {
  55. case nil:
  56. return &resp, nil
  57. case sqlc.ErrNotFound:
  58. return nil, ErrNotFound
  59. default:
  60. return nil, err
  61. }
  62. }{{end}}
  63. `
  64. var FindOneByFieldExtraMethod = `
  65. func (m *{{.upperStartCamelObject}}Model) formatPrimary(primary interface{}) string {
  66. return fmt.Sprintf("%s%v", {{.primaryKeyLeft}}, primary)
  67. }
  68. func (m *{{.upperStartCamelObject}}Model) queryPrimary(conn sqlx.SqlConn, v, primary interface{}) error {
  69. query := fmt.Sprintf("select %s from %s where {{.originalPrimaryField}} = ? limit 1", {{.lowerStartCamelObject}}Rows, m.table )
  70. return conn.QueryRow(v, query, primary)
  71. }
  72. `