func createProducts() { for _, p := range Seeds.Products { category := findCategoryByName(p.CategoryName) product := models.Product{} product.CategoryID = category.ID product.Name = p.Name product.NameWithSlug = slug.Slug{p.NameWithSlug} product.Code = p.Code product.Price = p.Price product.Description = p.Description product.MadeCountry = p.MadeCountry if err := db.DB.Create(&product).Error; err != nil { log.Fatalf("create product (%v) failure, got err %v", product, err) } for _, cv := range p.ColorVariations { color := findColorByName(cv.ColorName) colorVariation := models.ColorVariation{} colorVariation.ProductID = product.ID colorVariation.ColorID = color.ID if err := db.DB.Create(&colorVariation).Error; err != nil { log.Fatalf("create color_variation (%v) failure, got err %v", colorVariation, err) } for _, i := range cv.Images { image := models.ColorVariationImage{} if file, err := openFileByURL(i.URL); err != nil { fmt.Printf("open file (%q) failure, got err %v", i.URL, err) } else { defer file.Close() image.Image.Scan(file) } image.ColorVariationID = colorVariation.ID if err := db.DB.Create(&image).Error; err != nil { log.Fatalf("create color_variation_image (%v) failure, got err %v", image, err) } } for _, sv := range p.SizeVariations { size := findSizeByName(sv.SizeName) sizeVariation := models.SizeVariation{} sizeVariation.ColorVariationID = colorVariation.ID sizeVariation.SizeID = size.ID sizeVariation.AvailableQuantity = 20 if err := db.DB.Create(&sizeVariation).Error; err != nil { log.Fatalf("create size_variation (%v) failure, got err %v", sizeVariation, err) } } } } }