private async Task <List <ActivityView> > GetActivityForContentAsync(long id) { //Go get all activity for content 1 var search = new SearchRequests(); search.values.Add("id", id); search.requests.Add(new SearchRequest() { type = "activity", fields = "*", query = "contentId = @id" }); var baseResult = await searcher.SearchUnrestricted(search); var activities = searcher.ToStronglyTyped <ActivityView>(baseResult.objects["activity"]); return(activities); }
/// <summary> /// A shortcut for searching for a list of a single type WITH casting. /// </summary> /// <param name="search"></param> /// <param name="request"></param> /// <param name="values"></param> /// <typeparam name="T"></typeparam> /// <returns></returns> public static async Task <List <T> > SearchSingleTypeUnrestricted <T>(this IGenericSearch search, SearchRequest request, Dictionary <string, object>?values = null) { //Now go get some random-ass module message var searchResult = await search.SearchUnrestricted(new SearchRequests() { values = values ?? new Dictionary <string, object>(), requests = new List <SearchRequest> { request } }); return(search.ToStronglyTyped <T>(searchResult.objects.First().Value)); }
public async Task Regression_SearchValuesForPinned() { //Write a comment to a known content var comment = GetNewCommentView(AllAccessContentId); var writtenComment = await writer.WriteAsync(comment, NormalUserId); //Now update said content to have more values var content = await searcher.GetById <ContentView>(AllAccessContentId); content.values.Add("pinned", new List <long> { writtenComment.id }); var writtenContent = await writer.WriteAsync(content, NormalUserId); //Then construct a search for content and comments such that the comments are in the values var search = new SearchRequests() { values = new Dictionary <string, object> { }, requests = new List <SearchRequest>() { //This searches ALL content, many of which will NOT have the pinned new SearchRequest() { type = nameof(RequestType.content), fields = "*" }, new SearchRequest() { type = nameof(RequestType.message), fields = "*", query = "id in @content.values.pinned" } } }; var searchResult = await searcher.SearchUnrestricted(search); var searchMessages = searcher.ToStronglyTyped <MessageView>(searchResult.objects[nameof(RequestType.message)]); var searchContent = searcher.ToStronglyTyped <MessageView>(searchResult.objects[nameof(RequestType.content)]); Assert.Contains(writtenComment.id, searchMessages.Select(x => x.id)); Assert.Contains(AllAccessContentId, searchContent.Select(x => x.id)); }