// Insert a user func (s *UserStorage) Insert(c model.User) (string, error) { c.Chocolates = make([]model.Chocolate, len(c.ChocolatesIDs)) err := s.updateChocolatesByChocolatesIDs(&c) if err != nil { return "", err } s.db.Create(&c) if s.db.Error != nil { return "", s.db.Error } return c.GetID(), nil }
func (s *UserStorage) updateChocolatesByChocolatesIDs(u *model.User) error { u.Chocolates = make([]model.Chocolate, len(u.ChocolatesIDs)) for i, chocID := range u.ChocolatesIDs { intID, err := strconv.ParseInt(chocID, 10, 64) if err != nil { return err } // TODO: Fix N+1 query problem s.db.First(&u.Chocolates[i], intID) } return nil }