benitlux server: don't suggest current friends
authorAlexis Laferrière <alexis.laf@xymus.net>
Sun, 25 Sep 2016 23:14:24 +0000 (19:14 -0400)
committerAlexis Laferrière <alexis.laf@xymus.net>
Mon, 2 Jan 2017 19:43:37 +0000 (14:43 -0500)
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

contrib/benitlux/src/server/benitlux_social.nit

index 7764c75..01a5640 100644 (file)
@@ -346,12 +346,18 @@ ROWID, name FROM users WHERE
                        # currently at the bar, official people (proprio, brewers, barmaids & barmen)
 
                        limit -= people.length
-                       user_id = user_id or else -1
 
-                       # Recommend popular users
+                       # Recommend popular users without the local user or `followed_followers`
+                       var avoid_ids = new Array[Int]
+                       if user_id != null then avoid_ids.add user_id
+                       for p in people do avoid_ids.add p.id
+                       if avoid_ids.is_empty then avoid_ids.add -1
+
                        var stmt = select("""
 ROWID, name, (SELECT count(*) FROM follows WHERE follows.user_to == users.ROWID) AS n_followers
-FROM users WHERE ROWID != {{{user_id}}}
+FROM users WHERE {{{
+       [for id in avoid_ids do "ROWID != {id}"].join(" AND ")
+}}}
 ORDER BY n_followers DESC LIMIT {{{limit}}}""")
                        assert stmt != null else print_error "Select 'friends' failed with: {error or else "?"}"
                        for row in stmt do people.add new User(row[0].to_i, row[1].to_s)