github.com/friesencr/pop/v6@v6.1.6/soda/cmd/schema/load.go (about)

     1  package schema
     2  
     3  import (
     4  	"errors"
     5  	"fmt"
     6  	"os"
     7  
     8  	"github.com/friesencr/pop/v6"
     9  	"github.com/spf13/cobra"
    10  )
    11  
    12  var loadOptions = struct {
    13  	env   string
    14  	input string
    15  }{}
    16  
    17  // LoadCmd loads a schema.sql file into a database.
    18  var LoadCmd = &cobra.Command{
    19  	Use:   "load",
    20  	Short: "Load a schema.sql file into a database",
    21  	RunE: func(cmd *cobra.Command, args []string) error {
    22  		env := cmd.Flag("env")
    23  		if env == nil {
    24  			return errors.New("env is required")
    25  		}
    26  		loadOptions.env = env.Value.String()
    27  
    28  		f, err := os.Open(loadOptions.input)
    29  		if err != nil {
    30  			return fmt.Errorf("unable to load schema file: %w", err)
    31  		}
    32  		defer f.Close()
    33  
    34  		c, err := pop.Connect(loadOptions.env)
    35  		if err != nil {
    36  			return fmt.Errorf("unable to connect to database: %w", err)
    37  		}
    38  		defer c.Close()
    39  
    40  		return c.Dialect.LoadSchema(f)
    41  	},
    42  }
    43  
    44  func init() {
    45  	LoadCmd.Flags().StringVarP(&loadOptions.input, "input", "i", "./migrations/schema.sql", "The path to the schema file you want to load")
    46  }