Ejemplo n.º 1
0
        public async Task Execute(params string[] args)
        {
            var parsed = DeleteRowsArguments.Parse(args);

            if (!parsed.Valid)
            {
                Console.Out.WriteLine("Must give target table, partitionkey, and rowid(s).");
                return;
            }

            Console.Out.WriteLine(
                "Deleting rows \r\n{0}\r\n from environment table {1}:{2}.",
                string.Join("\r\n", parsed.RowIds),
                parsed.Target.Environment,
                parsed.Target.TableName);

            var targetTable = new EnvironmentClient(parsed.Target.Environment)
                              .GetTable(parsed.Target.TableName);

            if (!await targetTable.ExistsAsync())
            {
                Console.Out.WriteLine("Target table does not exist, exiting.");
                return;
            }

            var deleteOperations = parsed.RowIds
                                   .Select(rowId => new DynamicTableEntity(parsed.PartitionKey, rowId, "*", new Dictionary <string, EntityProperty>()))
                                   .Select(entity => targetTable.ExecuteAsync(TableOperation.Delete(entity))).ToList();

            await Task.WhenAll(deleteOperations);
        }
Ejemplo n.º 2
0
        public async Task Execute(params string[] args)
        {
            var parsedArguments = ChangePartitionKeyArguments.Parse(args);

            if (!parsedArguments.Valid)
            {
                Console.WriteLine("Must give source table, row id, and both current and new partition keys.");
                return;
            }

            Console.Out.WriteLine("Changing partition key to {4} for row {0}:{1} {2}-{3}.",
                                  parsedArguments.Source.Environment,
                                  parsedArguments.Source.TableName,
                                  parsedArguments.Partition,
                                  parsedArguments.Id,
                                  parsedArguments.NewPartition);

            var sourceTable = new EnvironmentClient(parsedArguments.Source.Environment).GetTable(parsedArguments.Source.TableName);

            if (!await sourceTable.ExistsAsync())
            {
                Console.Out.WriteLine("Source table does not exist, exiting.");
                return;
            }

            var retrieveRow = TableOperation.Retrieve(parsedArguments.Partition, parsedArguments.Id);

            // TODO: Could use some error handling
            var rowToChange = (DynamicTableEntity)(await sourceTable.ExecuteAsync(retrieveRow)).Result;

            await sourceTable.ExecuteAsync(TableOperation.Delete(rowToChange)).ContinueWith(
                (Task t) => {
                rowToChange.PartitionKey = parsedArguments.NewPartition;
                return(sourceTable.ExecuteAsync(TableOperation.Insert(rowToChange)));
            });
        }