package cmd import ( "fmt" "git.wanbits.cc/sin/flytalk/config" "git.wanbits.cc/sin/flytalk/models" "git.wanbits.cc/sin/flytalk/tools" "github.com/spf13/cobra" "io/ioutil" "os" "path/filepath" "strings" ) var installCmd = &cobra.Command{ Use: "install", Short: "install database specified in config file", Run: func(cmd *cobra.Command, args []string) { install() }, } func install() { _, err := config.LoadConf(Confile) if err != nil { panic(err) } models.InitDb() sqlFile := filepath.Join(config.C.Basic.DataDir, "flytalk.sql") fileExists, _ := tools.IsFileExist(sqlFile) if !fileExists { fmt.Printf("sql-file not exists:%v\n", sqlFile) os.Exit(1) } sqls, _ := ioutil.ReadFile(sqlFile) sqlArr := strings.Split(string(sqls), "|") for _, sql := range sqlArr { if sql == "" { continue } models.Execute(sql) } } // gorm 的实现功能不强, 很难通过映射的方式去完整的还原表结构 //func installByGorm() { // _, err := config.LoadConf(Confile) // if err != nil { // panic(err) // } // models.InitDb() // models.DB.Set("gorm:table_options", "ENGINE=InnoDB").AutoMigrate( // &models.Message{}, // &models.User{}, // &models.Visitor{}, // &models.Role{}, // &models.User_role{}, // // &models.About{}, // &models.Config{}, // &models.Ipblack{}, // &models.Welcome{}, // ) // if models.DB.Error != nil { // panic(models.DB.Error) // } //}