summaryrefslogtreecommitdiffstats
path: root/models/activities.js
diff options
context:
space:
mode:
Diffstat (limited to 'models/activities.js')
-rw-r--r--models/activities.js51
1 files changed, 51 insertions, 0 deletions
diff --git a/models/activities.js b/models/activities.js
new file mode 100644
index 00000000..5de07ee5
--- /dev/null
+++ b/models/activities.js
@@ -0,0 +1,51 @@
+// Activities don't need a schema because they are always set from the a trusted
+// environment - the server - and there is no risk that a user change the logic
+// we use with this collection. Moreover using a schema for this collection
+// would be difficult (different activities have different fields) and wouldn't
+// bring any direct advantage.
+//
+// XXX The activities API is not so nice and need some functionalities. For
+// instance if a user archive a card, and un-archive it a few seconds later we
+// should remove both activities assuming it was an error the user decided to
+// revert.
+Activities = new Mongo.Collection('activities');
+
+Activities.helpers({
+ board() {
+ return Boards.findOne(this.boardId);
+ },
+ user() {
+ return Users.findOne(this.userId);
+ },
+ member() {
+ return Users.findOne(this.memberId);
+ },
+ list() {
+ return Lists.findOne(this.listId);
+ },
+ oldList() {
+ return Lists.findOne(this.oldListId);
+ },
+ card() {
+ return Cards.findOne(this.cardId);
+ },
+ comment() {
+ return CardComments.findOne(this.commentId);
+ },
+ attachment() {
+ return Attachments.findOne(this.attachmentId);
+ },
+});
+
+Activities.before.insert((userId, doc) => {
+ doc.createdAt = new Date();
+});
+
+// For efficiency create an index on the date of creation.
+if (Meteor.isServer) {
+ Meteor.startup(() => {
+ Activities._collection._ensureIndex({
+ createdAt: -1,
+ });
+ });
+}