in source/services/event-proxy/lib/message.js [48:111]
async createEvent(message) {
let _event = {
...message,
};
_event.id = uuid.v4();
_event.createdAt = moment()
.utc()
.format();
_event.updatedAt = moment()
.utc()
.format();
_event.ack = false;
_event.suppress = false;
let docClient = new AWS.DynamoDB.DocumentClient(this.dynamoConfig);
/**
* Gets userId from the registrations table
* This part can be removed if devices send userId directly.
*/
let data = await this._getUserId(_event.deviceId);
if (data.Count === 0) {
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}.`,
});
} else if (data.Count > 1) {
Logger.error(
Logger.levels.INFO,
`[RegistrationRetrieveFailure] Multiple records found for device ${deviceId}.`
);
return Promise.reject({
code: 400,
error: 'RegistrationRetrieveFailure',
message: `Multiple records found for device ${deviceId}.`,
});
}
_event.userId = data.Items[0].userId;
let params = {
TableName: process.env.EVENTS_TBL,
Item: _event,
};
// Puts the event message
try {
await docClient.put(params).promise();
return Promise.resolve(_event);
} catch (err) {
Logger.error(Logger.levels.INFO, err);
return Promise.reject({
code: 500,
error: 'EventCreateFailure',
message: `Error occurred while attempting to create event message for device ${
message.deviceId
}.`,
});
}
}