示例#1
0
        public static async Task <BotConversationState> QueryItemsAsync(string ticketId, ILogger log)
        {
            try
            {
                //Connect to DB
                await EnsureCosmosDBAsync(log);

                var             sqlQueryText    = "SELECT * FROM c WHERE c.id = '" + ticketId + "'"; //TODO: add parameter
                QueryDefinition queryDefinition = new QueryDefinition(sqlQueryText);
                FeedIterator <BotConversationState> queryResultSetIterator = botStateContainer.GetItemQueryIterator <BotConversationState>(queryDefinition);

                List <BotConversationState> botConversationStates = new List <BotConversationState>();

                while (queryResultSetIterator.HasMoreResults)
                {
                    FeedResponse <BotConversationState> currentResultSet = await queryResultSetIterator.ReadNextAsync();

                    foreach (BotConversationState botConversationState in currentResultSet)
                    {
                        botConversationStates.Add(botConversationState);
                        log.LogInformation("\tRead conversation ID {0} with watermark {1}\n", botConversationState.BotConversationId, botConversationState.BotWatermark);
                    }
                }

                return(botConversationStates[0]);
            }
            catch (Exception ex)
            {
                log.LogError("Exception occurred in QueryItemsAsync: {1}", ex);
                throw;
            }
        }
示例#2
0
        public static async Task <List <NumOfInjuredCount> > AggInjuredCount(
            [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "agg-injured--count")] HttpRequestMessage request,
            [SignalR(HubName = "CounterHub")] IAsyncCollector <SignalRMessage> signalRMessages,
            ILogger log)
        {
            cosmosClient = new CosmosClient(EndpointUri, PrimaryKey);
            database     = cosmosClient.GetDatabase(databaseId);
            container    = database.GetContainer(containerId);
            List <NumOfInjuredCount> eventsCountArray = new List <NumOfInjuredCount>()
            {
            };
            var sqlQueryText = "SELECT c.num_of_injured as label, count(c.event_id) as y from c " +
                               "WHERE c.is_false_alarm = 'False' " +
                               "GROUP BY c.num_of_injured";

            Console.WriteLine("Running query: {0}\n", sqlQueryText);

            QueryDefinition queryDefinition = new QueryDefinition(sqlQueryText);
            FeedIterator <NumOfInjuredCount> queryResultSetIterator = container.GetItemQueryIterator <NumOfInjuredCount>(queryDefinition);

            while (queryResultSetIterator.HasMoreResults)
            {
                FeedResponse <NumOfInjuredCount> currentResultSet = await queryResultSetIterator.ReadNextAsync();

                foreach (NumOfInjuredCount i in currentResultSet)
                {
                    Console.WriteLine("\tRead {0}\n", i);
                    eventsCountArray.Add(i);
                }
            }
            return(eventsCountArray);
        }
示例#3
0
        public static async Task <List <CityCount> > AggCityCount(
            [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "agg-city-count")] HttpRequestMessage request,
            ILogger log)
        {
            cosmosClient = new CosmosClient(EndpointUri, PrimaryKey);
            database     = cosmosClient.GetDatabase(databaseId);
            container    = database.GetContainer(containerId);
            List <CityCount> eventsCountArray = new List <CityCount>()
            {
            };
            var sqlQueryText = "SELECT c.city as name, count(c.event_id) as y from c " +
                               "GROUP BY c.city";


            Console.WriteLine("Running query: {0}\n", sqlQueryText);

            QueryDefinition          queryDefinition        = new QueryDefinition(sqlQueryText);
            FeedIterator <CityCount> queryResultSetIterator = container.GetItemQueryIterator <CityCount>(queryDefinition);

            while (queryResultSetIterator.HasMoreResults)
            {
                FeedResponse <CityCount> currentResultSet = await queryResultSetIterator.ReadNextAsync();

                foreach (CityCount i in currentResultSet)
                {
                    Console.WriteLine("\tRead {0}\n", i);
                    eventsCountArray.Add(i);
                }
            }
            return(eventsCountArray);
        }
示例#4
0
        public static async Task <List <EventdayCount> > AggEventsEachDay(
            [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "agg-event-day")] HttpRequestMessage request,
            [SignalR(HubName = "CounterHub")] IAsyncCollector <SignalRMessage> signalRMessages,
            ILogger log)
        {
            cosmosClient = new CosmosClient(EndpointUri, PrimaryKey);
            database     = cosmosClient.GetDatabase(databaseId);
            container    = database.GetContainer(containerId);
            List <EventdayCount> eventsCountArray = new List <EventdayCount>()
            {
            };
            var sqlQueryText = "SELECT table.time as x, count(table.event_id) as y from" +
                               " (SELECT c.event_id as event_id, SUBSTRING(c.time, 0, 10) as time  FROM c) as table" +
                               " GROUP BY table.time";

            Console.WriteLine("Running query: {0}\n", sqlQueryText);

            QueryDefinition queryDefinition = new QueryDefinition(sqlQueryText);
            FeedIterator <EventdayCount> queryResultSetIterator = container.GetItemQueryIterator <EventdayCount>(queryDefinition);

            while (queryResultSetIterator.HasMoreResults)
            {
                FeedResponse <EventdayCount> currentResultSet = await queryResultSetIterator.ReadNextAsync();

                foreach (EventdayCount i in currentResultSet)
                {
                    Console.WriteLine("\tRead {0}\n", i);
                    eventsCountArray.Add(i);
                }
            }
            eventsCountArray.Sort((x, y) => DateTime.Compare(x.x, y.x));
            return(eventsCountArray);
        }
