migration.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package comm
  2. import (
  3. "fmt"
  4. "os"
  5. "path/filepath"
  6. "strings"
  7. "github.com/golang-migrate/migrate/v4"
  8. "github.com/golang-migrate/migrate/v4/database/mongodb"
  9. _ "github.com/golang-migrate/migrate/v4/source/file"
  10. )
  11. func AppMongoMiration() {
  12. ///data/migrations==mongodb://root:3dshow@3dshow-mongo-alpha:27017/dbname?query&&/data/migrations==mongodb://user:password@host:port/dbname?query
  13. config := "mongo-migrations==mongodb://root:copter-train-8888@127.0.0.1:27017/copter?authSource=admin"
  14. // config := os.Getenv("MONGO_MIGRATIONS")
  15. // if len(config) < 1 {
  16. // return
  17. // }
  18. path, err := os.Executable()
  19. if err != nil {
  20. panic("mongo-migration get exe path err=>" + err.Error())
  21. }
  22. exePath := filepath.Dir(path)
  23. exePath = strings.Replace(exePath, "\\", "/", -1)
  24. dbs := strings.Split(config, "&&")
  25. fmt.Println("mongo_migrations_dbs: ", dbs)
  26. for _, db := range dbs {
  27. frags := strings.Split(db, "==")
  28. if len(frags) != 2 {
  29. panic("mongo-migration config err=>" + db)
  30. }
  31. sourc := frags[0]
  32. dbUri := frags[1]
  33. p := &mongodb.Mongo{}
  34. d, err := p.Open(dbUri)
  35. if err != nil {
  36. panic("mongo-migration open err=>" + err.Error())
  37. }
  38. _sourc := fmt.Sprintf("%s/%s", exePath, sourc)
  39. fileSource := fmt.Sprintf("file://%s", _sourc)
  40. fmt.Println("mongo_migrations_file_source: ", fileSource)
  41. mi, err := migrate.NewWithDatabaseInstance(fileSource, "", d)
  42. if err != nil {
  43. panic("mongo-migration new instance err=>" + err.Error())
  44. }
  45. err = mi.Up()
  46. if err != nil {
  47. fmt.Println("mongo-migration up err=>" + err.Error())
  48. }
  49. }
  50. }