private IQueryable <Song> CreateQuery( SongQueryParams queryParams, ParsedSongQuery parsedQuery, NameMatchMode?nameMatchMode = null) { var query = Query <Song>() .Where(s => !s.Deleted) .WhereHasName(parsedQuery.Name, nameMatchMode ?? queryParams.Common.NameMatchMode) .WhereHasArtistParticipationStatus(queryParams.ArtistId, queryParams.ArtistParticipationStatus, queryParams.ChildVoicebanks, id => querySource.Load <Artist>(id)) .WhereDraftsOnly(queryParams.Common.DraftOnly) .WhereStatusIs(queryParams.Common.EntryStatus) .WhereHasType(queryParams.SongTypes) .WhereHasTag(!string.IsNullOrEmpty(queryParams.Tag) ? queryParams.Tag : parsedQuery.TagName) .WhereArtistHasTag(parsedQuery.ArtistTag) .WhereArtistHasType(parsedQuery.ArtistType) .WhereHasNicoId(parsedQuery.NicoId) .WhereIdNotIn(queryParams.IgnoredIds) .WhereInUserCollection(queryParams.UserCollectionId) .WhereHasLyrics(queryParams.LyricsLanguages); query = AddScoreFilter(query, queryParams.MinScore); query = AddTimeFilter(query, queryParams.TimeFilter); query = AddPVFilter(query, queryParams.OnlyWithPVs); return(query); }
private IQueryable <Album> CreateQuery( AlbumQueryParams queryParams, ParsedAlbumQuery parsedQuery, NameMatchMode?nameMatchMode = null) { var artistId = queryParams.ArtistId != 0 ? queryParams.ArtistId : parsedQuery.ArtistId; var query = Query <Album>() .Where(s => !s.Deleted) .WhereHasName(parsedQuery.Name, nameMatchMode ?? queryParams.Common.NameMatchMode, allowCatNum: true) .WhereDraftsOnly(queryParams.Common.DraftOnly) .WhereStatusIs(queryParams.Common.EntryStatus) .WhereHasArtistParticipationStatus(artistId, queryParams.ArtistParticipationStatus, queryParams.ChildVoicebanks, id => querySource.Load <Artist>(id)) .WhereHasBarcode(queryParams.Barcode) .WhereHasType(queryParams.AlbumType) .WhereHasTag(!string.IsNullOrEmpty(queryParams.Tag) ? queryParams.Tag : parsedQuery.TagName); return(query); }