Maison >développement back-end >Golang >Comment utiliser les appareils TOML pour amorcer ma base de données dans un environnement de développement utilisant le framework Go Buffalo ?
Lors du développement avec le framework Go Buffalo, nous avons souvent besoin d'amorcer la base de données afin de renseigner certaines données initiales dans les environnements de test et de développement. TOML est un format de fichier de configuration simple et facile à lire qui peut être utilisé pour définir des données. Alors, comment utiliser les fichiers TOML pour amorcer notre base de données ? Dans cet article, l'éditeur PHP Xiaoxin vous présentera une méthode simple pour amorcer une base de données à l'aide de périphériques TOML dans l'environnement de développement du framework Go Buffalo. Nous allons jeter un coup d'oeil!
J'essaie d'utiliser les appareils TOML pour amorcer ma base de données de développement dans le framework Go Buffalo. Cependant, je ne trouve pas d'exemple clair ni de documentation sur la façon de procéder.
Pour amorcer la base de données, vous pouvez utiliser des arnaques. Lors de la création d'une nouvelle application, un espace réservé factice doit être généré à grifts/db.go
comme ceci :
package grifts import "github.com/gobuffalo/grift/grift" var _ = grift.namespace("db", func() { grift.desc("seed", "seeds a database") grift.add("seed", func(c *grift.context) error { // add db seeding stuff here return nil }) })
J'ai essayé d'utiliser model.loadfixture("seed widgets")
avec grift mais j'ai eu une certaine panique car ce n'est pas dans l'environnement de test. Je ne pense pas qu'il existe un support direct pour l'amorçage de bases de données à partir d'installations toml, mais ce serait une fonctionnalité utile. Cependant, en regardant le code dans loadfixture, nous pouvons créer notre propre chargement de luminaire :
Supposons que vous ayez un appareil pour une scène nommée name = "seed widgets"
:
package grifts import ( "fmt" "os" "strings" "github.com/gobuffalo/grift/grift" "github.com/gobuffalo/suite/v4" "github.com/gobuffalo/suite/v4/fix" ) var _ = grift.Namespace("db", func() { grift.Desc("seed", "Seeds a database") grift.Add("seed", func(c *grift.Context) error { // The DB connection will connect to the environment set in `GO_ENV` (defaults to `test`) // Set this environment variable in your `.env` file to `development` // NOTE: it may be better to put seed fixtures in a different directory // to seperate concerns model, err := suite.NewModelWithFixtures(os.DirFS("./fixtures")) if err != nil { return err } sc, err := fix.Find("seed widgets") if err != nil { return err } for _, table := range sc.Tables { for _, row := range table.Row { q := "insert into " + table.Name keys := []string{} skeys := []string{} for k := range row { keys = append(keys, k) skeys = append(skeys, ":"+k) } q = q + fmt.Sprintf(" (%s) values (%s)", strings.Join(keys, ","), strings.Join(skeys, ",")) if _, err = model.DB.Store.NamedExec(q, row); err != nil { return err } } } return nil }) })
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!