Ejemplo n.º 1
0
        public static async Task <PartitionV2> GetUploadPartitionV3(TraceWriter log, CloudTableClient client, string owner, string partition)
        {
            try {
                var table = client.GetTableReference(PartitionV2.TableName);
                await table.CreateIfNotExistsAsync();

                var query = TableQuery.CombineFilters(
                    TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, owner),
                    TableOperators.And,
                    TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.Equal, $"{owner}-{partition}")
                    );

                var exQuery    = new TableQuery <PartitionV2>().Where(query);
                var partitions = await QueryHelper.ListAll(table, exQuery);

                if (partitions.Count > 0)
                {
                    return(partitions.FirstOrDefault());
                }

                PartitionV2 p = new PartitionV2 {
                    PartitionKey = owner,
                    RowKey       = $"{owner}-{partition}",
                    IsActive     = true
                };

                await table.ExecuteAsync(TableOperation.Insert(p));

                return(p);
            }
            catch (Exception ex) {
                log.Warning(ex.Message, ex.ToString());
                throw;
            }
        }
Ejemplo n.º 2
0
        public static async Task <PartitionV2> GetUploadPartitionV2(TraceWriter log, CloudTableClient client, string owner)
        {
            try {
                var table = client.GetTableReference(PartitionV2.TableName);
                await table.CreateIfNotExistsAsync();


                var query      = TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, owner);
                var exQuery    = new TableQuery <PartitionV2>().Where(query);
                var unfiltered = await QueryHelper.ListAll(table, exQuery);

                var filteredItems = unfiltered.Where(m => m.IsActive);

                var active = filteredItems.FirstOrDefault();
                if (active != null)
                {
                    return(active);
                }
                else
                {
                    PartitionV2 p = new PartitionV2 {
                        PartitionKey = owner,
                        RowKey       = $"{owner}-{DateTimeOffset.UtcNow.ToString("yyyy-MM")}-{Guid.NewGuid().ToString().Replace("-", "")}",
                        IsActive     = true
                    };

                    await table.ExecuteAsync(TableOperation.Insert(p));

                    return(p);
                }
            }
            catch (Exception ex) {
                log.Warning(ex.Message, ex.ToString());
                throw;
            }
        }