dao.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package orm
  2. import (
  3. "bytes"
  4. "errors"
  5. "fmt"
  6. "gitea.ckfah.com/go-script/logger"
  7. "gitea.ckfah.com/go-script/utils"
  8. "go/format"
  9. "text/template"
  10. )
  11. const (
  12. defaultModelName = "model"
  13. defaultDaoName = "dao"
  14. )
  15. type DaoMeta struct {
  16. DaoPackage string
  17. TableName string
  18. ModelPackage string
  19. }
  20. func (this *DaoMeta) Run(temp *template.Template) ([]byte, error) {
  21. var buf = &bytes.Buffer{}
  22. err := this.Validate()
  23. if err != nil {
  24. return nil, err
  25. }
  26. err = temp.Execute(buf, this)
  27. if err != nil {
  28. return nil, err
  29. }
  30. source, err := format.Source(buf.Bytes())
  31. if err != nil {
  32. logger.ErrorF("[Run] err,table=%v,%v,body=\n%s\n", this.TableName, err, buf.Bytes())
  33. return buf.Bytes(), nil
  34. }
  35. return source, nil
  36. }
  37. /**
  38. 获取 struct name
  39. */
  40. func (this *DaoMeta) GetStructName() string {
  41. return utils.LowerCaseFiledFirst(fmt.Sprintf("%sDao", this.GetModelName()))
  42. }
  43. /**
  44. 获取new初始化的名称
  45. */
  46. func (this *DaoMeta) GetNewStructFunc() string {
  47. return fmt.Sprintf("New%sDao", this.GetModelName())
  48. }
  49. func (this *DaoMeta) GetModelName() string {
  50. return utils.Marshal(this.TableName)
  51. }
  52. func (this *DaoMeta) GetModelPackage() string {
  53. return this.ModelPackage
  54. }
  55. func (this *DaoMeta) GetModelPathName() string {
  56. return fmt.Sprintf("%s.%s", this.GetModelPackage(), this.GetModelName())
  57. }
  58. func (this *DaoMeta) Validate() error {
  59. if this.TableName == "" {
  60. return errors.New("table_name is nil")
  61. }
  62. if this.ModelPackage == "" {
  63. this.ModelPackage = defaultModelName
  64. }
  65. if this.DaoPackage == "" {
  66. this.DaoPackage = defaultDaoName
  67. }
  68. return nil
  69. }