コード例 #1
0
        public async Task <T> Find(object hashKey, object sortKey)
        {
            var key      = Converter.ToPrimative(hashKey);
            var sort     = Converter.ToPrimative(sortKey);
            var document = await Table.GetItemAsync(key, sort);

            return(document == null ? default(T) : Converter.FromDocument <T>(document));
        }
コード例 #2
0
        private void AddQueryFilterCondition(string name, QueryOperator operation, IEnumerable <object> values)
        {
            Primitive primitiveValue = null;

            DynamoDBEntry[] primitiveValues = null;
            if (values != null)
            {
                var valuesArray = values.ToArray();
                if (valuesArray.Length == 1)
                {
                    primitiveValue = converter.ToPrimative(valuesArray.First());
                }
                else
                {
                    primitiveValues = valuesArray.Select(v => (DynamoDBEntry)converter.ToPrimative(v)).ToArray();
                }
            }

            if (queryOperation == null)
            {
                if (!IsKeyField(name))
                {
                    throw new ApplicationException("The first Filter must be a key field");
                }
                queryOperation = new QueryOperationConfig();
                if (indexName != null)
                {
                    queryOperation.IndexName = indexName;
                    if (indexAttributes != null)
                    {
                        queryOperation.Select          = SelectValues.SpecificAttributes;
                        queryOperation.AttributesToGet = indexAttributes;
                    }
                }

                if (primitiveValue != null)
                {
                    queryOperation.Filter = new QueryFilter(name, operation, primitiveValue);
                }
                else if (primitiveValues != null)
                {
                    queryOperation.Filter = new QueryFilter(name, operation, primitiveValues);
                }
            }
            else
            {
                if (primitiveValue != null)
                {
                    queryOperation.Filter.AddCondition(name, operation, primitiveValue);
                }
                else if (primitiveValues != null)
                {
                    queryOperation.Filter.AddCondition(name, operation, primitiveValues);
                }
            }
        }