gendao_entity.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. // Copyright GoFrame gf Author(https://goframe.org). All Rights Reserved.
  2. //
  3. // This Source Code Form is subject to the terms of the MIT License.
  4. // If a copy of the MIT was not distributed with this file,
  5. // You can obtain one at https://github.com/gogf/gf.
  6. package gendao
  7. import (
  8. "context"
  9. "strings"
  10. "github.com/gogf/gf/v2/frame/g"
  11. "github.com/gogf/gf/v2/os/gfile"
  12. "github.com/gogf/gf/v2/text/gstr"
  13. "github.com/gogf/gf/cmd/gf/v2/internal/consts"
  14. "github.com/gogf/gf/cmd/gf/v2/internal/utility/mlog"
  15. "github.com/gogf/gf/cmd/gf/v2/internal/utility/utils"
  16. )
  17. func generateEntity(ctx context.Context, in CGenDaoInternalInput) {
  18. var dirPathEntity = gfile.Join(in.Path, in.EntityPath)
  19. if in.Clear {
  20. doClear(ctx, dirPathEntity, false)
  21. }
  22. // Model content.
  23. for i, tableName := range in.TableNames {
  24. fieldMap, err := in.DB.TableFields(ctx, tableName)
  25. if err != nil {
  26. mlog.Fatalf("fetching tables fields failed for table '%s':\n%v", tableName, err)
  27. }
  28. var (
  29. newTableName = in.NewTableNames[i]
  30. entityFilePath = gfile.Join(dirPathEntity, gstr.CaseSnake(newTableName)+".go")
  31. structDefinition, appendImports = generateStructDefinition(ctx, generateStructDefinitionInput{
  32. CGenDaoInternalInput: in,
  33. TableName: tableName,
  34. StructName: gstr.CaseCamel(newTableName),
  35. FieldMap: fieldMap,
  36. IsDo: false,
  37. })
  38. entityContent = generateEntityContent(
  39. ctx,
  40. in,
  41. newTableName,
  42. gstr.CaseCamel(newTableName),
  43. structDefinition,
  44. appendImports,
  45. )
  46. )
  47. err = gfile.PutContents(entityFilePath, strings.TrimSpace(entityContent))
  48. if err != nil {
  49. mlog.Fatalf("writing content to '%s' failed: %v", entityFilePath, err)
  50. } else {
  51. utils.GoFmt(entityFilePath)
  52. mlog.Print("generated:", entityFilePath)
  53. }
  54. }
  55. }
  56. func generateEntityContent(
  57. ctx context.Context, in CGenDaoInternalInput, tableName, tableNameCamelCase, structDefine string, appendImports []string,
  58. ) string {
  59. entityContent := gstr.ReplaceByMap(
  60. getTemplateFromPathOrDefault(in.TplDaoEntityPath, consts.TemplateGenDaoEntityContent),
  61. g.MapStrStr{
  62. tplVarTableName: tableName,
  63. tplVarPackageImports: getImportPartContent(ctx, structDefine, false, appendImports),
  64. tplVarTableNameCamelCase: tableNameCamelCase,
  65. tplVarStructDefine: structDefine,
  66. },
  67. )
  68. entityContent = replaceDefaultVar(in, entityContent)
  69. return entityContent
  70. }