func (g *generator) initTables() { defer log.WhenDone().Info("Stats", "Package", g.tts.Package, "Step", "InitTables") var err error g.tables, err = codegen.GetTables(g.dbrConn.NewSession(), codegen.ReplaceTablePrefix(g.tts.SQLQuery)) codegen.LogFatal(err) if len(g.tts.EntityTypeCodes) > 0 && g.tts.EntityTypeCodes[0] != "" { g.eavValueTables, err = codegen.GetEavValueTables(g.dbrConn, g.tts.EntityTypeCodes) codegen.LogFatal(err) for _, vTables := range g.eavValueTables { for t := range vTables { if false == isDuplicate(g.tables, t) { g.tables = append(g.tables, t) } } } } if g.tts.GenericsWhiteList == "" { return // do nothing because nothing defined, neither custom SQL nor to copy from SQLQuery field } if false == dbr.Stmt.IsSelect(g.tts.GenericsWhiteList) { // copy result from tables because select key word not found g.whiteListTables = g.tables return } g.whiteListTables, err = codegen.GetTables(g.dbrConn.NewSession(), codegen.ReplaceTablePrefix(g.tts.GenericsWhiteList)) codegen.LogFatal(err) }
func generateStructures(tStruct *codegen.TableToStruct, db *sql.DB, dbrConn *dbr.Connection) { tplData := &dataContainer{ Tables: make([]map[string]interface{}, 0, 200), Package: tStruct.Package, Tick: "`", } tables, err := codegen.GetTables(db, codegen.ReplaceTablePrefix(tStruct.SQLQuery)) codegen.LogFatal(err) if len(tStruct.EntityTypeCodes) > 0 && tStruct.EntityTypeCodes[0] != "" { tplData.TypeCodeValueTables, err = codegen.GetEavValueTables(dbrConn, tStruct.EntityTypeCodes) codegen.LogFatal(err) for _, vTables := range tplData.TypeCodeValueTables { for t := range vTables { if false == isDuplicate(tables, t) { tables = append(tables, t) } } } } for _, table := range tables { columns, err := codegen.GetColumns(db, table) codegen.LogFatal(err) codegen.LogFatal(columns.MapSQLToGoDBRType()) var name = table if mappedName, ok := codegen.TableMapMagento1To2[strings.Replace(table, codegen.TablePrefix, "", 1)]; ok { name = mappedName } tplData.Tables = append(tplData.Tables, map[string]interface{}{ "name": name, "table": table, "columns": columns, }) } formatted, err := codegen.GenerateCode(tStruct.Package, tplCode, tplData, nil) if err != nil { fmt.Printf("\n%s\n", formatted) codegen.LogFatal(err) } codegen.LogFatal(ioutil.WriteFile(tStruct.OutputFile, formatted, 0600)) }