command.go 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package command
  2. import (
  3. "io/ioutil"
  4. "path/filepath"
  5. "strings"
  6. "github.com/tal-tech/go-zero/core/collection"
  7. "github.com/tal-tech/go-zero/core/logx"
  8. "github.com/tal-tech/go-zero/core/stores/sqlx"
  9. "github.com/tal-tech/go-zero/tools/goctl/model/sql/gen"
  10. "github.com/tal-tech/go-zero/tools/goctl/model/sql/model"
  11. "github.com/tal-tech/go-zero/tools/goctl/util/console"
  12. "github.com/urfave/cli"
  13. )
  14. const (
  15. flagSrc = "src"
  16. flagDir = "dir"
  17. flagCache = "cache"
  18. flagIdea = "idea"
  19. flagUrl = "url"
  20. flagTable = "table"
  21. )
  22. func MysqlDDL(ctx *cli.Context) error {
  23. src := ctx.String(flagSrc)
  24. dir := ctx.String(flagDir)
  25. cache := ctx.Bool(flagCache)
  26. idea := ctx.Bool(flagIdea)
  27. log := console.NewConsole(idea)
  28. fileSrc, err := filepath.Abs(src)
  29. if err != nil {
  30. return err
  31. }
  32. data, err := ioutil.ReadFile(fileSrc)
  33. if err != nil {
  34. return err
  35. }
  36. source := string(data)
  37. generator := gen.NewDefaultGenerator(source, dir, gen.WithConsoleOption(log))
  38. err = generator.Start(cache)
  39. if err != nil {
  40. log.Error("%v", err)
  41. }
  42. return nil
  43. }
  44. func MyDataSource(ctx *cli.Context) error {
  45. url := strings.TrimSpace(ctx.String(flagUrl))
  46. dir := strings.TrimSpace(ctx.String(flagDir))
  47. cache := ctx.Bool(flagCache)
  48. idea := ctx.Bool(flagIdea)
  49. table := strings.TrimSpace(ctx.String(flagTable))
  50. log := console.NewConsole(idea)
  51. if len(url) == 0 {
  52. log.Error("%v", "expected data source of mysql, but is empty")
  53. return nil
  54. }
  55. if len(table) == 0 {
  56. log.Error("%v", "expected table(s), but nothing found")
  57. return nil
  58. }
  59. logx.Disable()
  60. conn := sqlx.NewMysql(url)
  61. m := model.NewDDLModel(conn)
  62. tables := collection.NewSet()
  63. for _, item := range strings.Split(table, ",") {
  64. item = strings.TrimSpace(item)
  65. if len(item) == 0 {
  66. continue
  67. }
  68. tables.AddStr(item)
  69. }
  70. ddl, err := m.ShowDDL(tables.KeysStr()...)
  71. if err != nil {
  72. log.Error("%v", err)
  73. return nil
  74. }
  75. generator := gen.NewDefaultGenerator(strings.Join(ddl, "\n"), dir, gen.WithConsoleOption(log))
  76. err = generator.Start(cache)
  77. if err != nil {
  78. log.Error("%v", err)
  79. }
  80. return nil
  81. }