recommending
arnaucode idoctnef@openmailbox.org
Fri, 07 Jul 2017 20:45:25 +0200
4 files changed,
27 insertions(+),
24 deletions(-)
M
mongodb.go
→
mongodb.go
@@ -141,11 +141,12 @@ func getAllItems() ([]ItemModel, error) {
result := []ItemModel{} iter := itemCollection.Find(nil).Limit(100).Iter() err := iter.All(&result) - if err != nil { - //user not exist - return result, err - } else { - //user exist - return result, err - } + return result, err +} + +func getItemsNotActed(actedItems []string) ([]ItemModel, error) { + result := []ItemModel{} + iter := itemCollection.Find(bson.M{"id": bson.M{"$nin": actedItems}}).Limit(100).Iter() + err := iter.All(&result) + return result, err }
M
recommendations.go
→
recommendations.go
@@ -6,18 +6,16 @@
"github.com/fatih/color" ) -func getRecommendations(userid string, nrec int) { - - fmt.Println(userid) - fmt.Println(nrec) - +func getRecommendations(userid string, nrec int) []ItemModel { user, err := getUserById(userid) check(err) - color.Blue("user: ") - fmt.Println(user) - items, err := getAllItems() + items, err := getItemsNotActed(user.Actions) check(err) - color.Blue("all items: ") + + //select nrec items from the items array + + color.Blue("recommended items: ") fmt.Println(items) + return items }
M
serverRoutes.go
→
serverRoutes.go
@@ -65,9 +65,12 @@ nrec, err := strconv.Atoi(vars["nrec"])
check(err) //now, get recommendations - getRecommendations(userid, nrec) + items := getRecommendations(userid, nrec) + //convert []items struct to json + jItems, err := json.Marshal(items) + check(err) - fmt.Fprintln(w, "recommendations") + fmt.Fprintln(w, string(jItems)) } func SelectItem(w http.ResponseWriter, r *http.Request) { ipFilter(w, r)@@ -80,6 +83,12 @@ if err != nil {
fmt.Fprintln(w, "item "+itemid+" not found") } + //find user + user, err := getUserById(userid) + if err != nil { + fmt.Fprintln(w, "user "+userid+" not found") + } + //increase TActed in item item.TActed = item.TActed + 1@@ -87,12 +96,6 @@ //save item
item, err = updateItem(item) check(err) fmt.Println(item) - - //find user - user, err := getUserById(userid) - if err != nil { - fmt.Fprintln(w, "user "+userid+" not found") - } //add item to []Actions of user user.Actions = append(user.Actions, itemid)