Database¶
MongoDB¶
SFChat database has one collection “chats”:
{
_id: ObjectId("507f191e810c19729de860ea"),
status: "ready",
user_tokens: [
ObjectId("507f191e810c19729de860eb"),
ObjectId("507f1f77bcf86cd799439011")
],
messages: [{
_id: ObjectId("507f191e810c19729de860ed"),
user_token: ObjectId("507f191e810c19729de860eb"),
msg: "Hi, how are you?",
system: false
}],
long_polling: [{
_id: ObjectId("507f191e810c19729de860ed"),
user_token: ObjectId("507f191e810c19729de860eb"),
created: ISODate("2012-04-03T02:05:06Z")
}],
created: ISODate("2012-04-03T02:05:06Z")
};
Table below displays schema for “chats” collection:
Name | Type | Description | Comment |
chats._id | ObjectId | Unique key. Automatically generated by MongoDB | |
chats.status | “draft”, “ready”, “closed” | Chat status. It should be one of the list. | |
chats.use_tokens | Array | List of “user tokens”. Generated by ObjectId(). | It is used for authentication process. |
chats.messages | Array | Messages container that include income messages | |
chats.messages._id | ObjectId | “message token”. Generated by ObjectId(). | |
chats.messages.user_token | ObjectId | “user token” | For whom that message is addressed |
chats.messages.msg | String[140] | User’s message | |
chats.messages.system | true, false | Indicate is that message system or not | |
long_polling | Array | Long polling process container | |
long_polling._id | ObjectId | Long polling process identifier | |
long_polling.user_token | ObjectId | “user token” | |
long_polling.created | String[UTC] | Creation date in UTC format | Used to determine close tab or browser |
chats.created | String[UTC] | Creation date in UTC format | It’s used to identify old chats and clear them |