public async Task Regular_comment_on_twitch_should_be_saved_to_database()
        {
            // arrange
            await _service.StartAsync(CancellationToken.None);

            var messageText = "hello just checking in " + Guid.NewGuid();
            var username    = "******" + Guid.NewGuid();
            var arrivedKey  = $"{username}::arrived_recently";

            DocumentsToRemove.Add(arrivedKey); // clean up the "arrived" document

            // act
            _fakeTwitchClient.FakeRaiseMessage(messageText, username: username);

            // assert - message was saved
            var findMessage = TestCluster.QueryAsync <dynamic>(
                $"SELECT m.message FROM `{Bucket.Name}` m WHERE m.message = $message",
                QueryOptions.Create().Parameter("message", messageText).ScanConsistency(QueryScanConsistency.RequestPlus));
            var rows = await findMessage.Result.Rows.ToListAsync();

            Assert.That(rows.Count, Is.EqualTo(1));

            // assert - user arrived doc was saved
            var userArrivedExists = await Collection.ExistsAsync(arrivedKey);

            Assert.That(userArrivedExists.Exists, Is.True);
        }
        public async Task Is_chat_message_stored()
        {
            // arrange
            var expectedUsername = "******" + Guid.NewGuid();
            var expectedMessage  = "some message whatever " + Guid.NewGuid();
            var expectedChannel  = "mychannel" + Guid.NewGuid();
            var twitchLibMessage = TwitchLibMessageBuilder.Create()
                                   .WithUsername(expectedUsername)
                                   .Build();
            var chatMessage = ChatMessageBuilder.Create()
                              .WithTwitchLibMessage(twitchLibMessage)
                              .WithMessage(expectedMessage)
                              .WithChannel(expectedChannel)
                              .Build();
            var request = new StoreMessage(chatMessage);

            // act
            await _handler.Handle(request, CancellationToken.None);

            // assert
            var n1ql   = $"SELECT RAW COUNT(*) FROM `{Bucket.Name}` WHERE message = $expectedMessage";
            var result = await TestCluster.QueryAsync <int>(n1ql,
                                                            QueryOptions.Create().Parameter("expectedMessage", expectedMessage).ScanConsistency(QueryScanConsistency.RequestPlus));

            var count = await result.Rows.FirstOrDefaultAsync();

            Assert.That(count, Is.EqualTo(1));
        }
Esempio n. 3
0
        public async Task <IActionResult> GetEventsForUser(string userId)
        {
            // CREATE INDEX ix_userid on useractivity (userId);
            var bucket = await _bucketProvider.GetBucketAsync("useractivity");

            var cluster = bucket.Cluster;
            var events  = await cluster.QueryAsync <UserEventGet>(
                @"SELECT description, eventType, eventDt
                            FROM useractivity
                            WHERE userId = $userId
                            ORDER BY eventDt DESC",
                QueryOptions.Create().Parameter("$userId", userId));

            return(Ok(events.Rows));
        }
        public async Task <IAsyncEnumerable <TriviaQuestion> > Handle(GetRandomTriviaQuestions request, CancellationToken cancellationToken)
        {
            var bucket = await _bucketProvider.GetBucketAsync();

            var cluster = bucket.Cluster;

            var n1ql = @"SELECT META(t).id, t.*
                FROM `" + bucket.Name + @"` t
                WHERE t.type = 'trivia'
                AND t.approved = true
                ORDER BY RANDOM()
                LIMIT $limit;";

            var results = await cluster.QueryAsync <TriviaQuestion>(n1ql,
                                                                    QueryOptions.Create()
                                                                    .Parameter("limit", request.NumQuestions));

            return(results.Rows);
        }
        public async Task <IAsyncEnumerable <TriviaQuestion> > Handle(GetPageOfTriviaQuestions request, CancellationToken cancellationToken)
        {
            var bucket = await _bucketProvider.GetBucketAsync();

            var cluster = bucket.Cluster;

            var n1ql = @$ "SELECT META(t).id, t.*
                FROM `{bucket.Name}` t
                WHERE t.type = 'trivia'
                ORDER BY t.approved, t.question
                LIMIT $pageSize
                OFFSET $pageNum * $pageSize";

            var result = await cluster.QueryAsync <TriviaQuestion>(n1ql,
                                                                   QueryOptions.Create()
                                                                   .Parameter("pageSize", Globals.MANAGE_TRIVIA_PAGE_SIZE)
                                                                   .Parameter("pageNum", request.PageNum));

            return(result.Rows);
        }
Esempio n. 6
0
 public static Task <IQueryResult <T> > QueryAsync <T>(this ICluster cluster, string statement)
 {
     return(cluster.QueryAsync <T>(statement, QueryOptions.Create(statement)));
 }
Esempio n. 7
0
 /// <summary>
 /// Executes a N1QL query on the server.
 /// </summary>
 /// <typeparam name="T">The type of the result.</typeparam>
 /// <param name="scope">The calling scope.</param>
 /// <param name="statement">The statement to execute.</param>
 /// <returns>A Task that can be awaited for the results of the query.</returns>
 public static Task <IQueryResult <T> > QueryAsync <T>(this IScope scope, string statement)
 {
     return(scope.QueryAsync <T>(statement, QueryOptions.Create(statement)));
 }