github.com/wawandco/oxpecker@v1.5.7-0.20210910201653-5958d4afdd89/tools/soda/fizz/generator.go (about)

     1  package fizz
     2  
     3  import "errors"
     4  
     5  var generators = MigrationGenerators{
     6  	&addColumn{},
     7  	&changeColumn{},
     8  	&createTable{},
     9  	&dropTable{},
    10  	&rename{},
    11  	&dropIndex{},
    12  }
    13  
    14  // Errors
    15  var (
    16  	ErrExpressionNotMatch error = errors.New("generator do not match a valid expression")
    17  	ErrNoColumnFound      error = errors.New("no arguments was received, at least 1 column is required")
    18  	ErrNoTableName        error = errors.New("no table name")
    19  )
    20  
    21  type MigrationGenerator interface {
    22  	match(string) bool
    23  	GenerateFizz(string, []string) (string, string, error)
    24  }
    25  
    26  type MigrationGenerators []MigrationGenerator
    27  
    28  func (a MigrationGenerators) GeneratorFor(name string) MigrationGenerator {
    29  	// Setting create table migration by default
    30  	var mg MigrationGenerator = &createTable{}
    31  
    32  	for _, x := range a {
    33  		if x.match(name) {
    34  			mg = x
    35  			break
    36  		}
    37  	}
    38  
    39  	return mg
    40  }