package migrations

var DefaultCollection = NewCollection()

func ( string) {
	DefaultCollection.SetTableName()
}

func ( DB) (int64, error) {
	return DefaultCollection.Version()
}

func ( DB,  int64) error {
	return DefaultCollection.SetVersion(, )
}

// Register registers new database migration. Must be called
// from file with name like "1_initialize_db.go", where:
//   - 1 - migration version;
//   - initialize_db - comment.
func ( ...func(DB) error) error {
	return DefaultCollection.Register(...)
}

// RegisterTx is just like Register but marks the migration to be executed inside a transaction.
func ( ...func(DB) error) error {
	return DefaultCollection.RegisterTx(...)
}

func ( ...func(DB) error) {
	DefaultCollection.MustRegister(...)
}

func ( ...func(DB) error) {
	DefaultCollection.MustRegisterTx(...)
}

// RegisteredMigrations returns currently registered Migrations.
func () []*Migration {
	return DefaultCollection.Migrations()
}

// Run runs command on the db. Supported commands are:
// - up [target] - runs all available migrations by default or up to target one if argument is provided.
// - down - reverts last migration.
// - reset - reverts all migrations.
// - version - prints current db version.
// - set_version - sets db version without running migrations.
func ( DB,  ...string) (,  int64,  error) {
	return DefaultCollection.Run(, ...)
}