package examples import ( "fmt" "io/ioutil" "strings" "github.com/yedf/dtm/common" "github.com/yedf/dtm/dtmcli" ) var config = common.DtmConfig // RunSQLScript 1 func RunSQLScript(conf map[string]string, script string, skipDrop bool) { con, err := dtmcli.SdbAlone(conf) dtmcli.FatalIfError(err) defer func() { con.Close() }() content, err := ioutil.ReadFile(script) dtmcli.FatalIfError(err) sqls := strings.Split(string(content), ";") for _, sql := range sqls { s := strings.TrimSpace(sql) if s == "" || skipDrop && strings.Contains(s, "drop") { continue } _, err = dtmcli.SdbExec(con, s) dtmcli.FatalIfError(err) } } // PopulateDB populate example mysql data func PopulateDB(skipDrop bool) { file := fmt.Sprintf("%s/examples.%s.sql", common.GetCurrentCodeDir(), config.DB["driver"]) RunSQLScript(config.DB, file, skipDrop) file = fmt.Sprintf("%s/../dtmcli/barrier.%s.sql", common.GetCurrentCodeDir(), config.DB["driver"]) RunSQLScript(config.DB, file, skipDrop) } // Samples 所有的示例都会注册到这里 var Samples = map[string]func() string{} func addSample(name string, fn func() string) { if Samples[name] != nil { dtmcli.LogFatalf("sample %s duplicated", name) } Samples[name] = fn }