public void IndexNewDocs() { using var ctx = new DocContext(); var ld = ctx.Dates.First(); if (!_api.IsAuthorized) { Helpers.ColoredWriteLine("Авторизация не удалась. Невозможно проиндексировать новые документы :(", ConsoleColor.Cyan); Helpers.ColoredWriteLine($"Дата последнего проверенного сообщения: {ld.Date.ToLocalTime()}.", ConsoleColor.Cyan); return; } var(lastDate, newPeers) = GetUpdatedPeerIds(ld.Date); ld.Date = lastDate; ctx.Dates.Update(ld); Console.WriteLine($"Найдено {newPeers.Count} обновлённых бесед"); int sum = 0; foreach (var peerId in newPeers) { var peersDocs = ctx.Docs.Where(d => d.PeerId == peerId); var lastDocDate = peersDocs.Any() ? peersDocs.Max(d => d.Date) : DateTime.MinValue; var docs = GetNewDocsForPeer(peerId, lastDocDate); sum += docs.Count; ctx.Docs.AddRange(docs); } ctx.SaveChanges(); Console.WriteLine($"Добавлено {sum} новых документов"); }
public List <Doc> Search(string query) { using var ctx = new DocContext(); return(ctx.Docs .Where(d => EF.Functions.Like(d.LoweredTitle, $"%{query}%") ) .OrderBy(d => d.Date) .ToList()); }