From 550a5f94a2fc37566cf405957df9da6f14d66b4d Mon Sep 17 00:00:00 2001 From: yanghao05 Date: Sun, 29 Jan 2023 18:26:30 +0800 Subject: [PATCH] add seeder demo --- cmd/seed.go | 1 - contracts/seeder.go | 2 -- database/seeders/user.go | 21 +++++++++------------ 3 files changed, 9 insertions(+), 15 deletions(-) diff --git a/cmd/seed.go b/cmd/seed.go index 02e4758..87e7442 100644 --- a/cmd/seed.go +++ b/cmd/seed.go @@ -29,7 +29,6 @@ var seedCmd = &cobra.Command{ } for _, seeder := range seedersContainer.Seeders { - log.Printf("seed table (%s) for %d times", seeder.Table(), seeder.Times()) seeder.Run(seedersContainer.DB) } return nil diff --git a/contracts/seeder.go b/contracts/seeder.go index ef21d61..165d5c8 100644 --- a/contracts/seeder.go +++ b/contracts/seeder.go @@ -4,7 +4,5 @@ import "gorm.io/gorm" // Migration route interface type Seeder interface { - Times() uint - Table() string Run(*gorm.DB) } diff --git a/database/seeders/user.go b/database/seeders/user.go index 7f787a6..050de34 100644 --- a/database/seeders/user.go +++ b/database/seeders/user.go @@ -33,23 +33,20 @@ type User struct { Status bool } -func (s *UserSeeder) Times() uint { - return 10 -} - func (s *UserSeeder) Run(db *gorm.DB) { - var i uint - for i = 0; i < s.Times(); i++ { + times := 10 + for i := 0; i < times; i++ { data := s.Generate(i) - db.Table(s.Table()).Create(&data) + if i == 0 { + stmt := &gorm.Statement{DB: db} + _ = stmt.Parse(&data) + log.Printf("seeding %s for %d times", stmt.Schema.Table, times) + } + db.Create(&data) } } -func (s *UserSeeder) Table() string { - return "users" -} - -func (s *UserSeeder) Generate(idx uint) User { +func (s *UserSeeder) Generate(idx int) User { return User{ Username: fmt.Sprintf("username: %d", idx), Password: fmt.Sprintf("password: %d", idx),