/// <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)); }
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)); } }
public string SearchParsed(SeachQuery query) => Format(Search(query));
public string SearchParsed(SeachQuery query) { var aleList = Search(query); return(Formatter.ProcessQuery(aleList, SmartHistoryFormatter.DefaultAleFormat)); }
public string SearchParsed(SeachQuery query) { var aleList = Search(query); return Formatter.ProcessQuery(aleList, SmartHistoryFormatter.DefaultAleFormat); }
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); } }