diff options
Diffstat (limited to 'models/announcements.js')
-rw-r--r-- | models/announcements.js | 74 |
1 files changed, 54 insertions, 20 deletions
diff --git a/models/announcements.js b/models/announcements.js index 2cb1e1b7..f3a62244 100644 --- a/models/announcements.js +++ b/models/announcements.js @@ -1,23 +1,49 @@ Announcements = new Mongo.Collection('announcements'); -Announcements.attachSchema(new SimpleSchema({ - enabled: { - type: Boolean, - defaultValue: false, - }, - title: { - type: String, - optional: true, - }, - body: { - type: String, - optional: true, - }, - sort: { - type: Number, - decimal: true, - }, -})); +Announcements.attachSchema( + new SimpleSchema({ + enabled: { + type: Boolean, + defaultValue: false, + }, + title: { + type: String, + optional: true, + }, + body: { + type: String, + optional: true, + }, + sort: { + type: Number, + decimal: true, + }, + createdAt: { + type: Date, + optional: true, + // eslint-disable-next-line consistent-return + autoValue() { + if (this.isInsert) { + return new Date(); + } else { + this.unset(); + } + }, + }, + modifiedAt: { + type: Date, + denyUpdate: false, + // eslint-disable-next-line consistent-return + autoValue() { + if (this.isInsert || this.isUpsert || this.isUpdate) { + return new Date(); + } else { + this.unset(); + } + }, + }, + }) +); Announcements.allow({ update(userId) { @@ -26,11 +52,19 @@ Announcements.allow({ }, }); +Announcements.before.update((userId, doc, fieldNames, modifier, options) => { + modifier.$set = modifier.$set || {}; + modifier.$set.modifiedAt = Date.now(); +}); + if (Meteor.isServer) { Meteor.startup(() => { + Announcements._collection._ensureIndex({ modifiedAt: -1 }); const announcements = Announcements.findOne({}); - if(!announcements){ - Announcements.insert({enabled: false, sort: 0}); + if (!announcements) { + Announcements.insert({ enabled: false, sort: 0 }); } }); } + +export default Announcements; |