44 "bytes"
55 "context"
66 "fmt"
7+ "github.com/jzero-io/jzero/pkg/dsn"
78 "go/ast"
89 goformat "go/format"
910 goparser "go/parser"
@@ -15,7 +16,6 @@ import (
1516 "strings"
1617 "sync"
1718
18- "github.com/go-sql-driver/mysql"
1919 "github.com/jzero-io/jzero-contrib/filex"
2020 "github.com/pkg/errors"
2121 "github.com/samber/lo"
@@ -72,17 +72,14 @@ func (jm *JzeroModel) Gen() error {
7272 return errors .New ("postgres model only support datasource mode" )
7373 }
7474
75- if config .C .Gen .ModelMysqlDatasource || config . C . Gen . ModelDatasource {
75+ if config .C .Gen .ModelDatasource {
7676 if jm .IsNew {
7777 fmt .Printf ("%s you are using mysql datesource to generate model code, please manual execute jzero gen command\n " , color .WithColor ("Detected" , color .FgRed ))
7878 return nil
7979 }
8080
8181 switch config .C .Gen .ModelDriver {
8282 case "mysql" :
83- if config .C .Gen .ModelMysqlDatasourceUrl != "" {
84- config .C .Gen .ModelDatasourceUrl = config .C .Gen .ModelMysqlDatasourceUrl
85- }
8683 sqlConn = sqlx .NewMysql (config .C .Gen .ModelDatasourceUrl )
8784 case "postgres" :
8885 sqlConn = postgres .New (config .C .Gen .ModelDatasourceUrl )
@@ -95,13 +92,13 @@ func (jm *JzeroModel) Gen() error {
9592 return err
9693 }
9794
98- fmt .Printf ("%s to generate ddl from %s\n " , color .WithColor ("Start" , color .FgGreen ), config .C .Gen .ModelMysqlDatasourceUrl )
95+ fmt .Printf ("%s to generate ddl from %s\n " , color .WithColor ("Start" , color .FgGreen ), config .C .Gen .ModelDatasourceUrl )
9996
10097 writeTables , err := jm .GenDDL (sqlConn , tables )
10198 if err != nil {
10299 return err
103100 }
104- if ! config .C .Gen .ModelMysqlCreateTableDDL || ! config . C . Gen . ModelCreateTableDDL {
101+ if ! config .C .Gen .ModelCreateTableDDL {
105102 defer func () {
106103 for _ , v := range writeTables {
107104 if err = os .Remove (v ); err != nil {
@@ -128,7 +125,7 @@ func (jm *JzeroModel) Gen() error {
128125 }
129126
130127 switch {
131- case config .C .Gen .GitChange && filex .DirExists (filepath .Join (config .C .Wd (), ".git" )) && len (config .C .Gen .Desc ) == 0 && ! config .C .Gen .ModelMysqlDatasource :
128+ case config .C .Gen .GitChange && filex .DirExists (filepath .Join (config .C .Wd (), ".git" )) && len (config .C .Gen .Desc ) == 0 && ! config .C .Gen .ModelDatasource :
132129 m , _ , err := gitstatus .ChangedFiles (config .C .SqlDir (), ".sql" )
133130 if err == nil {
134131 genCodeSqlFiles = append (genCodeSqlFiles , m ... )
@@ -178,18 +175,18 @@ func (jm *JzeroModel) Gen() error {
178175 var mu sync.Mutex
179176
180177 if len (genCodeSqlFiles ) != 0 {
181- if config .C .Gen .ModelMysqlDatasource || config . C . Gen . ModelDatasource {
178+ if config .C .Gen .ModelDatasource {
182179 tables , err := getAllTables (sqlConn , config .C .Gen .ModelDriver )
183180 if err != nil {
184181 return err
185182 }
186- if ( len (config .C .Gen .ModelMysqlDatasourceTable ) != 0 && config . C . Gen . ModelMysqlDatasourceTable [ 0 ] != "*" ) || ( len ( config . C . Gen . ModelDatasourceTable ) != 0 && config .C .Gen .ModelDatasourceTable [0 ] != "*" ) {
183+ if len (config .C .Gen .ModelDatasourceTable ) != 0 && config .C .Gen .ModelDatasourceTable [0 ] != "*" {
187184 for _ , v := range tables {
188- if lo .Contains (config .C .Gen .ModelMysqlDatasourceTable , cast . ToString ( v )) || lo . Contains ( config . C . Gen . ModelDatasourceTable , cast .ToString (v )) {
185+ if lo .Contains (config .C .Gen .ModelDatasourceTable , cast .ToString (v )) {
189186 allTables = append (allTables , v )
190187 }
191188 }
192- } else if ( len (config .C .Gen .ModelMysqlDatasourceTable ) != 0 && config . C . Gen . ModelMysqlDatasourceTable [ 0 ] == "*" ) || ( len ( config . C . Gen . ModelDatasourceTable ) != 0 && config .C .Gen .ModelDatasourceTable [0 ] == "*" ) {
189+ } else if len (config .C .Gen .ModelDatasourceTable ) != 0 && config .C .Gen .ModelDatasourceTable [0 ] == "*" {
193190 allTables = tables
194191 }
195192 for _ , f := range allFiles {
@@ -203,7 +200,7 @@ func (jm *JzeroModel) Gen() error {
203200 var eg errgroup.Group
204201 for _ , f := range allFiles {
205202 eg .Go (func () error {
206- tableParsers , err := parser .Parse (filepath .Join (config .C .Wd (), f ), "" , config .C .Gen .ModelMysqlStrict )
203+ tableParsers , err := parser .Parse (filepath .Join (config .C .Wd (), f ), "" , config .C .Gen .ModelStrict )
207204 if err != nil {
208205 return err
209206 }
@@ -237,14 +234,15 @@ func (jm *JzeroModel) Gen() error {
237234 modelDir := filepath .Join ("internal" , "model" , strings .ToLower (bf [0 :len (bf )- len (path .Ext (bf ))]))
238235
239236 var ddlDatabase string
240- if config .C .Gen .ModelMysqlDDLDatabase != "" {
241- ddlDatabase = config .C .Gen .ModelMysqlDDLDatabase
242- } else if config .C .Gen .ModelMysqlDatasourceUrl != "" {
243- mysqlDsn , err := mysql .ParseDSN (config .C .Gen .ModelMysqlDatasourceUrl )
237+ if config .C .Gen .ModelDatasource {
238+ meta , err := dsn .ParseDSN (config .C .Gen .ModelDriver , config .C .Gen .ModelDatasourceUrl )
244239 if err != nil {
245240 return err
246241 }
247- ddlDatabase = mysqlDsn .DBName
242+ ddlDatabase = meta [dsn .DBName ]
243+ }
244+ if config .C .Gen .ModelDDLDatabase != "" {
245+ ddlDatabase = config .C .Gen .ModelDDLDatabase
248246 }
249247
250248 if config .C .Gen .ModelDriver == "postgres" {
@@ -255,18 +253,15 @@ func (jm *JzeroModel) Gen() error {
255253 return errors .Errorf ("gen model code meet error. Err: %s:%s" , err .Error (), resp )
256254 }
257255 } else {
258- if config .C .Gen .ModelMysqlCache {
259- config .C .Gen .ModelCache = true
260- }
261- cmd := exec .Command ("goctl" , "model" , "mysql" , "ddl" , "--database" , ddlDatabase , "--src" , f , "--dir" , modelDir , "--home" , goctlHome , "--style" , config .C .Gen .Style , "-i" , strings .Join (config .C .Gen .ModelMysqlIgnoreColumns , "," ), "--cache=" + fmt .Sprintf ("%t" , config .C .Gen .ModelCache ), "--strict=" + fmt .Sprintf ("%t" , config .C .Gen .ModelMysqlStrict ))
256+ cmd := exec .Command ("goctl" , "model" , "mysql" , "ddl" , "--database" , ddlDatabase , "--src" , f , "--dir" , modelDir , "--home" , goctlHome , "--style" , config .C .Gen .Style , "-i" , strings .Join (config .C .Gen .ModelIgnoreColumns , "," ), "--cache=" + fmt .Sprintf ("%t" , config .C .Gen .ModelCache ), "--strict=" + fmt .Sprintf ("%t" , config .C .Gen .ModelStrict ))
262257 logx .Debug (cmd .String ())
263258 resp , err := cmd .CombinedOutput ()
264259 if err != nil {
265260 return errors .Errorf ("gen model code meet error. Err: %s:%s" , err .Error (), resp )
266261 }
267262 }
268263
269- if ( config .C .Gen .ModelMysqlCachePrefix != "" && config . C . Gen . ModelMysqlCache ) || ( config . C . Gen . ModelCachePrefix != "" && config .C .Gen .ModelCache ) {
264+ if config .C .Gen .ModelCachePrefix != "" && config .C .Gen .ModelCache {
270265 for _ , tp := range tableParsers {
271266 namingFormat , err := format .FileNamingFormat (config .C .Gen .Style , tp .Name .Source ())
272267 if err != nil {
@@ -309,11 +304,7 @@ func (jm *JzeroModel) addModelCachePrefix(fp string) error {
309304 if strings .HasPrefix (name .Name , "cache" ) && strings .HasSuffix (name .Name , "Prefix" ) {
310305 value := valueSpec .Values [i ]
311306 if basicLit , ok := value .(* ast.BasicLit ); ok {
312- if config .C .Gen .ModelCachePrefix != "" {
313- basicLit .Value = fmt .Sprintf (`"%s%s"` , config .C .Gen .ModelCachePrefix , strings .ReplaceAll (basicLit .Value , "\" " , "" ))
314- } else if config .C .Gen .ModelMysqlCachePrefix != "" {
315- basicLit .Value = fmt .Sprintf (`"%s%s"` , config .C .Gen .ModelMysqlCachePrefix , strings .ReplaceAll (basicLit .Value , "\" " , "" ))
316- }
307+ basicLit .Value = fmt .Sprintf (`"%s%s"` , config .C .Gen .ModelCachePrefix , strings .ReplaceAll (basicLit .Value , "\" " , "" ))
317308 }
318309 }
319310 }
0 commit comments