public PartialFindResult <PVForSongContract> GetList(string name = null, string author = null, PVService?service = null, int maxResults = 10, bool getTotalCount = false, ContentLanguagePreference lang = ContentLanguagePreference.Default) { return(_repository.HandleQuery(db => { var query = db.Query <PVForSong>(); if (!string.IsNullOrEmpty(name)) { query = query.Where(pv => pv.Name == name); } if (!string.IsNullOrEmpty(author)) { query = query.Where(pv => pv.Author == author); } if (service.HasValue) { query = query.Where(pv => pv.Service == service); } var count = getTotalCount ? query.Count() : 0; query = query.Take(maxResults); var results = query.Select(p => new PVForSongContract(p, lang)).ToArray(); return PartialFindResult.Create(results, count); })); }
public PartialFindResult <DiscussionTopicContract> GetTopics( int?folderId = null, int start = 0, int maxResults = DefaultMax, bool getTotalCount = false, DiscussionTopicSortRule sort = DiscussionTopicSortRule.DateCreated, DiscussionTopicOptionalFields fields = DiscussionTopicOptionalFields.None) { return(HandleQuery(ctx => { var query = ctx.OfType <DiscussionTopic>() .Query() .WhereNotDeleted() .WhereIsInFolder(folderId); var topics = query .OrderBy(sort) .Paged(new PagingProperties(start, maxResults, getTotalCount)) .ToArray() .Select(f => new DiscussionTopicContract(f, _userIconFactory, fields)) .ToArray(); var count = (getTotalCount ? query.Count() : 0); return PartialFindResult.Create(topics, count); })); }
private EntryForApiContract AssertHasEntry(PartialFindResult <EntryForApiContract> result, string name, EntryType entryType) { var entry = result.Items.FirstOrDefault(a => string.Equals(a.DefaultName, name, StringComparison.InvariantCultureIgnoreCase) && a.EntryType == entryType); Assert.IsNotNull(entry, "Entry found"); return(entry); }
public PartialFindResult <ActivityEntryForApiContract> GetList( DateTime?before = null, DateTime?since = null, int?userId = null, EntryEditEvent?editEvent = null, int maxResults = defaultMax, bool getTotalCount = false, ActivityEntryOptionalFields fields = ActivityEntryOptionalFields.None, EntryOptionalFields entryFields = EntryOptionalFields.None, ContentLanguagePreference lang = ContentLanguagePreference.Default) { maxResults = Math.Min(maxResults, absoluteMax); bool ssl = WebHelper.IsSSL(Request); return(repository.HandleQuery(ctx => { var query = ctx.Query <ActivityEntry>(); if (before.HasValue && !since.HasValue) { query = query.Where(a => a.CreateDate < before.Value); } if (!before.HasValue && since.HasValue) { query = query.Where(a => a.CreateDate > since.Value); } if (before.HasValue && since.HasValue) { query = query.Where(a => a.CreateDate > since.Value && a.CreateDate < before.Value); } if (userId.HasValue) { query = query.Where(a => a.Author.Id == userId.Value); } if (editEvent.HasValue) { query = query.Where(a => a.EditEvent == editEvent.Value); } var activityEntries = query .OrderByDescending(a => a.CreateDate) .Take(maxResults) .ToArray() .Where(a => !a.EntryBase.Deleted) .Select(a => new ActivityEntryForApiContract(a, fields.HasFlag(ActivityEntryOptionalFields.Entry) ? entryForApiContractFactory.Create(a.EntryBase, entryFields, lang, ssl) : null, userIconFactory, permissionContext, fields)) .ToArray(); var count = getTotalCount ? query.Count() : 0; return PartialFindResult.Create(activityEntries, count); })); }
private EntryForApiContract AssertHasEntry(PartialFindResult<EntryForApiContract> result, string name, EntryType entryType) { var entry = result.Items.FirstOrDefault(a => string.Equals(a.DefaultName, name, StringComparison.InvariantCultureIgnoreCase) && a.EntryType == entryType); Assert.IsNotNull(entry, "Entry found"); return entry; }
public PartialFindResult <Tag> Find(TagQueryParams queryParams, bool onlyMinimalFields) { var isMoveToTopQuery = queryParams.Common.MoveExactToTop && queryParams.Common.NameMatchMode != NameMatchMode.StartsWith && queryParams.Common.NameMatchMode != NameMatchMode.Exact && queryParams.Paging.Start == 0 && !queryParams.Common.TextQuery.IsEmpty; if (isMoveToTopQuery) { return(GetTagsMoveExactToTop(queryParams)); } var query = CreateQuery(queryParams, queryParams.Common.Query, queryParams.Common.NameMatchMode); var orderedAndPaged = query .OrderBy(queryParams.SortRule, _languagePreference) .Paged(queryParams.Paging); Tag[] tags; if (onlyMinimalFields) { tags = orderedAndPaged.Select(t => new Tag { Id = t.Id, CategoryName = t.CategoryName, CreateDate = t.CreateDate, Status = t.Status, Version = t.Version, Names = new NameManager <TagName> { SortNames = { English = t.Names.SortNames.English, Romaji = t.Names.SortNames.Romaji, Japanese = t.Names.SortNames.Japanese, DefaultLanguage = t.Names.SortNames.DefaultLanguage } } }).ToArray(); } else { tags = orderedAndPaged.ToArray(); } var count = 0; if (queryParams.Paging.GetTotalCount) { count = query.Count(); } return(PartialFindResult.Create(tags, count)); }
private void AssertTags(PartialFindResult <Song> result, params string[] songNames) { Assert.AreEqual(songNames.Length, result.TotalCount, "Total number of results"); Assert.AreEqual(songNames.Length, result.Items.Length, "Number of returned items"); foreach (var songName in songNames) { Assert.IsTrue(result.Items.Any(s => s.DefaultName == songName), string.Format("Song named '{0}' was returned", songName)); } }
public SearchEntries(string filter, PartialFindResult<AlbumWithAdditionalNamesContract> albums, PartialFindResult<ArtistWithAdditionalNamesContract> artists, PartialFindResult<SongWithAlbumContract> songs, PartialFindResult<TagContract> tags) { Filter = filter; Albums = albums; Artists = artists; Songs = songs; Tags = tags; }
public SearchEntries(string filter, PartialFindResult <AlbumWithAdditionalNamesContract> albums, PartialFindResult <ArtistWithAdditionalNamesContract> artists, PartialFindResult <SongWithAlbumContract> songs, PartialFindResult <TagContract> tags) { Filter = filter; Albums = albums; Artists = artists; Songs = songs; Tags = tags; }
public ArtistIndex(PartialFindResult <ArtistWithAdditionalNamesContract> result, string filter, ArtistType artistType, bool?draftsOnly, ArtistSortRule sort, int?page, IndexRouteParams routeParams) { Artists = new StaticPagedList <ArtistWithAdditionalNamesContract>(result.Items, page ?? 1, 30, result.TotalCount); DraftsOnly = draftsOnly ?? false; Filter = filter; ArtistType = artistType; Sort = sort; RouteParams = routeParams; FilterableArtistTypes = EnumVal <ArtistType> .Values.ToDictionary(a => a, Translate.ArtistTypeName); }
public AllEntriesSearchResult(string query, PartialFindResult <AlbumContract> albums, PartialFindResult <ArtistContract> artists, PartialFindResult <SongWithAlbumContract> songs, PartialFindResult <TagContract> tags) { Query = query; Albums = albums; Artists = artists; Songs = songs; Tags = tags; }
public AllEntriesSearchResult(string query, PartialFindResult<AlbumWithAdditionalNamesContract> albums, PartialFindResult<ArtistWithAdditionalNamesContract> artists, PartialFindResult<SongWithAlbumContract> songs, PartialFindResult<TagContract> tags) { Query = query; Albums = albums; Artists = artists; Songs = songs; Tags = tags; }
public ArtistIndex(PartialFindResult<ArtistWithAdditionalNamesContract> result, string filter, ArtistType artistType, bool? draftsOnly, ArtistSortRule sort, int? page, IndexRouteParams routeParams) { Artists = new StaticPagedList<ArtistWithAdditionalNamesContract>(result.Items, page ?? 1, 30, result.TotalCount); DraftsOnly = draftsOnly ?? false; Filter = filter; ArtistType = artistType; Sort = sort; RouteParams = routeParams; FilterableArtistTypes = EnumVal<ArtistType>.Values.ToDictionary(a => a, Translate.ArtistTypeName); }
public Index(PartialFindResult<AlbumContract> result, string filter, DiscType discType, AlbumSortRule sortRule, EntryViewMode view, int? page, bool? draftsOnly, IndexRouteParams routeParams) { Page = page ?? 1; Albums = new StaticPagedList<AlbumContract>(result.Items, Page, 30, result.TotalCount); DiscType = discType; DraftsOnly = draftsOnly ?? false; Filter = filter; Sort = sortRule; View = view; RouteParams = routeParams; }
public Index(PartialFindResult <AlbumContract> result, string filter, DiscType discType, AlbumSortRule sortRule, EntryViewMode view, int?page, bool?draftsOnly, IndexRouteParams routeParams) { Page = page ?? 1; Albums = new StaticPagedList <AlbumContract>(result.Items, Page, 30, result.TotalCount); DiscType = discType; DraftsOnly = draftsOnly ?? false; Filter = filter; Sort = sortRule; View = view; RouteParams = routeParams; }
public PartialFindResult <TagMappingContract> GetMappings(PagingProperties paging) { return(HandleQuery(ctx => { var query = ctx.Query <TagMapping>(); var result = query .OrderByName(LanguagePreference) .Paged(paging) .ToArray() .Select(t => new TagMappingContract(t, LanguagePreference)) .ToArray(); return PartialFindResult.Create(result, paging.GetTotalCount ? query.Count() : 0); })); }
public Index(PartialFindResult<SongWithAlbumAndPVsContract> result, string filter, NameMatchMode nameMatchMode, SongType songType, string timeFilter, bool onlyWithPVs, SongSortRule sortRule, SongViewMode viewMode, bool draftsOnly, int page, int pageSize, IndexRouteParams routeParams) { ArtistId = routeParams.artistId ?? 0; DraftsOnly = draftsOnly; Songs = new StaticPagedList<SongWithAlbumAndPVsContract>(result.Items, page, pageSize, result.TotalCount); Filter = filter; NameMatchMode = nameMatchMode; SongType = songType; Since = timeFilter; OnlyWithPVs = onlyWithPVs; Sort = sortRule; ViewMode = viewMode; RouteParams = routeParams; }
public Index(PartialFindResult <SongWithAlbumAndPVsContract> result, string filter, NameMatchMode nameMatchMode, SongType songType, string timeFilter, bool onlyWithPVs, SongSortRule sortRule, SongViewMode viewMode, bool draftsOnly, int page, int pageSize, IndexRouteParams routeParams) { ArtistId = routeParams.artistId ?? 0; DraftsOnly = draftsOnly; Songs = new StaticPagedList <SongWithAlbumAndPVsContract>(result.Items, page, pageSize, result.TotalCount); Filter = filter; NameMatchMode = nameMatchMode; SongType = songType; Since = timeFilter; OnlyWithPVs = onlyWithPVs; Sort = sortRule; ViewMode = viewMode; RouteParams = routeParams; }
public PartialFindResult <TResult> FindSeries <TResult>(Func <ReleaseEventSeries, TResult> fac, SearchTextQuery textQuery, PagingProperties paging) { return(HandleQuery(ctx => { var q = ctx.Query <ReleaseEventSeries>() .WhereHasName(textQuery) .Paged(paging); var entries = q .OrderBy(s => s.Name) .ToArray() .Select(fac) .ToArray(); var count = paging.GetTotalCount ? q.Count() : 0; return PartialFindResult.Create(entries, count); })); }
public PartialFindResult <TResult> Find <TResult>(Func <Venue, TResult> fac, VenueQueryParams queryParams) { return(HandleQuery(ctx => { var q = ctx.Query <Venue>() .WhereNotDeleted() .WhereHasName(queryParams.TextQuery) .WhereInCircle(queryParams.Coordinates, queryParams.Radius, queryParams.DistanceUnit) .Paged(queryParams.Paging); var entries = q .OrderBy(queryParams.SortRule, PermissionContext.LanguagePreference, queryParams.Coordinates, queryParams.DistanceUnit) .ToArray() .Select(fac) .ToArray(); var count = queryParams.Paging.GetTotalCount ? q.Count() : 0; return PartialFindResult.Create(entries, count); })); }
public SongListDetailsContract(SongList list, PartialFindResult <SongInListContract> songLinks, IUserPermissionContext permissionContext) : base(list, permissionContext) { SongLinks = songLinks; //SongLinks = list.SongLinks.Select(s => new SongInListContract(s, permissionContext.LanguagePreference)).ToArray(); }
private void AssertHasSong(PartialFindResult <Song> result, Song expected) { result.Items.Any(s => s.Equals(expected)).Should().BeTrue($"Found {expected}"); }
public AllEntriesSearchResult Find(string query, int maxResults, bool getTotalCount) { if (string.IsNullOrWhiteSpace(query)) return new AllEntriesSearchResult(); var matchMode = NameMatchMode.Auto; query = FindHelpers.GetMatchModeAndQueryForSearch(query, ref matchMode); var canonized = ArtistHelper.GetCanonizedName(query); var words = (matchMode == NameMatchMode.Words ? FindHelpers.GetQueryWords(query) : null); return HandleQuery(session => { var artists = session.Query<ArtistName>() .FilterByArtistName(query, canonized, matchMode, null) // Can't use the existing words collection here as they are noncanonized .Where(a => !a.Artist.Deleted) .Select(n => n.Artist) .AddNameOrder(LanguagePreference) .Distinct() .Take(maxResults) .ToArray(); var artistCount = (getTotalCount ? session.Query<ArtistName>() .FilterByArtistName(query, canonized, matchMode, null) .Where(a => !a.Artist.Deleted) .Select(n => n.Artist) .Distinct() .Count() : 0); var albums = session.Query<AlbumName>() .AddEntryNameFilter(query, matchMode, words) .Where(a => !a.Album.Deleted) .Select(n => n.Album) .AddNameOrder(LanguagePreference) .Distinct() .Take(maxResults) .ToArray(); var albumCount = (getTotalCount ? session.Query<AlbumName>() .AddEntryNameFilter(query, matchMode, words) .Where(a => !a.Album.Deleted) .Select(n => n.Album) .Distinct() .Count() : 0); var songs = session.Query<SongName>() .AddEntryNameFilter(query, matchMode, words) .Where(a => !a.Song.Deleted) .Select(n => n.Song) .AddNameOrder(LanguagePreference) .Distinct() .Take(maxResults) .ToArray(); var songCount = (getTotalCount ? session.Query<SongName>() .AddEntryNameFilter(query, matchMode, words) .Where(a => !a.Song.Deleted) .Select(n => n.Song) .Distinct() .Count() : 0); var tagStr = query.Replace(' ', '_'); var tags = session.Query<Tag>() .AddTagNameFilter(tagStr, matchMode) .OrderBy(t => t.Name) .Take(maxResults) .ToArray(); var tagCount = (getTotalCount ? session.Query<Tag>() .AddTagNameFilter(tagStr, matchMode) .Distinct() .Count() : 0); var artistResult = new PartialFindResult<ArtistContract>( artists.Select(a => new ArtistContract(a, PermissionContext.LanguagePreference)).ToArray(), artistCount); var albumResult = new PartialFindResult<AlbumContract>( albums.Select(a => new AlbumContract(a, PermissionContext.LanguagePreference)).ToArray(), albumCount); var songResult = new PartialFindResult<SongWithAlbumContract>( songs.Select(a => new SongWithAlbumContract(a, PermissionContext.LanguagePreference)).ToArray(), songCount); var tagResult = new PartialFindResult<TagContract>( tags.Select(a => new TagContract(a)).ToArray(), tagCount); return new AllEntriesSearchResult(query, albumResult, artistResult, songResult, tagResult); }); }
private void AssertHasSong(PartialFindResult <Song> result, Song expected) { Assert.IsTrue(result.Items.Any(s => s.Equals(expected)), string.Format("Found {0}", expected)); }
private void AssertHasSong(PartialFindResult<Song> result, Song expected) { Assert.IsTrue(result.Items.Any(s => s.Equals(expected)), string.Format("Found {0}", expected)); }
public SongListDetailsContract(SongList list, PartialFindResult<SongInListContract> songLinks, IUserPermissionContext permissionContext) : base(list, permissionContext) { SongLinks = songLinks; //SongLinks = list.SongLinks.Select(s => new SongInListContract(s, permissionContext.LanguagePreference)).ToArray(); }