summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--models/accountSettings.js2
-rw-r--r--models/actions.js10
-rw-r--r--models/activities.js6
-rw-r--r--models/announcements.js2
-rw-r--r--models/boards.js2
-rw-r--r--models/cardComments.js2
-rw-r--r--models/cards.js2
-rw-r--r--models/checklistItems.js2
-rw-r--r--models/checklists.js2
-rw-r--r--models/customFields.js2
-rw-r--r--models/integrations.js2
-rw-r--r--models/invitationCodes.js2
-rw-r--r--models/lists.js2
-rw-r--r--models/org.js2
-rw-r--r--models/orgUser.js2
-rw-r--r--models/rules.js2
-rw-r--r--models/settings.js2
-rw-r--r--models/swimlanes.js2
-rw-r--r--models/triggers.js10
-rw-r--r--models/unsavedEdits.js2
-rw-r--r--models/users.js2
-rw-r--r--server/migrations.js74
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),
+ },
+ },
+ );
+ }),
+ );
+});