async _getDeviceRegistration()

in source/services/notification/lib/alert.js [134:173]


  async _getDeviceRegistration(deviceId) {
    let _keyConditionExpression = 'deviceId = :did';
    let _expressionAttributeValues = {
      ':did': deviceId,
    };

    const params = {
      TableName: process.env.REGISTRATION_TBL,
      IndexName: 'deviceId-index',
      KeyConditionExpression: _keyConditionExpression,
      ExpressionAttributeValues: _expressionAttributeValues,
    };

    const docClient = new AWS.DynamoDB.DocumentClient(this.dynamoConfig);

    try {
      let data = await docClient.query(params).promise();
      if (data.Items.length === 0) {
        return Promise.resolve(false);
      }

      let devices = data.Items.filter(device => device.status !== 'deleted');
      if (devices.length > 0) {
        return Promise.resolve(devices[0]);
      } else {
        return Promise.resolve(false);
      }
    } catch (err) {
      Logger.error(Logger.levels.INFO, err);
      Logger.error(
        Logger.levels.INFO,
        `[RegistrationRetrieveFailure] Error occurred while attempting to retrieve registration information for device ${deviceId}.`
      );
      return Promise.reject({
        code: 500,
        error: 'RegistrationRetrieveFailure',
        message: `Error occurred while attempting to retrieve registration information for device "${deviceId}".`,
      });
    }
  }