Datenbank seeder hinzugefügt

This commit is contained in:
2023-11-15 20:42:39 +01:00
parent 54fdfe30a9
commit eac3fd9a9b
9 changed files with 160 additions and 5 deletions

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

View 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{},
}
}

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