Skip to content

Instantly share code, notes, and snippets.

@jpopesculian
Created January 5, 2016 19:33
Show Gist options
  • Save jpopesculian/8924f1f05302049f3e7a to your computer and use it in GitHub Desktop.
Save jpopesculian/8924f1f05302049f3e7a to your computer and use it in GitHub Desktop.
Mongo Shell Script to add users to rooms in Rocket Chat
// Mongo Shell Script
DB_NAME = ""
// HOST = "localhost"
// PORT = "27017"
// db = connect(HOST + ":" + PORT + "/" + DB_NAME)
conn = new Mongo()
db = conn.getDB(DB_NAME)
for (userNum = 1; userNum <= 500; userNum++) {
for (roomNum = 0; roomNum <= 1; roomNum++) {
addUserToRoom(userNum, roomNum)
}
}
function addUserToRoom(userNum, roomNum) {
user = findUser(userNum)
room = findRoom(roomNum)
addUsernameToRoom(user.username, room._id)
addRoomToUserSub(room, user)
print("Inserted " + user.username + " into " + room.name)
}
function addRoomToUserSub(room, user) {
doc = {
_id: randomId(),
open: true,
alert: true,
unread: NumberInt(1),
ts: room.ts,
rid: room._id,
name: room.name,
t: room.t,
u: {
_id: user._id,
username: user.username
}
}
db.rocketchat_subscription.update({rid: room._id, "u._id": user._id}, doc, {upsert: true})
}
function addUsernameToRoom(username, roomId) {
db.rocketchat_room.update({_id: roomId}, {$addToSet: {usernames: username}})
}
function findRoom(num) {
roomName = genRoomName(num)
return db.rocketchat_room.findOne({name: roomName})
}
function genRoomName(num) {
return "room" + zeroPad(num, 0)
}
function findUser(num) {
username = genUsername(num)
return db.users.findOne({username: username})
}
function genUsername(num) {
return "user" + zeroPad(num, 4)
}
function zeroPad(num, places) {
var zero = places - num.toString().length + 1
return Array(+(zero > 0 && zero)).join("0") + num
}
function randomId() {
return randomString(17, '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ')
}
function randomString(length, chars) {
result = '';
for (i = length; i > 0; --i) result += chars[Math.floor(Math.random() * chars.length)];
return result;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment