Skip to content

Instantly share code, notes, and snippets.

@victorsteven
Created August 27, 2019 19:19
Show Gist options
  • Save victorsteven/e82f175b82bdaffa049bfbc1cba4992a to your computer and use it in GitHub Desktop.
Save victorsteven/e82f175b82bdaffa049bfbc1cba4992a to your computer and use it in GitHub Desktop.
package seed
import (
"log"
"github.com/jinzhu/gorm"
"github.com/victorsteven/fullstack/api/models"
)
var users = []models.User{
models.User{
Nickname: "Steven victor",
Email: "[email protected]",
Password: "password",
},
models.User{
Nickname: "Martin Luther",
Email: "[email protected]",
Password: "password",
},
}
var posts = []models.Post{
models.Post{
Title: "Title 1",
Content: "Hello world 1",
},
models.Post{
Title: "Title 2",
Content: "Hello world 2",
},
}
func Load(db *gorm.DB) {
err := db.Debug().DropTableIfExists(&models.Post{}, &models.User{}).Error
if err != nil {
log.Fatalf("cannot drop table: %v", err)
}
err = db.Debug().AutoMigrate(&models.User{}, &models.Post{}).Error
if err != nil {
log.Fatalf("cannot migrate table: %v", err)
}
err = db.Debug().Model(&models.Post{}).AddForeignKey("author_id", "users(id)", "cascade", "cascade").Error
if err != nil {
log.Fatalf("attaching foreign key error: %v", err)
}
for i, _ := range users {
err = db.Debug().Model(&models.User{}).Create(&users[i]).Error
if err != nil {
log.Fatalf("cannot seed users table: %v", err)
}
posts[i].AuthorID = users[i].ID
err = db.Debug().Model(&models.Post{}).Create(&posts[i]).Error
if err != nil {
log.Fatalf("cannot seed posts table: %v", err)
}
}
}
@Yefhem
Copy link

Yefhem commented Jan 25, 2022

err = db.Debug().Model(&models.Post{}).AddForeignKey("author_id", "users(id)", "cascade", "cascade").Error
Hi Victor. How can i write this code block with gorm 2.0?

@r6m
Copy link

r6m commented Jul 12, 2022

@Yefhem, I have not tested it, but according to the docs:

db.Migrator().CreateConstraint(&User{}, "CreditCards")
db.Migrator().CreateConstraint(&User{}, "fk_users_credit_cards")

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment