diff options
author | Justin Reynolds <justinr1234@gmail.com> | 2019-09-05 12:29:45 -0500 |
---|---|---|
committer | Justin Reynolds <justinr1234@gmail.com> | 2019-09-05 12:29:45 -0500 |
commit | 3b9f2ca7c2fffa230bb0c6d4254a88deb9fbb023 (patch) | |
tree | 356ab6f5693852464bdb975934c53f63445e6d5f | |
parent | 2c78aab3dc91ee276bfb5e4717ada72dc84ca3b0 (diff) | |
download | wekan-3b9f2ca7c2fffa230bb0c6d4254a88deb9fbb023.tar.gz wekan-3b9f2ca7c2fffa230bb0c6d4254a88deb9fbb023.tar.bz2 wekan-3b9f2ca7c2fffa230bb0c6d4254a88deb9fbb023.zip |
Fixes #2596 incorrect date types for created & updated
-rw-r--r-- | models/accountSettings.js | 2 | ||||
-rw-r--r-- | models/actions.js | 10 | ||||
-rw-r--r-- | models/activities.js | 6 | ||||
-rw-r--r-- | models/announcements.js | 2 | ||||
-rw-r--r-- | models/boards.js | 2 | ||||
-rw-r--r-- | models/cardComments.js | 2 | ||||
-rw-r--r-- | models/cards.js | 2 | ||||
-rw-r--r-- | models/checklistItems.js | 2 | ||||
-rw-r--r-- | models/checklists.js | 2 | ||||
-rw-r--r-- | models/customFields.js | 2 | ||||
-rw-r--r-- | models/integrations.js | 2 | ||||
-rw-r--r-- | models/invitationCodes.js | 2 | ||||
-rw-r--r-- | models/lists.js | 2 | ||||
-rw-r--r-- | models/org.js | 2 | ||||
-rw-r--r-- | models/orgUser.js | 2 | ||||
-rw-r--r-- | models/rules.js | 2 | ||||
-rw-r--r-- | models/settings.js | 2 | ||||
-rw-r--r-- | models/swimlanes.js | 2 | ||||
-rw-r--r-- | models/triggers.js | 10 | ||||
-rw-r--r-- | models/unsavedEdits.js | 2 | ||||
-rw-r--r-- | models/users.js | 2 | ||||
-rw-r--r-- | server/migrations.js | 74 |
22 files changed, 103 insertions, 33 deletions
diff --git a/models/accountSettings.js b/models/accountSettings.js index ed1087ca..f61614b8 100644 --- a/models/accountSettings.js +++ b/models/accountSettings.js @@ -20,6 +20,8 @@ AccountSettings.attachSchema( autoValue() { if (this.isInsert) { return new Date(); + } else if (this.isUpsert) { + return { $setOnInsert: new Date() }; } else { this.unset(); } diff --git a/models/actions.js b/models/actions.js index e9fa9114..8995d101 100644 --- a/models/actions.js +++ b/models/actions.js @@ -14,6 +14,16 @@ Actions.allow({ }, }); +Actions.before.insert((userId, doc) => { + doc.createdAt = new Date(); + doc.modifiedAt = doc.createdAt; +}); + +Actions.before.update((userId, doc, fieldNames, modifier) => { + modifier.$set = modifier.$set || {}; + modifier.$set.modifiedAt = new Date(); +}); + Actions.helpers({ description() { return this.desc; diff --git a/models/activities.js b/models/activities.js index 3ecd5c8c..8f7e1285 100644 --- a/models/activities.js +++ b/models/activities.js @@ -62,8 +62,14 @@ Activities.helpers({ //}, }); +Activities.before.update((userId, doc, fieldNames, modifier) => { + modifier.$set = modifier.$set || {}; + modifier.$set.modifiedAt = new Date(); +}); + Activities.before.insert((userId, doc) => { doc.createdAt = new Date(); + doc.modifiedAt = doc.createdAt; }); Activities.after.insert((userId, doc) => { diff --git a/models/announcements.js b/models/announcements.js index c08710b8..7fdf8d8b 100644 --- a/models/announcements.js +++ b/models/announcements.js @@ -25,6 +25,8 @@ Announcements.attachSchema( autoValue() { if (this.isInsert) { return new Date(); + } else if (this.isUpsert) { + return { $setOnInsert: new Date() }; } else { this.unset(); } diff --git a/models/boards.js b/models/boards.js index b5f8b01b..af7685ae 100644 --- a/models/boards.js +++ b/models/boards.js @@ -55,6 +55,8 @@ Boards.attachSchema( autoValue() { if (this.isInsert) { return new Date(); + } else if (this.isUpsert) { + return { $setOnInsert: new Date() }; } else { this.unset(); } diff --git a/models/cardComments.js b/models/cardComments.js index 40723582..39477e14 100644 --- a/models/cardComments.js +++ b/models/cardComments.js @@ -34,6 +34,8 @@ CardComments.attachSchema( autoValue() { if (this.isInsert) { return new Date(); + } else if (this.isUpsert) { + return { $setOnInsert: new Date() }; } else { this.unset(); } diff --git a/models/cards.js b/models/cards.js index d92d003c..1414f6d7 100644 --- a/models/cards.js +++ b/models/cards.js @@ -107,6 +107,8 @@ Cards.attachSchema( autoValue() { if (this.isInsert) { return new Date(); + } else if (this.isUpsert) { + return { $setOnInsert: new Date() }; } else { this.unset(); } diff --git a/models/checklistItems.js b/models/checklistItems.js index e6451fbf..7f3ab095 100644 --- a/models/checklistItems.js +++ b/models/checklistItems.js @@ -44,6 +44,8 @@ ChecklistItems.attachSchema( autoValue() { if (this.isInsert) { return new Date(); + } else if (this.isUpsert) { + return { $setOnInsert: new Date() }; } else { this.unset(); } diff --git a/models/checklists.js b/models/checklists.js index f139192e..7ad9cae5 100644 --- a/models/checklists.js +++ b/models/checklists.js @@ -35,6 +35,8 @@ Checklists.attachSchema( autoValue() { if (this.isInsert) { return new Date(); + } else if (this.isUpsert) { + return { $setOnInsert: new Date() }; } else { this.unset(); } diff --git a/models/customFields.js b/models/customFields.js index 6b5697c1..cc798b16 100644 --- a/models/customFields.js +++ b/models/customFields.js @@ -78,6 +78,8 @@ CustomFields.attachSchema( autoValue() { if (this.isInsert) { return new Date(); + } else if (this.isUpsert) { + return { $setOnInsert: new Date() }; } else { this.unset(); } diff --git a/models/integrations.js b/models/integrations.js index 0b2e08c6..41334744 100644 --- a/models/integrations.js +++ b/models/integrations.js @@ -63,6 +63,8 @@ Integrations.attachSchema( autoValue() { if (this.isInsert) { return new Date(); + } else if (this.isUpsert) { + return { $setOnInsert: new Date() }; } else { this.unset(); } diff --git a/models/invitationCodes.js b/models/invitationCodes.js index 75db5708..abb30f32 100644 --- a/models/invitationCodes.js +++ b/models/invitationCodes.js @@ -18,6 +18,8 @@ InvitationCodes.attachSchema( autoValue() { if (this.isInsert) { return new Date(); + } else if (this.isUpsert) { + return { $setOnInsert: new Date() }; } else { this.unset(); } diff --git a/models/lists.js b/models/lists.js index e57849d7..9136c337 100644 --- a/models/lists.js +++ b/models/lists.js @@ -45,6 +45,8 @@ Lists.attachSchema( autoValue() { if (this.isInsert) { return new Date(); + } else if (this.isUpsert) { + return { $setOnInsert: new Date() }; } else { this.unset(); } diff --git a/models/org.js b/models/org.js index ce6f377e..a24d829d 100644 --- a/models/org.js +++ b/models/org.js @@ -98,6 +98,8 @@ Org.attachSchema( autoValue() { if (this.isInsert) { return new Date(); + } else if (this.isUpsert) { + return { $setOnInsert: new Date() }; } else { this.unset(); } diff --git a/models/orgUser.js b/models/orgUser.js index b671cb41..f310fa9c 100644 --- a/models/orgUser.js +++ b/models/orgUser.js @@ -49,6 +49,8 @@ OrgUser.attachSchema( autoValue() { if (this.isInsert) { return new Date(); + } else if (this.isUpsert) { + return { $setOnInsert: new Date() }; } else { this.unset(); } diff --git a/models/rules.js b/models/rules.js index 202071fc..2e6729cc 100644 --- a/models/rules.js +++ b/models/rules.js @@ -27,6 +27,8 @@ Rules.attachSchema( autoValue() { if (this.isInsert) { return new Date(); + } else if (this.isUpsert) { + return { $setOnInsert: new Date() }; } else { this.unset(); } diff --git a/models/settings.js b/models/settings.js index 4a0359d5..8eb02c5b 100644 --- a/models/settings.js +++ b/models/settings.js @@ -60,6 +60,8 @@ Settings.attachSchema( autoValue() { if (this.isInsert) { return new Date(); + } else if (this.isUpsert) { + return { $setOnInsert: new Date() }; } else { this.unset(); } diff --git a/models/swimlanes.js b/models/swimlanes.js index 769aaed3..46e410da 100644 --- a/models/swimlanes.js +++ b/models/swimlanes.js @@ -38,6 +38,8 @@ Swimlanes.attachSchema( autoValue() { if (this.isInsert) { return new Date(); + } else if (this.isUpsert) { + return { $setOnInsert: new Date() }; } else { this.unset(); } diff --git a/models/triggers.js b/models/triggers.js index 45f5e6fc..a95b1235 100644 --- a/models/triggers.js +++ b/models/triggers.js @@ -12,6 +12,16 @@ Triggers.mutations({ }, }); +Triggers.before.insert((userId, doc) => { + doc.createdAt = new Date(); + doc.updatedAt = doc.createdAt; +}); + +Triggers.before.update((userId, doc, fieldNames, modifier) => { + modifier.$set = modifier.$set || {}; + modifier.$set.updatedAt = new Date(); +}); + Triggers.allow({ insert(userId, doc) { return allowIsBoardAdmin(userId, Boards.findOne(doc.boardId)); diff --git a/models/unsavedEdits.js b/models/unsavedEdits.js index 89418bfb..81331598 100644 --- a/models/unsavedEdits.js +++ b/models/unsavedEdits.js @@ -29,6 +29,8 @@ UnsavedEditCollection.attachSchema( autoValue() { if (this.isInsert) { return new Date(); + } else if (this.isUpsert) { + return { $setOnInsert: new Date() }; } else { this.unset(); } diff --git a/models/users.js b/models/users.js index 55d85e07..ee53c7ab 100644 --- a/models/users.js +++ b/models/users.js @@ -54,6 +54,8 @@ Users.attachSchema( autoValue() { if (this.isInsert) { return new Date(); + } else if (this.isUpsert) { + return { $setOnInsert: new Date() }; } else { this.unset(); } diff --git a/server/migrations.js b/server/migrations.js index f3776edd..836220f3 100644 --- a/server/migrations.js +++ b/server/migrations.js @@ -684,39 +684,6 @@ Migrations.add('mutate-boardIds-in-customfields', () => { }); }); -const firstBatchOfDbsToAddCreatedAndUpdated = [ - AccountSettings, - Actions, - Activities, - Announcements, - Boards, - CardComments, - Cards, - ChecklistItems, - Checklists, - CustomFields, - Integrations, - InvitationCodes, - Lists, - Rules, - Settings, - Swimlanes, - Triggers, - UnsavedEdits, -]; - -firstBatchOfDbsToAddCreatedAndUpdated.forEach(db => { - db.before.insert((userId, doc) => { - doc.createdAt = Date.now(); - doc.updatedAt = doc.createdAt; - }); - - db.before.update((userId, doc, fieldNames, modifier) => { - modifier.$set = modifier.$set || {}; - modifier.$set.updatedAt = new Date(); - }); -}); - const modifiedAtTables = [ AccountSettings, Actions, @@ -769,3 +736,44 @@ Migrations.add('add-missing-created-and-modified', () => { console.error(e); }); }); + +Migrations.add('fix-incorrect-dates', () => { + const tables = [ + AccountSettings, + Actions, + Activities, + Announcements, + Boards, + CardComments, + Cards, + ChecklistItems, + Checklists, + CustomFields, + Integrations, + InvitationCodes, + Lists, + Rules, + Settings, + Swimlanes, + Triggers, + UnsavedEdits, + ]; + + // Dates were previously created with Date.now() which is a number, not a date + tables.forEach(t => + t + .rawCollection() + .find({ $or: [{ createdAt: { $type: 1 } }, { updatedAt: { $type: 1 } }] }) + .forEach(({ _id, createdAt, updatedAt }) => { + t.rawCollection().update( + { _id }, + { + $set: { + createdAt: new Date(createdAt), + updatedAt: new Date(updatedAt), + }, + }, + ); + }), + ); +}); |