public async addConnection()

in source/lambda/lib/dynamodb-handler.ts [155:202]


  public async addConnection(connectionDefinition: ConnectionBuilderTypes.ConnectionDefinition): Promise<DynamoDBHandlerTypes.GetConnectionsItem> {
    logger.log(LoggingLevel.DEBUG, `Adding a connection: ${JSON.stringify(connectionDefinition, null, 2)}`);

    const timestamp = new Date().toISOString();
    const params: DocumentClient.PutItemInput = {
      TableName: this.connectionTable,
      Item: {
        connectionName: connectionDefinition.connectionName,
        control: connectionDefinition.control,
        protocol: connectionDefinition.protocol,
        area: connectionDefinition.area,
        machineName: connectionDefinition.machineName,
        process: connectionDefinition.process,
        sendDataToIoTSitewise: connectionDefinition.sendDataToIoTSitewise !== undefined ? connectionDefinition.sendDataToIoTSitewise : false,
        sendDataToIoTTopic: connectionDefinition.sendDataToIoTTopic !== undefined ? connectionDefinition.sendDataToIoTTopic : false,
        sendDataToKinesisDataStreams: connectionDefinition.sendDataToKinesisDataStreams !== undefined ? connectionDefinition.sendDataToKinesisDataStreams : true,
        siteName: connectionDefinition.siteName,
        timestamp: timestamp,
        greengrassGroupId: this.greengrassGroupId
      }
    };

    switch (connectionDefinition.protocol) {
      case ConnectionBuilderTypes.MachineProtocol.OPCDA:
        params.Item.opcDa = connectionDefinition.opcDa;
        break;
      case ConnectionBuilderTypes.MachineProtocol.OPCUA:
        params.Item.opcUa = connectionDefinition.opcUa;
        break;
      default:
        throw new LambdaError({
          message: `Unsupported protocol: ${connectionDefinition.protocol}`,
          name: 'DynamoDBHandlerError',
          statusCode: 400
        });
    }

    await dynamoDb.put(params).promise();
    return {
      connectionName: params.Item.connectionName,
      protocol: params.Item.protocol,
      status: params.Item.control,
      sendDataToIoTSitewise: params.Item.sendDataToIoTSitewise,
      sendDataToIoTTopic: params.Item.sendDataToIoTTopic,
      sendDataToKinesisDataStreams: params.Item.sendDataToKinesisDataStreams,
      machineName: params.Item.machineName
    };
  }