aboutsummaryrefslogtreecommitdiff
path: root/seed/seeder/seeder.go
diff options
context:
space:
mode:
Diffstat (limited to 'seed/seeder/seeder.go')
-rw-r--r--seed/seeder/seeder.go47
1 files changed, 47 insertions, 0 deletions
diff --git a/seed/seeder/seeder.go b/seed/seeder/seeder.go
new file mode 100644
index 0000000..37dfe30
--- /dev/null
+++ b/seed/seeder/seeder.go
@@ -0,0 +1,47 @@
+package seeder
+
+import (
+ "context"
+ "log"
+
+ "github.com/go-faker/faker/v4"
+ "github.com/go-faker/faker/v4/pkg/options"
+ "github.com/volatiletech/sqlboiler/v4/boil"
+ "gitlab.com/alexkavon/newsstand/src/db"
+ "gitlab.com/alexkavon/newsstand/src/models"
+ "gitlab.com/alexkavon/newsstand/src/user"
+)
+
+type Seeder struct {
+ dbconn *db.Db
+}
+
+func beginSeed(dbconn *db.Db, insertFunc func(context.Context, boil.ContextExecutor, boil.Columns) error) error {
+ return insertFunc(context.Background(), dbconn.ToSqlDb(), boil.Infer())
+}
+
+func NewSeeder(dbconn *db.Db) *Seeder {
+ options.SetGenerateUniqueValues(true)
+ return &Seeder{dbconn}
+}
+
+func (s *Seeder) SeedUsers(num int) error {
+ user.InitHooks()
+ for i := 1; i <= num; i++ {
+ log.Printf("seeding=%d", i)
+ u := &models.User{}
+ u.Username = faker.Username()
+ u.Secret = faker.Password()
+
+ err := beginSeed(s.dbconn, u.Insert)
+ if err != nil {
+ return err
+ }
+ }
+ return nil
+}
+
+func (s *Seeder) SeedPosts(num int) error {
+ // query users, pick random, generate num posts
+ return nil
+}