diff options
Diffstat (limited to 'bucky/db/index.js')
| -rw-r--r-- | bucky/db/index.js | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/bucky/db/index.js b/bucky/db/index.js index 8715125..36e5c93 100644 --- a/bucky/db/index.js +++ b/bucky/db/index.js @@ -15,6 +15,10 @@ var Thread = db.Thread = bookshelf.Model.extend({ tableName: 'threads', hasTimestamps: false, }) +var ThreadUser = db.ThreadUser = bookshelf.Model.extend({ + tableName: 'thread_users', + hasTimestamps: false, +}) var Comment = db.Comment = bookshelf.Model.extend({ tableName: 'comments', hasTimestamps: false, @@ -50,11 +54,17 @@ db.getUser = function(id) { var model = new User({'id': id}) return model.fetch() } +db.getUsersById = function(ids){ + return User.where("id", "in", ids).fetchAll() +} +db.getUsernamesById = function(ids){ + return User.column("id").column("username").where("id", "in", ids).fetchAll() +} db.getUserByUsername = function(username) { return new User({'username': username}).fetch() } db.getLastlog = function(limit){ - return knex.column('username').column('lastseen').select().from('users').orderBy('lastseen', 'desc').limit(limit || 10) + return knex.column('id').column('username').column('lastseen').select().from('users').orderBy('lastseen', 'desc').limit(limit || 10) } /* THREADS */ @@ -83,6 +93,29 @@ db.updateThread = function(data){ db.destroyThread = function(id){ } +/* THREAD USERS (user privacy) */ +db.addUserToThread = function(user_id, thread_id){ + return new ThreadUser({ user_id, thread_id }).save() +} +db.removeUserFromThread = function(user_id, thread_id){ + return new ThreadUser({ user_id, thread_id }).destroy() +} +db.getThreadUserIds = function(thread_id){ + return ThreadUser.column("user_id").query("where", "thread_id", "=", thread_id).fetch() +} +db.getThreadUsers = function(thread_id){ + return db.getThreadUserIds(thread_id).then(thread_users => { + if (! thread_users.length) return [] + var user_ids = thread_users.pluck("user_id") + return db.getUsernamesById(user_ids).then(usernames => { + return usernames + }) + }) +} +db.getUserThreadIds = function(user_id){ + return ThreadUser.query("where", "user_id", "=", user_id).fetch() +} + /* FILES */ db.getFilesForThread = function (id){ |
