예제 #1
0
        /// <summary>Gets all Entries matching the search criteria.
        /// The entries are sorted by last playtime descending.</summary>
        /// <param name="search">All search criteria.</param>
        /// <returns>A list of all found entries.</returns>
        public IEnumerable <AudioLogEntry> Search(SeachQuery search)
        {
            if (search == null)
            {
                throw new ArgumentNullException(nameof(search));
            }

            if (search.MaxResults <= 0)
            {
                return(Enumerable.Empty <AudioLogEntry>());
            }

            var query = Query.All(nameof(AudioLogEntry.Timestamp), Query.Descending);

            if (!string.IsNullOrEmpty(search.TitlePart))
            {
                query = Query.And(query, Query.Where(ResourceTitleQueryColumn, val => val.AsString.ToLowerInvariant().Contains(search.TitlePart)));
            }

            if (search.UserId.HasValue)
            {
                query = Query.And(query, Query.EQ(nameof(AudioLogEntry.UserInvokeId), (long)search.UserId.Value));
            }

            if (search.LastInvokedAfter.HasValue)
            {
                query = Query.And(query, Query.GTE(nameof(AudioLogEntry.Timestamp), search.LastInvokedAfter.Value));
            }

            return(audioLogEntries.Find(query, 0, search.MaxResults));
        }
예제 #2
0
        public IEnumerable <AudioLogEntry> Search(SeachQuery query)
        {
            IEnumerable <AudioLogEntry> filteredHistory = null;

            lock (accessLock)
            {
                if (!string.IsNullOrEmpty(query.TitlePart))
                {
                    filteredHistory = historyFile.SearchTitle(query.TitlePart);
                    if (query.UserId != null)
                    {
                        filteredHistory = filteredHistory.Where(ald => ald.UserInvokeId == query.UserId.Value);
                    }
                    if (query.LastInvokedAfter != null)
                    {
                        filteredHistory = filteredHistory.Where(ald => ald.Timestamp > query.LastInvokedAfter.Value);
                    }
                }
                else if (query.UserId != null)
                {
                    filteredHistory = historyFile.SeachByUser(query.UserId.Value);
                    if (query.LastInvokedAfter != null)
                    {
                        filteredHistory = filteredHistory.Where(ald => ald.Timestamp > query.LastInvokedAfter.Value);
                    }
                }
                else if (query.LastInvokedAfter != null)
                {
                    filteredHistory = historyFile.SeachTillTime(query.LastInvokedAfter.Value);
                }
                else if (query.MaxResults >= 0)
                {
                    lastResult = historyFile.GetLastXEntrys(query.MaxResults);
                    return(lastResult);
                }

                lastResult = filteredHistory;
                return(filteredHistory.TakeLast(query.MaxResults));
            }
        }
예제 #3
0
 public string SearchParsed(SeachQuery query) => Format(Search(query));
예제 #4
0
        public string SearchParsed(SeachQuery query)
        {
            var aleList = Search(query);

            return(Formatter.ProcessQuery(aleList, SmartHistoryFormatter.DefaultAleFormat));
        }
예제 #5
0
 public string SearchParsed(SeachQuery query)
 {
     var aleList = Search(query);
     return Formatter.ProcessQuery(aleList, SmartHistoryFormatter.DefaultAleFormat);
 }
예제 #6
0
        public IEnumerable<AudioLogEntry> Search(SeachQuery query)
        {
            IEnumerable<AudioLogEntry> filteredHistory = null;

            lock (accessLock)
            {
                if (!string.IsNullOrEmpty(query.TitlePart))
                {
                    filteredHistory = historyFile.SearchTitle(query.TitlePart);
                    if (query.UserId != null)
                        filteredHistory = filteredHistory.Where(ald => ald.UserInvokeId == query.UserId.Value);
                    if (query.LastInvokedAfter != null)
                        filteredHistory = filteredHistory.Where(ald => ald.Timestamp > query.LastInvokedAfter.Value);
                }
                else if (query.UserId != null)
                {
                    filteredHistory = historyFile.SeachByUser(query.UserId.Value);
                    if (query.LastInvokedAfter != null)
                        filteredHistory = filteredHistory.Where(ald => ald.Timestamp > query.LastInvokedAfter.Value);
                }
                else if (query.LastInvokedAfter != null)
                {
                    filteredHistory = historyFile.SeachTillTime(query.LastInvokedAfter.Value);
                }
                else if (query.MaxResults >= 0)
                {
                    lastResult = historyFile.GetLastXEntrys(query.MaxResults);
                    return lastResult;
                }

                lastResult = filteredHistory;
                return filteredHistory.TakeLast(query.MaxResults);
            }
        }