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 }