private void SetMatchCriteriaForFunction() { base.SetMatchCriteria(async transaction => { if (await Task.FromResult(transaction.IsTransactionForFunctionMessage <TFunctionMessage>()) == false) { return(false); } if (_criteria == null) { return(true); } var functionCall = new TransactionForFunctionVO <TFunctionMessage>(transaction, transaction.Decode <TFunctionMessage>()); return(await _criteria(functionCall).ConfigureAwait(false)); }); }
public async Task MapsFunctionDtoToSearchDocument() { var mockElasticClient = new MockElasticClient(); var indexer = new ElasticFunctionIndexer <TransferFunction, SearchDocument>("my-index", mockElasticClient.ElasticClient, (tx) => new SearchDocument(tx)); TransactionForFunctionVO <TransferFunction> transactionForFunction = IndexerTestData.CreateSampleTransactionForFunction(); await indexer.IndexAsync(transactionForFunction); Assert.Single(mockElasticClient.BulkRequests); var indexedDoc = mockElasticClient.GetFirstBulkOperation().GetBody() as SearchDocument; //check function message mapping Assert.Equal(transactionForFunction.Transaction.TransactionHash, indexedDoc.TransactionHash); Assert.Equal(transactionForFunction.FunctionMessage.To, indexedDoc.To); Assert.Equal(transactionForFunction.FunctionMessage.Value.ToString(), indexedDoc.Value); }
public async Task MapsFunctionDtoToGenericSearchDocument() { var indexDefinition = new FunctionIndexDefinition <TransferFunction>(); var mockSearchIndexClient = new MockElasticClient(); var indexer = new ElasticFunctionIndexer <TransferFunction>("transfer-functions", mockSearchIndexClient.ElasticClient, indexDefinition); TransactionForFunctionVO <TransferFunction> transactionForFunction = IndexerTestData.CreateSampleTransactionForFunction(); await indexer.IndexAsync(transactionForFunction); Assert.Single(mockSearchIndexClient.BulkRequests); var indexedDoc = mockSearchIndexClient.GetFirstBulkOperation().GetBody() as GenericSearchDocument; //check generic mapping Assert.Equal(transactionForFunction.Transaction.BlockNumber.ToString(), indexedDoc[PresetSearchFieldName.tx_block_number.ToString()]); //check function message mapping Assert.Equal(transactionForFunction.FunctionMessage.To, indexedDoc["to"]); Assert.Equal(transactionForFunction.FunctionMessage.Value.ToString(), indexedDoc["value"]); }
public async Task MapsFunctionDtoToSearchDocument() { var index = new Index(); var mockSearchIndexClient = new SearchIndexClientMock <SearchDocument>(); var indexer = new AzureFunctionIndexer <TransferFunction, SearchDocument>( mockSearchIndexClient.SearchIndexClient, (tx) => new SearchDocument(tx)); TransactionForFunctionVO <TransferFunction> transactionForFunction = IndexerTestData.CreateSampleTransactionForFunction(); await indexer.IndexAsync(transactionForFunction); Assert.Single(mockSearchIndexClient.IndexedBatches); var firstIndexAction = mockSearchIndexClient.IndexedBatches[0].Actions.First(); var document = firstIndexAction.Document; //check function message mapping Assert.Equal(transactionForFunction.Transaction.TransactionHash, document.TransactionHash); Assert.Equal(transactionForFunction.FunctionMessage.To, document.To); Assert.Equal(transactionForFunction.FunctionMessage.Value.ToString(), document.Value); }
public static GenericSearchDocument ToGenericElasticSearchDoc <TFunctionMessage>( this TransactionForFunctionVO <TFunctionMessage> functionCall, FunctionIndexDefinition <TFunctionMessage> indexDefinition) where TFunctionMessage : FunctionMessage, new() { var dictionary = new GenericSearchDocument(); foreach (var field in indexDefinition.Fields) { var val = field.GetTransactionForFunctionValue(functionCall)?.ToElasticSearchFieldValue(); if (val != null) { dictionary.Add(field.Name.ToElasticName(), val); } } var id = indexDefinition.KeyField().GetTransactionForFunctionValue(functionCall); dictionary.SetId(id.ToString()); return(dictionary); }
public async Task MapsFunctionDtoToGenericSearchDocument() { var indexDefinition = new FunctionIndexDefinition <TransferFunction>(); var index = indexDefinition.ToAzureIndex(); var mockSearchIndexClient = new SearchIndexClientMock <GenericSearchDocument>(); var indexer = new AzureFunctionIndexer <TransferFunction>( mockSearchIndexClient.SearchIndexClient, indexDefinition); TransactionForFunctionVO <TransferFunction> transactionForFunction = IndexerTestData.CreateSampleTransactionForFunction(); await indexer.IndexAsync(transactionForFunction); Assert.Single(mockSearchIndexClient.IndexedBatches); var firstIndexAction = mockSearchIndexClient.IndexedBatches[0].Actions.First(); var document = firstIndexAction.Document; //check generic mapping Assert.Equal(transactionForFunction.Transaction.BlockNumber.ToString(), document[PresetSearchFieldName.tx_block_number.ToString()]); //check function message mapping Assert.Equal(transactionForFunction.FunctionMessage.To, document["to"]); Assert.Equal(transactionForFunction.FunctionMessage.Value.ToString(), document["value"]); }
protected override Task ExecuteInternalAsync(TransactionReceiptVO value) { var functionCall = new TransactionForFunctionVO <TFunctionMessage>(value, value.Decode <TFunctionMessage>()); return(_action(functionCall)); }
public TransactionContext(IndexDefinition index, T dto, TransactionReceiptVO tx) : base(index) { FunctionCall = new TransactionForFunctionVO <T>(tx, dto); Index = index; }