in source/services/api/event/lib/event.js [214:261]
async updateEvent(ticket, deviceId, updatedEvent) {
const has = Object.prototype.hasOwnProperty;
let docClient = new AWS.DynamoDB.DocumentClient(this.dynamoConfig);
try {
let validRegistration = await this._validateUserDeviceRegistration(
deviceId,
ticket.sub
);
if (validRegistration) {
let oldEvent = await this.getEvent(ticket, deviceId, updatedEvent.id);
oldEvent.updatedAt = moment()
.utc()
.format();
oldEvent.ack = has.call(updatedEvent, 'ack')
? updatedEvent.ack
: false;
oldEvent.suppress = has.call(updatedEvent, 'suppress')
? updatedEvent.suppress
: false;
let _updateParams = {
TableName: process.env.EVENTS_TBL,
Item: oldEvent,
};
let ddbPromise = await docClient.put(_updateParams).promise();
return Promise.resolve(ddbPromise);
} else {
Logger.error(
Logger.levels.INFO,
`[MissingRegistration] No registration found for device ${deviceId}.`
);
return Promise.reject({
code: 400,
error: 'MissingRegistration',
message: `No registration found for device "${deviceId}".`,
});
}
} catch (err) {
Logger.error(Logger.levels.INFO, err);
return Promise.reject({
code: 500,
error: 'EventUpdateFailure',
message: `The event "${updatedEvent.id}" for device "${deviceId}" failed to update.`,
});
}
}