public PartialFindResult <SongListForApiContract> GetSongLists( int id, string query = "", [FromUri] int[] tagId = null, bool childTags = false, NameMatchMode nameMatchMode = NameMatchMode.Auto, int start = 0, int maxResults = defaultMax, bool getTotalCount = false, SongListSortRule sort = SongListSortRule.Name, SongListOptionalFields?fields = null) { var textQuery = SearchTextQuery.Create(query, nameMatchMode); var queryParams = new SongListQueryParams { TextQuery = textQuery, SortRule = sort, Paging = new PagingProperties(start, maxResults, getTotalCount), TagIds = tagId, ChildTags = childTags }; return(queries.GetCustomSongLists(id, queryParams, fields ?? SongListOptionalFields.None)); }
public PartialFindResult <SongListForApiContract> GetFeaturedLists( string query = "", [FromUri] int[] tagId = null, bool childTags = false, NameMatchMode nameMatchMode = NameMatchMode.Auto, SongListFeaturedCategory?featuredCategory = null, int start = 0, int maxResults = defaultMax, bool getTotalCount = false, SongListSortRule sort = SongListSortRule.Name, SongListOptionalFields fields = SongListOptionalFields.None, ContentLanguagePreference lang = ContentLanguagePreference.Default) { var textQuery = SearchTextQuery.Create(query, nameMatchMode); var queryParams = new SongListQueryParams { TextQuery = textQuery, FeaturedCategory = featuredCategory, Paging = new PagingProperties(start, maxResults, getTotalCount), SortRule = sort, TagIds = tagId, ChildTags = childTags }; return(queries.Find(s => new SongListForApiContract(s, lang, userIconFactory, entryImagePersister, fields), queryParams)); }
public PartialFindResult <TResult> Find <TResult>(Func <SongList, TResult> fac, SongListQueryParams queryParams) { return(HandleQuery(ctx => { var listQuery = ctx.Query() .WhereNotDeleted() .WhereHasFeaturedCategory(queryParams.FeaturedCategory, false) .WhereHasName(queryParams.TextQuery) .WhereHasTags(queryParams.TagIds, queryParams.ChildTags); var count = queryParams.Paging.GetTotalCount ? listQuery.Count() : 0; return new PartialFindResult <TResult>(listQuery .OrderBy(queryParams.SortRule) .Paged(queryParams.Paging) .ToArray() .Select(s => fac(s)) .ToArray(), count); })); }
private PartialFindResult <T> GetSongsInList <T>(IDatabaseContext <SongList> session, SongListQueryParams queryParams, Func <SongInList, T> fac) { var q = session.OfType <SongInList>().Query() .Where(a => !a.Song.Deleted && a.List.Id == queryParams.ListId) .WhereChildHasName(queryParams.TextQuery) .WhereSongHasPVService(queryParams.PVServices) .WhereSongHasArtists(queryParams.ArtistIds, queryParams.ChildVoicebanks) .WhereSongHasTags(queryParams.TagIds) .WhereSongHasType(queryParams.SongTypes) .WhereMatchFilters(queryParams.AdvancedFilters); IQueryable <SongInList> resultQ = q.OrderBy(queryParams.SortRule, PermissionContext.LanguagePreference); resultQ = resultQ.Paged(queryParams.Paging); var contracts = resultQ.ToArray().Select(s => fac(s)).ToArray(); var totalCount = (queryParams.Paging.GetTotalCount ? q.Count() : 0); return(new PartialFindResult <T>(contracts, totalCount)); }
public PartialFindResult <T> GetSongsInList <T>(SongListQueryParams queryParams, Func <SongInList, T> fac) { return(repository.HandleQuery(ctx => GetSongsInList(ctx, queryParams, fac))); }
public PartialFindResult <SongInListContract> GetSongsInList(SongListQueryParams queryParams) { return(repository.HandleQuery(session => GetSongsInList(session, queryParams, s => new SongInListContract(s, PermissionContext.LanguagePreference)))); }
private PartialFindResult <T> GetSongsInList <T>(IRepositoryContext <SongList> session, SongListQueryParams queryParams, Func <SongInList, T> fac) { var q = session.OfType <SongInList>().Query() .Where(a => !a.Song.Deleted && a.List.Id == queryParams.ListId) .WhereSongHasPVService(queryParams.PVServices); IQueryable <SongInList> resultQ = q.OrderBy(s => s.Order); resultQ = resultQ.Skip(queryParams.Paging.Start).Take(queryParams.Paging.MaxEntries); var contracts = resultQ.ToArray().Select(s => fac(s)).ToArray(); var totalCount = (queryParams.Paging.GetTotalCount ? q.Count() : 0); return(new PartialFindResult <T>(contracts, totalCount)); }