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 }