Пример #1
0
// MustResetDB re-applies all database migrations.
func MustResetDB(db *sqlx.DB) {
	m := &migrate.AssetMigrationSource{
		Asset:    migrations.Asset,
		AssetDir: migrations.AssetDir,
		Dir:      "",
	}
	if _, err := migrate.Exec(db.DB, "postgres", m, migrate.Down); err != nil {
		log.Fatal(err)
	}
	if _, err := migrate.Exec(db.DB, "postgres", m, migrate.Up); err != nil {
		log.Fatal(err)
	}
}
Пример #2
0
func MigrateToLatest(dbMap *gorp.DbMap) (int, error) {
	source, dialect, err := migrationSource(dbMap)
	if err != nil {
		return 0, err
	}
	return migrate.Exec(dbMap.Db, dialect, source, migrate.Up)
}
Пример #3
0
func (d DatabaseMigrator) Migrate(db *sql.DB, migrationsPath string) {
	sql_migrate.SetTable("notifications_model_migrations")

	migrations := &sql_migrate.FileMigrationSource{
		Dir: migrationsPath,
	}

	_, err := sql_migrate.Exec(db, "mysql", migrations, sql_migrate.Up)
	if err != nil {
		panic(err)
	}
}
Пример #4
0
func MigrateToLatest(dbMap *gorp.DbMap) (int, error) {
	source := getSource()

	return migrate.Exec(dbMap.Db, migrationDialect, source, migrate.Up)
}
Пример #5
0
func main() {

	startOptions, startFlagSet := DeclareStartOptions()

	printDocumentation := func() {
		print(documentation)
		print("\nstart command options :\n\n")
		startFlagSet.PrintDefaults()
		print("\nexample: gonews start -debug -port 8080 -host localhost\n")
	}
	if len(os.Args) == 1 {
		printDocumentation()
		return
	}
	switch os.Args[1] {
	case "start":
		// configuration

		startFlagSet.Parse(os.Args[2:])

		// if port is an env variable, get env variable
		if len(startOptions.Port) > 0 && startOptions.Port[0] == '$' {
			startOptions.Port = os.Getenv(string(startOptions.Port[1:]))
		}

		connection, connectionErr := sql.Open(startOptions.Driver, startOptions.DataSource)
		if connectionErr != nil {
			log.Fatal(connectionErr)
		}

		// warnings
		if startOptions.Env != "production" {
			log.Printf("You are using '%s' environment, please use option -env=production in production", startOptions.Env)
		}
		if startOptions.Secret == defaultSecret {
			log.Printf("You are using the default secret key which is unsecure, please generate a strong secret key, and set is with -secret argument")
		}
		// migration
		if startOptions.Migrate {
			migrationSource := sqlmigrate.FileMigrationSource{Dir: path.Join(startOptions.MigrationPath, startOptions.Env, startOptions.Driver)}
			i, err := sqlmigrate.Exec(connection, startOptions.Driver, migrationSource, sqlmigrate.Up)
			if err != nil {
				log.Fatal(err)
			}
			log.Printf("%d migrations executed", i)
		}
		// loading fixtures
		if startOptions.LoadFixtures {
			log.Println("loading fixtures ... ")
			LoadFixtures(connection, startOptions.Driver)
			log.Println("done loading fixtures.")
		}
		// start server
		containerOptions := gonews.DefaultContainerOptions()
		containerOptions.LogLevel = gonews.LogLevel(startOptions.LogLevel)
		containerOptions.Debug = startOptions.Debug
		containerOptions.ConnectionFactory = func() (*sql.DB, error) {
			return connection, connectionErr
		}
		appOptions := gonews.AppOptions{ContainerOptions: containerOptions}
		// configuration file
		if startOptions.ConfigurationFilePath != "" {
			fileBytes, err := ioutil.ReadFile(startOptions.ConfigurationFilePath)
			if err != nil && startOptions.ConfigurationFilePath != "gonews.yml" {
				log.Printf("Error loading configuration file %s : %s \n", startOptions.ConfigurationFilePath, err)
			} else {
				err = yaml.Unmarshal(fileBytes, &appOptions)
				if err != nil {
					log.Fatalf("Error reading configuration file %s : %s \n", startOptions.ConfigurationFilePath, err)
				} else {
					log.Printf("Config loaded : %#v", appOptions)
				}
			}
		}
		app := gonews.GetApp(appOptions)
		addr := startOptions.Host + ":" + startOptions.Port
		fmt.Printf("Server Listening On: %s\n", addr)
		err := http.ListenAndServe(addr, app)
		if err != nil {
			log.Fatal(err)
		}
		return
	case "version":
		print(Version)
	case "help":
		printDocumentation()
	default:
		print("not a valid command : ", os.Args[1])
		printDocumentation()
		os.Exit(2)
	}

}
Пример #6
0
// MigrateUp migrates DB using migrate files
func (d *Driver) MigrateUp(component string) (migrationsApplied int, err error) {
	source := d.getAssetMigrationSource(component)
	migrationsApplied, err = migrate.Exec(d.database.DB, "postgres", source, migrate.Up)
	return
}