Datenbank seeder hinzugefügt
This commit is contained in:
46
database/fakers/product_faker.go
Normal file
46
database/fakers/product_faker.go
Normal file
@@ -0,0 +1,46 @@
|
||||
package fakers
|
||||
|
||||
import (
|
||||
"github.com/bxcodec/faker/v3"
|
||||
"github.com/google/uuid"
|
||||
"github.com/shopspring/decimal"
|
||||
"gorm.io/gorm"
|
||||
"log"
|
||||
"math"
|
||||
"math/rand"
|
||||
"moretcgshop/app/models"
|
||||
"time"
|
||||
)
|
||||
|
||||
func ProductFaker(db *gorm.DB) *models.Product {
|
||||
user := UserFaker(db)
|
||||
err := db.Create(&user).Error
|
||||
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
name := faker.Name()
|
||||
return &models.Product{
|
||||
ID: uuid.New().String(),
|
||||
|
||||
Name: name,
|
||||
Price: decimal.NewFromFloat(fakePrice()),
|
||||
|
||||
ShortDescription: faker.Paragraph(),
|
||||
Description: faker.Paragraph(),
|
||||
|
||||
CreatedAt: time.Time{},
|
||||
UpdatedAt: time.Time{},
|
||||
}
|
||||
}
|
||||
|
||||
func fakePrice() float64 {
|
||||
return precision(rand.Float64()*math.Pow10(rand.Intn(8)), rand.Intn(2)+1)
|
||||
}
|
||||
|
||||
// precision | a helper function to set precision of price
|
||||
func precision(val float64, pre int) float64 {
|
||||
div := math.Pow10(pre)
|
||||
return float64(int64(val*div)) / div
|
||||
}
|
||||
22
database/fakers/user_faker.go
Normal file
22
database/fakers/user_faker.go
Normal file
@@ -0,0 +1,22 @@
|
||||
package fakers
|
||||
|
||||
import (
|
||||
"github.com/bxcodec/faker/v3"
|
||||
"github.com/google/uuid"
|
||||
"gorm.io/gorm"
|
||||
"moretcgshop/app/models"
|
||||
"time"
|
||||
)
|
||||
|
||||
func UserFaker(db *gorm.DB) *models.User {
|
||||
return &models.User{
|
||||
ID: uuid.New().String(),
|
||||
FirstName: faker.FirstName(),
|
||||
LastName: faker.LastName(),
|
||||
Email: faker.Email(),
|
||||
Password: "$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi", // password
|
||||
CreatedAt: time.Time{},
|
||||
UpdatedAt: time.Time{},
|
||||
DeletedAt: gorm.DeletedAt{},
|
||||
}
|
||||
}
|
||||
28
database/seeders/seeder.go
Normal file
28
database/seeders/seeder.go
Normal file
@@ -0,0 +1,28 @@
|
||||
package seeders
|
||||
|
||||
import (
|
||||
"gorm.io/gorm"
|
||||
"moretcgshop/database/fakers"
|
||||
)
|
||||
|
||||
type Seeder struct {
|
||||
Seeder interface{}
|
||||
}
|
||||
|
||||
func RegisterSeeders(db *gorm.DB) []Seeder {
|
||||
return []Seeder{
|
||||
{Seeder: fakers.UserFaker(db)},
|
||||
{Seeder: fakers.ProductFaker(db)},
|
||||
}
|
||||
}
|
||||
|
||||
func DBSeed(db *gorm.DB) error {
|
||||
for _, seeder := range RegisterSeeders(db) {
|
||||
err := db.Debug().Create(seeder.Seeder).Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user