async updateEvent()

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.`,
      });
    }
  }