Example #1
0
        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} новых документов");
        }
Example #2
0
        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());
        }