示例#5
0
        public static async Task <List <Events> > GetHistoryEvents(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "get_history_events")] HttpRequestMessage request,
            ILogger log)
        {
            cosmosClient = new CosmosClient(EndpointUri, PrimaryKey);
            database     = cosmosClient.GetDatabase(databaseId);
            container    = database.GetContainer(containerId);
            List <Events> eventsCountArray = new List <Events>()
            {
            };
            var sqlQueryText = "SELECT * from c";

            Console.WriteLine("Running query: {0}\n", sqlQueryText);

            QueryDefinition       queryDefinition        = new QueryDefinition(sqlQueryText);
            FeedIterator <Events> queryResultSetIterator = container.GetItemQueryIterator <Events>(queryDefinition);

            while (queryResultSetIterator.HasMoreResults)
            {
                FeedResponse <Events> currentResultSet = await queryResultSetIterator.ReadNextAsync();

                foreach (Events i in currentResultSet)
                {
                    Console.WriteLine("\tRead {0}\n", i);
                    eventsCountArray.Add(i);
                }
            }
            return(eventsCountArray);
        }
        public async Task <IActionResult> Index()
        {
            //get countries for search list
            var countries = await GetCountriesListAsync();

            ViewData["CountriesList"] = countries;

            //get the list of all locations from CosmosDb
            var locations = new List <LocationModel>();

            var iterator = docContainer.GetItemQueryIterator <LocationModel>();

            while (iterator.HasMoreResults)
            {
                var pageOfLocations = await iterator.ReadNextAsync();

                locations.AddRange(pageOfLocations.ToList());
            }

            //pass locations and countries
            return(View(locations));
        }
示例#7
0
        static async Task GetAppsAsync()
        {
            string query = "SELECT * FROM c";

            var appsIterator = _container.GetItemQueryIterator <StoreApp>(query);

            var apps = await appsIterator.ReadNextAsync();

            foreach (var item in apps)
            {
                Console.WriteLine($"{item.Name} - {item.Version} - {item.Developer.Name} - {item.Category}");
            }
        }
示例#8
0
        public async Task <IEnumerable <T> > GetItemsAsync(string queryString)
        {
            var      query   = _container.GetItemQueryIterator <T>(new QueryDefinition(queryString));
            List <T> results = new List <T>();

            while (query.HasMoreResults)
            {
                var response = await query.ReadNextAsync();

                results.AddRange(response.ToList());
            }

            return(results);
        }
示例#9
0
        public async Task <CosmosListPage <T> > GetItemsAsync(IQueryable <T> queryable, QueryRequestOptions requestOptions, CosmosListOptions listOptions)
        {
            IQueryable <T> filteredQueryable = queryable;

            if (listOptions.Search != null && listOptions.SearchOn != null)
            {
                filteredQueryable = ApplySearchToQueryable(listOptions.Search, listOptions.SearchOn, filteredQueryable);
            }

            if (listOptions.Filters.Any())
            {
                filteredQueryable = ApplyFiltersToQueryable(listOptions.Filters, filteredQueryable);
            }

            if (listOptions.Sort != null)
            {
                filteredQueryable = ApplySortToQueryable(listOptions, filteredQueryable);
            }

            QueryDefinition queryDefinition = filteredQueryable.ToQueryDefinition();

            FeedIterator <T> queryResultSetIterator = _container.GetItemQueryIterator <T>(queryDefinition, listOptions.ContinuationToken, requestOptions);

            List <T>         results          = new List <T>();
            FeedResponse <T> currentResultSet = await queryResultSetIterator.ReadNextAsync();

            foreach (T document in currentResultSet)
            {
                results.Add(document);
            }

            Response <int> count = await filteredQueryable.CountAsync();

            return(new CosmosListPage <T>()
            {
                Meta = new CosmosMeta()
                {
                    PageSize = (int)requestOptions.MaxItemCount, Total = count.Resource, ContinuationToken = currentResultSet.ContinuationToken
                },
                Items = results
            });
        }
示例#10
0
        static async Task ReadAllData()
        {
            var sqlQueryText = "SELECT * FROM films";

            QueryDefinition     queryDefinition        = new QueryDefinition(sqlQueryText);
            FeedIterator <Film> queryResultSetIterator = container.GetItemQueryIterator <Film>(queryDefinition);

            List <Film> films = new List <Film>();

            while (queryResultSetIterator.HasMoreResults)
            {
                FeedResponse <Film> currentResultSet = await queryResultSetIterator.ReadNextAsync();

                foreach (Film f in currentResultSet)
                {
                    films.Add(f);
                    Console.WriteLine($"\tRead {f.Country}\n {f.Name}\n {f.EnderDate}");
                }
            }
        }