func (r Repository) SaveAllAuthors(authors []*entity.Author) error { tx := r.DB.Begin() for _, a := range authors { author := entity.Author{ID: a.ID} tx.Preload("Crawl").Preload("Images").FirstOrCreate(&author) author.Ordering = a.Ordering author.Name = a.Name author.Title = a.Title author.URL = a.URL for _, i := range a.Images { author.AddImage(i) } if author.Crawl.ID == 0 { author.Crawl = entity.Crawl{Next: time.Now()} } tx.Save(&author) } tx.Commit() return nil }