github.com/wawandco/oxplugins@v0.7.11/tools/pop/migration/creator/sql_creator.go (about) 1 package creator 2 3 import ( 4 "fmt" 5 "os" 6 "path/filepath" 7 "strings" 8 "time" 9 10 "github.com/gobuffalo/flect" 11 "github.com/pkg/errors" 12 ) 13 14 // SQLCreator model struct for fizz generation files 15 type SQLCreator struct{} 16 17 // Name is the name of the migration type 18 func (s SQLCreator) Name() string { 19 return "sql" 20 } 21 22 // Create will create 2 .sql empty files for the migration 23 func (s *SQLCreator) Create(dir string, args []string) error { 24 name := flect.Underscore(flect.Pluralize(strings.ToLower(args[0]))) 25 timestamp := time.Now().UTC().Format("20060102150405") 26 fileName := fmt.Sprintf("%s_%s", timestamp, name) 27 28 if err := s.createFile(dir, fileName, "up"); err != nil { 29 return err 30 } 31 32 if err := s.createFile(dir, fileName, "down"); err != nil { 33 return err 34 } 35 36 return nil 37 } 38 39 func (s *SQLCreator) createFile(dir, name, runFlag string) error { 40 fileName := fmt.Sprintf("%s.%s.sql", name, runFlag) 41 file, err := os.Create(filepath.Join(dir, fileName)) 42 if err != nil { 43 return errors.Wrap(err, "error creating file") 44 } 45 46 defer file.Close() 47 48 return err 49 }