コード例 #1
0
        private BatchWriteItemRequest GetHashtagsWriteRequests(
            IEnumerable <HashtagModel> hashtags,
            PhotoModel existingItem,
            IEnumerable <HashtagModel> hashtagsBefore,
            HashtagUpdateMode updateMode)
        {
            var hashtagsToRemove = updateMode == HashtagUpdateMode.Update
                ? GetHashTagsToRemove(hashtagsBefore, hashtags)
                : emptyHashtagSequence;

            var hashtagsToAdd = GetHashTagsToAdd(hashtagsBefore, hashtags).Select(x => new HashtagPhoto {
                Hashtag = x, Photo = existingItem
            });

            logWriter.LogInformation($"Existing hashtags:\n{JsonConvert.SerializeObject(existingItem?.Hashtags.ToArray() ?? emptyHashtagSequence)}\nIncoming hashtags:\n{JsonConvert.SerializeObject(hashtags.ToArray())}\nHashtags to add:\n{JsonConvert.SerializeObject(hashtagsToAdd.ToArray())}\nHashtags to delete:\n{JsonConvert.SerializeObject(hashtagsToRemove.ToArray())}");

            var hashTagRemoveRequests = hashtagsToRemove.Select(x => new WriteRequest
            {
                DeleteRequest = new DeleteRequest
                {
                    Key = Mappers.Hashtag.ToDbKey(x),
                }
            });


            var hashTagAddRequests = hashtagsToAdd.Select(x => new WriteRequest
            {
                PutRequest = new PutRequest
                {
                    Item = Mappers.HashtagPhoto.ToDbItem(x)
                }
            });

            var writeRequests = hashTagRemoveRequests.Union(hashTagAddRequests);

            return(writeRequests.Any()
                ? new BatchWriteItemRequest {
                RequestItems = new Dictionary <string, List <WriteRequest> > {
                    { tableName, writeRequests.ToList() }
                }
            }
                : null);
        }
コード例 #2
0
        private BatchWriteItemRequest GetHashtagsRequests(string text, IEnumerable <HashtagModel> hashtags, PhotoModel existingItem, HashtagUpdateMode updateMode)
        {
            IEnumerable <HashtagModel> hashtagsBefore = updateMode == HashtagUpdateMode.Update
                ? existingItem.Hashtags
                : emptyHashtagSequence;

            existingItem.RawText  = text;
            existingItem.Hashtags = hashtags;

            BatchWriteItemRequest writeItemsRequest = GetHashtagsWriteRequests(hashtags, existingItem, hashtagsBefore, updateMode);

            return(writeItemsRequest);
        }