Esempio n. 1
0
        public static async Task DeletePartitionKeyAsync(CloudTable table, string partitionKey)
        {
            try
            {
                // Create the range query using the fluid API
                TableQuery <TableEntity> rangeQuery = new TableQuery <TableEntity>().Where(
                    TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, partitionKey)
                    );

                TableContinuationToken token = null;
                rangeQuery.TakeCount = 100;
                int segmentNumber = 0;
                do
                {
                    TableQuerySegment <TableEntity> segment = await table.ExecuteQuerySegmentedAsync(rangeQuery, token);

                    if (segment.Results.Count > 0)
                    {
                        segmentNumber++;
                        Console.WriteLine();
                        Console.WriteLine("Deleting segment {0}", segmentNumber);
                        IList <ITableEntity> deleteThese = segment.ToList <ITableEntity>();
                        DeleteBatch(deleteThese, table);
                    }
                    // Save the continuation token for the next call to ExecuteQuerySegmentedAsync
                    token = segment.ContinuationToken;
                }while (token != null);
            }
            catch (StorageException e)
            {
                Console.WriteLine(e.Message);
                Console.ReadLine();
                throw;
            }
        }
Esempio n. 2
0
        public static List <T> ListarCotacoes <T>(IConfiguration config,
                                                  string siglaMoeda) where T : CotacaoEntity, new()
        {
            // Acessar configurações
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
                config["StorageConnectionString"]);

            // Obter referência da tabela
            CloudTableClient tableClient = storageAccount.CreateCloudTableClient();
            CloudTable       table       = tableClient.GetTableReference("Cotacoes");

            TableQuery <T> query = new TableQuery <T>().Where(
                TableQuery.GenerateFilterCondition(
                    "PartitionKey", QueryComparisons.Equal, siglaMoeda));

            // Obtém os resultados em segmentos
            List <T> cotacoes = new List <T>();
            TableContinuationToken continuationToken = null;

            do
            {
                Task <TableQuerySegment <T> > task =
                    table.ExecuteQuerySegmentedAsync(
                        query, continuationToken);
                TableQuerySegment <T> querySegment = task.Result;
                cotacoes.AddRange(querySegment.ToList());
                continuationToken = querySegment.ContinuationToken;
            } while (continuationToken != null);

            return(cotacoes);
        }
Esempio n. 3
0
        public static List <T> ExecuteQuery <T>(CloudTable table, TableQuery <T> query) where T : ITableEntity, new()
        {
            TableContinuationToken continuationToken = null;

            TableQuerySegment <T> tableQueryResult =
                AsyncContext.Run(() => table.ExecuteQuerySegmentedAsync(query, continuationToken));

            return(tableQueryResult.ToList());
        }
Esempio n. 4
0
        public async Task <List <T> > ReadAsync <T>(string tableName) where T : ITableEntity, new()
        {
            CloudTable table = client.GetTableReference(tableName);
            await table.CreateIfNotExistsAsync();

            var query = new TableQuery <T>();
            TableQuerySegment <T> segment = await table.ExecuteQuerySegmentedAsync(query, new TableContinuationToken());

            if (!(segment == null || segment.Results.Count == 0))
            {
                return(segment.ToList());
            }

            return(null);
        }
Esempio n. 5
0
        public List <CustomerEntity> All()
        {
            TableQuery <CustomerEntity> tableQuery        = new TableQuery <CustomerEntity>();
            TableContinuationToken      continuationToken = null;

            var fullList = new List <CustomerEntity>();

            do
            {
                TableQuerySegment <CustomerEntity> result = _azureTable.ExecuteQuerySegmented(tableQuery, continuationToken);
                continuationToken = result.ContinuationToken;
                var customerList = result as IList <CustomerEntity> ?? result.ToList();
                fullList.AddRange(customerList);
            } while (continuationToken != null);
            return(fullList);
        }
