You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
26 lines
894 B
26 lines
894 B
'use strict'; |
|
|
|
module.exports = function setDocumentTimestamps(doc, timestampOption, currentTime, createdAt, updatedAt) { |
|
const skipUpdatedAt = timestampOption != null && timestampOption.updatedAt === false; |
|
const skipCreatedAt = timestampOption != null && timestampOption.createdAt === false; |
|
|
|
const defaultTimestamp = currentTime != null ? |
|
currentTime() : |
|
doc.ownerDocument().constructor.base.now(); |
|
|
|
if (!skipCreatedAt && |
|
(doc.isNew || doc.$isSubdocument) && |
|
createdAt && |
|
!doc.$__getValue(createdAt) && |
|
doc.$__isSelected(createdAt)) { |
|
doc.$set(createdAt, defaultTimestamp, undefined, { overwriteImmutable: true }); |
|
} |
|
|
|
if (!skipUpdatedAt && updatedAt && (doc.isNew || doc.$isModified())) { |
|
let ts = defaultTimestamp; |
|
if (doc.isNew && createdAt != null) { |
|
ts = doc.$__getValue(createdAt); |
|
} |
|
doc.$set(updatedAt, ts); |
|
} |
|
};
|
|
|