feat: Allow setting createdAt and updatedAt during Parse.Object creation with maintenance key (#8696)
This commit is contained in:
@@ -368,9 +368,36 @@ RestWrite.prototype.setRequiredFieldsIfNeeded = function () {
|
||||
};
|
||||
|
||||
// Add default fields
|
||||
this.data.updatedAt = this.updatedAt;
|
||||
if (!this.query) {
|
||||
this.data.createdAt = this.updatedAt;
|
||||
// allow customizing createdAt and updatedAt when using maintenance key
|
||||
if (
|
||||
this.auth.isMaintenance &&
|
||||
this.data.createdAt &&
|
||||
this.data.createdAt.__type === 'Date'
|
||||
) {
|
||||
this.data.createdAt = this.data.createdAt.iso;
|
||||
|
||||
if (this.data.updatedAt && this.data.updatedAt.__type === 'Date') {
|
||||
const createdAt = new Date(this.data.createdAt);
|
||||
const updatedAt = new Date(this.data.updatedAt.iso);
|
||||
|
||||
if (updatedAt < createdAt) {
|
||||
throw new Parse.Error(
|
||||
Parse.Error.VALIDATION_ERROR,
|
||||
'updatedAt cannot occur before createdAt'
|
||||
);
|
||||
}
|
||||
|
||||
this.data.updatedAt = this.data.updatedAt.iso;
|
||||
}
|
||||
// if no updatedAt is provided, set it to createdAt to match default behavior
|
||||
else {
|
||||
this.data.updatedAt = this.data.createdAt;
|
||||
}
|
||||
} else {
|
||||
this.data.updatedAt = this.updatedAt;
|
||||
this.data.createdAt = this.updatedAt;
|
||||
}
|
||||
|
||||
// Only assign new objectId if we are creating new object
|
||||
if (!this.data.objectId) {
|
||||
@@ -382,6 +409,8 @@ RestWrite.prototype.setRequiredFieldsIfNeeded = function () {
|
||||
});
|
||||
}
|
||||
} else if (schema) {
|
||||
this.data.updatedAt = this.updatedAt;
|
||||
|
||||
Object.keys(this.data).forEach(fieldName => {
|
||||
setRequiredFieldIfNeeded(fieldName, false);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user