private object ExecuteScan(TranslationResult translationResult, Type entityType)
        {
            var scanConfig = new ScanOperationConfig
            {
                Filter         = translationResult.GetScanFilterForTable(this.TableDefinition),
                CollectResults = false
            };

            if (translationResult.AttributesToGet != null)
            {
                scanConfig.Select          = SelectValues.SpecificAttributes;
                scanConfig.AttributesToGet = translationResult.AttributesToGet;
            }

            var searchResult = this.TableDefinition.Scan(scanConfig);

            this.Log("DynamoDb scan: " + translationResult);

            return(this.CreateReader(searchResult, entityType, translationResult.ProjectionFunc));
        }
        private Search ExecuteScan(TranslationResult translationResult, Type entityType)
        {
            var scanConfig = new ScanOperationConfig
            {
                Filter           = translationResult.GetScanFilterForTable(this.TableDefinition),
                CollectResults   = false,
                FilterExpression = translationResult.CustomizationHooks.CustomFilterExpression
            };

            if (translationResult.AttributesToGet != null)
            {
                scanConfig.Select          = SelectValues.SpecificAttributes;
                scanConfig.AttributesToGet = translationResult.AttributesToGet;
            }

            translationResult.CustomizationHooks.ConfigureScanOperationCallback?.Invoke(scanConfig);

            var searchResult = this.TableDefinition.Scan(scanConfig);

            this.Log("DynamoDb scan: {0}", translationResult);

            return(searchResult);
        }