func (sc *SearchControllerImpl) get(w http.ResponseWriter, r *http.Request) (searchResult, error) { services := new(models.Services) query := r.FormValue("q") if query == "" { return searchResult{services, 0}, nil } var limit int var err error if limit, err = strconv.Atoi(r.FormValue("limit")); err != nil { limit = 11 } if limit > 50 { limit = 50 } var skip int if skip, err = strconv.Atoi(r.FormValue("skip")); err != nil { skip = 0 } var total int db := sc.database.Get(r) if total, err = services.FindRelevant(query, limit, skip, db); err != nil { return searchResult{}, errors.New("Database error: " + err.Error()) } var userID bson.ObjectId if user := sc.currentUser.Get(r); user != nil { userID = user.ID } analytics := new(models.Analytics) analytics.AddSearch(query, limit, userID, db) return searchResult{services, total}, nil }