12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- package support
- import (
- "io/ioutil"
- "os"
- "golang-fave/engine/sqlw"
- "golang-fave/support/migrate"
- "golang-fave/utils"
- )
- type Support struct {
- }
- func New() *Support {
- sup := Support{}
- return &sup
- }
- func (this *Support) Migration(dir string) error {
- files, err := ioutil.ReadDir(dir)
- if err != nil {
- return err
- }
- for _, file := range files {
- if utils.IsDir(dir + string(os.PathSeparator) + file.Name()) {
- if err := this.Migrate(dir + string(os.PathSeparator) + file.Name()); err != nil {
- return err
- }
- }
- }
- return nil
- }
- func (this *Support) Migrate(host string) error {
- mysql_config_file := host + string(os.PathSeparator) + "config" + string(os.PathSeparator) + "mysql.json"
- if utils.IsMySqlConfigExists(mysql_config_file) {
- mc, err := utils.MySqlConfigRead(mysql_config_file)
- if err != nil {
- return err
- }
- db, err := sqlw.Open("mysql", mc.User+":"+mc.Password+"@tcp("+mc.Host+":"+mc.Port+")/"+mc.Name)
- if err != nil {
- return err
- }
- if err := db.Ping(); err != nil {
- return err
- }
- defer db.Close()
- var version string
- if err := db.QueryRow(`SELECT value FROM settings WHERE name = 'database_version' LIMIT 1;`).Scan(&version); err != nil {
- return err
- }
- return this.Process(db, version, host)
- }
- return nil
- }
- func (this *Support) Process(db *sqlw.DB, version string, host string) error {
- return migrate.Run(db, utils.StrToInt(version), host)
- }
|