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  }