/// <summary> /// Query items based on query expression. Consistent read is by default set to false to ensure performance /// </summary> public async Task <IEnumerable <SdbItem> > QueryItemsAsync(string query, bool consistentRead = false) { try { var selectRequest = new SelectRequest() { SelectExpression = query, ConsistentRead = consistentRead }; var response = await _client.SelectAsync(selectRequest); if (response.HttpStatusCode != HttpStatusCode.OK) { return(new List <SdbItem>()); } return(!response.Items.Any() ? new List <SdbItem>() : SimpleDbHelper.ConvertSimpleDbItemsToMetaStoreItems(response.Items)); } catch (AmazonSimpleDBException e) { Console.WriteLine(e.StackTrace); throw; } }
/// <summary> /// Creates single item /// </summary> public async Task <HttpStatusCode> CreateItemAsync(SdbItem item) { try { //Add additional attribute for the Exists flag on the newly created item item.Attributes = item.Attributes.Concat(new[] { new SdbItemAttribute(ExistsAttributeName, "1"), }); var convertedAttributes = SimpleDbHelper.ConvertItemAttributesToReplaceableAttributes(item.Attributes); var putRequest = new PutAttributesRequest(_simpleDbDomain, item.ItemName, convertedAttributes.ToList()); var putResponse = await _client.PutAttributesAsync(putRequest); return(putResponse.HttpStatusCode); } catch (AmazonSimpleDBException e) { Console.WriteLine(e.StackTrace); throw; } }
/// <summary> /// Returns single item based on the id /// </summary> public async Task <SdbItem> GetItemAsync(string itemId, bool consistentRead = false) { try { var attributes = await RetrieveItemAttributesFromDb(itemId, consistentRead); if (!attributes.Any()) { return(null); } var item = new SdbItem(itemId, SimpleDbHelper.ConvertAttributesToItemAttributes(attributes)); return(item); } catch (AmazonSimpleDBException e) { Console.WriteLine(e.StackTrace); throw; } }
/// <summary> /// Creates multiple items simultaneously /// </summary> public async Task BatchCreateItemsAsync(IEnumerable <SdbItem> items) { var replaceableItems = new List <ReplaceableItem>(); foreach (var item in items) { //Add additional attribute for the Exists flag on the newly created item item.Attributes = item.Attributes.Concat(new[] { new SdbItemAttribute(ExistsAttributeName, "1"), }); var convertedAttributes = SimpleDbHelper.ConvertItemAttributesToReplaceableAttributes(item.Attributes); replaceableItems.Add(new ReplaceableItem(item.ItemName, convertedAttributes.ToList())); } try { var batchPutRequest = new BatchPutAttributesRequest(_simpleDbDomain, replaceableItems); await _client.BatchPutAttributesAsync(batchPutRequest); } catch (AmazonSimpleDBException e) { Console.WriteLine(e.StackTrace); throw; } }
/// <summary> /// Returns all items /// </summary> public async Task <IEnumerable <SdbItem> > GetAllItems() { try { var selectRequest = new SelectRequest() { SelectExpression = "select * from `" + _simpleDbDomain + "`" }; var response = await _client.SelectAsync(selectRequest); if (response.HttpStatusCode != HttpStatusCode.OK) { return(new List <SdbItem>()); } return(!response.Items.Any() ? new List <SdbItem>() : SimpleDbHelper.ConvertSimpleDbItemsToMetaStoreItems(response.Items)); } catch (AmazonSimpleDBException e) { Console.WriteLine(e.StackTrace); throw; } }