| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 | // 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,    });  });}
 |