Bagaimanakah cara saya menggunakan lekapan TOML untuk menyemai pangkalan data saya dalam persekitaran pembangunan menggunakan rangka kerja Go Buffalo?

王林
Lepaskan: 2024-02-11 13:33:08
ke hadapan
549 orang telah melayarinya

如何使用 TOML 装置在使用 Go Buffalo 框架的开发环境中为我的数据库播种?

Apabila membangun dengan rangka kerja Go Buffalo, kita selalunya perlu menyemai pangkalan data untuk mengisi persekitaran ujian dan pembangunan dengan beberapa data awal. TOML ialah format fail konfigurasi yang ringkas dan mudah dibaca yang boleh digunakan untuk menentukan data. Jadi bagaimana kita menggunakan fail TOML untuk menyemai pangkalan data kita? Dalam artikel ini, editor PHP Xiaoxin akan memperkenalkan anda kepada kaedah mudah untuk menyemai pangkalan data menggunakan peranti TOML dalam persekitaran pembangunan rangka kerja Go Buffalo. Mari lihat!

Kandungan soalan

Saya cuba menggunakan lekapan TOML untuk menyemai pangkalan data pembangunan saya dalam rangka kerja Go Buffalo. Walau bagaimanapun, saya tidak dapat mencari contoh atau dokumentasi yang jelas tentang cara melakukan ini.

Penyelesaian

Untuk menyemai pangkalan data anda boleh menggunakan grifts. Apabila membuat aplikasi baharu, grift pemegang tempat tiruan harus dijana pada grifts/db.go seperti ini:

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
    })

})
Salin selepas log masuk

Saya cuba menggunakan model.loadfixture("seed widgets") dengan grift tetapi agak panik kerana ia tidak berada dalam persekitaran ujian. Saya tidak fikir terdapat sokongan langsung untuk pembenihan pangkalan data daripada pemasangan toml, tetapi ia akan menjadi ciri yang berguna. Walau bagaimanapun, melihat kod dalam loadfixture kita boleh membina pemuatan lekapan kita sendiri:

Andaikan anda mempunyai perlawanan untuk adegan bernama 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
    })

})
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah cara saya menggunakan lekapan TOML untuk menyemai pangkalan data saya dalam persekitaran pembangunan menggunakan rangka kerja Go Buffalo?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!