public void ParsePartitionKey() { var key1 = new DateKey(new DateTime(year: 2016, month: 4, day: 1).ToUniversalTime()); var key2 = DateKey.Parse(key1.Key); Assert.Equal(key1, key2); }
private static async Task ViewNameMigration() { var account = GetStorageAccount(); var client = account.CreateCloudTableClient(); var viewNameTable = client.GetTableReference(AzureConstants.TableNames.ViewNameDate); var buildResultTable = client.GetTableReference(AzureConstants.TableNames.BuildResultDate); var startDate = DateTimeOffset.UtcNow - TimeSpan.FromDays(14); var query = new TableQuery <DynamicTableEntity>() .Where(FilterUtil.SinceDate(ColumnNames.PartitionKey, startDate)) .Select(new[] { "PartitionKey", nameof(BuildResultEntity.ViewName) }); var all = await AzureUtil.QueryAsync(buildResultTable, query); var set = new HashSet <Tuple <DateKey, string> >(); var list = new List <ViewNameEntity>(); foreach (var entity in all) { var dateKey = DateKey.Parse(entity.PartitionKey); var viewName = entity.Properties[nameof(BuildResultEntity.ViewName)].StringValue; var tuple = Tuple.Create(dateKey, viewName); if (set.Add(tuple)) { list.Add(new ViewNameEntity(dateKey, viewName)); } } await AzureUtil.InsertBatchUnordered(viewNameTable, list); }
private static async Task CheckUnknown() { var account = GetStorageAccount(); var buildUtil = new BuildUtil(account); var date = DateTimeOffset.UtcNow - TimeSpan.FromDays(1); var populator = new BuildTablePopulator(account.CreateCloudTableClient(), CreateClient(), Console.Out); var table = account.CreateCloudTableClient().GetTableReference(AzureConstants.TableNames.BuildResultDate); foreach (var entity in buildUtil.GetBuildResultsByKindName(date, BuildResultClassification.Unknown.Name, AzureUtil.ViewNameAll)) { var entityDate = DateKey.Parse(entity.PartitionKey); var before = new DateKey(entityDate.Date.AddDays(-1)); var after = new DateKey(entityDate.Date.AddDays(1)); var op = TableOperation.Retrieve(before.Key, entity.RowKey); var result = await table.ExecuteAsync(op); if (result.Result != null) { await table.ExecuteAsync(TableOperation.Delete(entity)); continue; } op = TableOperation.Retrieve(after.Key, entity.RowKey); result = await table.ExecuteAsync(op); if (result.Result != null) { await table.ExecuteAsync(TableOperation.Delete(entity)); continue; } } }
private static async Task MigrateDateKeyCore <T>(string tableName) where T : ITableEntity, new() { Console.WriteLine($"Processing {tableName}"); var account = GetStorageAccount(); var table = account.CreateCloudTableClient().GetTableReference(tableName); var startKey = new DateKey(DateKey.StartDate); var endKey = new DateKey(DateTimeOffset.UtcNow); var query = TableQueryUtil.And( TableQueryUtil.PartitionKey(startKey.Key, ColumnOperator.GreaterThanOrEqual), TableQueryUtil.PartitionKey(endKey.Key, ColumnOperator.LessThanOrEqual)); var list = await AzureUtil.QueryAsync <T>(table, query); Console.WriteLine($"Processing {list.Count} entities"); var deleteList = new List <EntityKey>(); foreach (var entity in list) { deleteList.Add(entity.GetEntityKey()); var dateKey = DateKey.Parse(entity.PartitionKey); var dateTimeKey = new DateTimeKey(dateKey.Date, DateTimeKeyFlags.Date); entity.PartitionKey = dateTimeKey.Key; } Console.WriteLine("Writing new values"); await AzureUtil.InsertBatchUnordered(table, list); Console.WriteLine("Deleting old values"); await AzureUtil.DeleteBatchUnordered(table, deleteList); }