Esempio n. 1
0
        private static TableOperation BuildLinkChangeTableOperation(
            CategoryGroup categoryGroup,
            string categoryName,
            CategoryLinkChange change)
        {
            var link = new CategoryLink
            {
                CategoryGroup = categoryGroup,
                CategoryName  = categoryName,
                ProfileId     = change.ProfileId
            };
            var            adapter = new CategoryLinkAdapter(link);
            TableOperation operation;

            if (change.ChangeType == CategoryLinkChangeType.Add)
            {
                operation = TableOperation.InsertOrReplace(adapter);
            }
            else
            {
                // We don't care about concurrency here because we are removing the item
                adapter.ETag = "*";

                operation = TableOperation.Delete(adapter);
            }
            return(operation);
        }
Esempio n. 2
0
        public async Task <IEnumerable <CategoryLink> > GetCategoryLinks(
            CategoryGroup categoryGroup,
            string categoryName,
            CancellationToken cancellationToken)
        {
            Ensure.String.IsNotNullOrWhiteSpace(categoryName, nameof(categoryName));

            var partitionKey       = CategoryLinkAdapter.BuildPartitionKey(categoryGroup, categoryName);
            var partitionKeyFilter = TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, partitionKey);
            var query = new TableQuery <CategoryLinkAdapter>().Where(partitionKeyFilter);
            var table = GetTable(TableName);

            var entries = await table.ExecuteQueryAsync(query, cancellationToken).ConfigureAwait(false);

            return(from x in entries
                   select x.Value);
        }