Esempio n. 6
0
        public async Task <List <T> > ReadAsync <T>(string tableName, string fieldName, string operation, string value) where T : ITableEntity, new()
        {
            CloudTable table = client.GetTableReference(tableName);
            await table.CreateIfNotExistsAsync();

            var query = new TableQuery <T>().Where(TableQuery.GenerateFilterCondition(fieldName, operation, value));
            TableQuerySegment <T> segment = await table.ExecuteQuerySegmentedAsync <T>(query, new TableContinuationToken());

            if (!(segment == null || segment.Results.Count == 0))
            {
                return(segment.ToList());
            }
            else
            {
                return(null);
            }
        }
Esempio n. 7
0
        public static async Task <IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
            [Table("Collections")] CloudTable collectionsTable, ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");


            TableQuery <CollectionsTableEntity>        query   = new TableQuery <CollectionsTableEntity>();
            TableQuerySegment <CollectionsTableEntity> segment = await collectionsTable.ExecuteQuerySegmentedAsync(query, null);

            List <CollectionsTableEntity> tablelist = segment.ToList();

            log.LogInformation("Counted: " + tablelist.Count());

            // transform the objects returned so they only have the relevant fields
            // TODO: error condition
            return((ActionResult) new OkObjectResult(segment.Select(Mappings.ToPinItem)));
        }
Esempio n. 8
0
        public static async Task <List <DocumentEntity> > DocumentPartitionQuery(TableContinuationToken token, string partitionKey)
        {
            string tableName = "documents";

            if (CheckConnectionString())
            {
                // Create a table client for interacting with the table service
                CloudTableClient cloudTableClient = storageAccount.CreateCloudTableClient();

                // Select table to work with
                CloudTable cloudTable = cloudTableClient.GetTableReference(tableName);

                try
                {
                    // Create a custom table query
                    // Format: TableQuery.CombineFilters(TableQuery.GenerateFilterCondition(), TableOperators.And, TableQuery.GenerateFilterCondition());
                    string condition = TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, partitionKey);
                    TableQuery <DocumentEntity> query = new TableQuery <DocumentEntity>().Where(condition);

                    // Execute the operation
                    TableQuerySegment <DocumentEntity> result = await cloudTable.ExecuteQuerySegmentedAsync <DocumentEntity>(query, token);

                    // Save continuation token
                    lastToken = result.ContinuationToken;

                    return(result.ToList());
                }
                catch (StorageException e)
                {
                    errorLog.Add("DocumentPartitionQuery: " + e.RequestInformation.HttpStatusCode + " " + e.Message);
                    newErrorFlag = true;
                    return(null);
                }
            }
            else
            {
                return(null);
            }
        }
Esempio n. 9
0
        public async Task <List <T> > ReadAsync <T>(string tableName, string partitionKey = null, string rowKey = null)
            where T : ITableEntity, new()
        {
            CloudTable table = client.GetTableReference(tableName);
            await table.CreateIfNotExistsAsync();

            TableQuery <T> query;

            if (!string.IsNullOrEmpty(partitionKey) && !string.IsNullOrEmpty(rowKey))
            {
                string q1 = TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, partitionKey);
                string q2 = TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.Equal, rowKey);
                query = new TableQuery <T>().Where(TableQuery.CombineFilters(q1, TableOperators.And, q2));
            }
            else if (!string.IsNullOrEmpty(partitionKey) && string.IsNullOrEmpty(rowKey))
            {
                query = new TableQuery <T>().Where(
                    TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, partitionKey));
            }
            else if (string.IsNullOrEmpty(partitionKey) && !string.IsNullOrEmpty(rowKey))
            {
                query = new TableQuery <T>().Where(
                    TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.Equal, rowKey));
            }
            else
            {
                query = new TableQuery <T>();
            }

            TableQuerySegment <T> segment = await table.ExecuteQuerySegmentedAsync(query, new TableContinuationToken());

            if (!(segment == null || segment.Results.Count == 0))
            {
                return(segment.ToList());
            }

            return(null);
        }