Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var ConfigCmd = &cobra.Command{ Use: "config", Short: "Generates a database.yml file for your project.", RunE: func(cmd *cobra.Command, args []string) error { cflag := cmd.Flag("config") cfgFile := defaults.String(cflag.Value.String(), "database.yml") dir, err := os.Getwd() if err != nil { return errors.Wrap(err, "couldn't get the current directory") } pwd, _ := os.Getwd() data := map[string]interface{}{ "dialect": dialect, "name": path.Base(dir), "appPath": pwd, } return GenerateConfig(cfgFile, data) }, }
View Source
var FizzCmd = &cobra.Command{ Use: "fizz [name]", Aliases: []string{"migration"}, Short: "Generates Up/Down migrations for your database using fizz.", RunE: func(cmd *cobra.Command, args []string) error { if len(args) == 0 { return errors.New("You must supply a name for your migration!") } cflag := cmd.Flag("path") migrationPath := defaults.String(cflag.Value.String(), "./migrations") return pop.MigrationCreate(migrationPath, args[0], "fizz", nil, nil) }, }
View Source
var ModelCmd = &cobra.Command{ Use: "model [name]", Aliases: []string{"m"}, Short: "Generates a model for your database", RunE: func(cmd *cobra.Command, args []string) error { if len(args) == 0 { return errors.New("You must supply a name for your model!") } if structTag != "json" && structTag != "xml" { return errors.New("Invalid struct tags (use xml or json)!") } model := newModel(args[0]) if structTag == "json" { model.Imports = append(model.Imports, "encoding/json") } else if structTag == "xml" { model.Imports = append(model.Imports, "encoding/xml") } hasId := false hasUuid := false hasNulls := false for _, def := range args[1:] { col := strings.Split(def, ":") if len(col) == 1 { col = append(col, "string") } nullable := nrx.MatchString(col[1]) if !hasNulls && nullable { hasNulls = true model.Imports = append(model.Imports, "github.com/markbates/pop/nulls") } if strings.HasPrefix(col[1], "slices.") { model.Imports = append(model.Imports, "github.com/markbates/pop/slices") } else if !hasUuid && col[1] == "uuid" { hasUuid = true model.Imports = append(model.Imports, "github.com/satori/go.uuid") } a := attribute{ Names: newName(col[0]), OriginalType: col[1], GoType: colType(col[1]), Nullable: nullable, } if col[0] == "id" { hasId = true model.Attributes = append([]attribute{a}, model.Attributes...) } else { model.Attributes = append(model.Attributes, a) } if !a.Nullable { if a.GoType == "string" || a.GoType == "time.Time" || a.GoType == "int" { if a.GoType == "time.Time" { a.GoType = "Time" } model.ValidatableAttributes = append(model.ValidatableAttributes, a) } } } if !hasId { if !hasUuid { model.Imports = append(model.Imports, "github.com/satori/go.uuid") } id := newName("id") id.Proper = "ID" a := attribute{Names: id, OriginalType: "uuid.UUID", GoType: "uuid.UUID"} model.Attributes = append([]attribute{a}, model.Attributes...) } err := os.MkdirAll(model.Package, 0766) if err != nil { return errors.Wrapf(err, "couldn't create folder %s", model.Package) } err = model.Generate() if err != nil { return err } if !skipMigration { cflag := cmd.Flag("path") migrationPath := defaults.String(cflag.Value.String(), "./migrations") err = pop.MigrationCreate(migrationPath, fmt.Sprintf("create_%s", model.Names.Table), "fizz", []byte(model.Fizz()), []byte(fmt.Sprintf("drop_table(\"%s\")", model.Names.Table))) if err != nil { return err } } return nil }, }
View Source
var SQLCmd = &cobra.Command{ Use: "sql [name]", Short: "Generates Up/Down migrations for your database using SQL.", RunE: func(cmd *cobra.Command, args []string) error { if len(args) == 0 { return errors.New("You must supply a name for your migration!") } cflag := cmd.Flag("path") migrationPath := defaults.String(cflag.Value.String(), "./migrates") return pop.MigrationCreate(migrationPath, args[0], "sql", nil, nil) }, }
Functions ¶
func GenerateConfig ¶
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.