コード例 #1
0
        public async Task <bool> SaveFTPEntriesTree(string PathId, FTPEntriesTreeParam rootEntry)
        {
            var entriesToAdd = new HashSet <FTPEntry>();
            var sw           = new Stopwatch();

            sw.Start();
            //var entry =
            //    _entryRepo.ExistsByNameAndPathAndIsDirectoryAndIsArchive(rootEntry.Name, PathId, rootEntry.IsDirectory, rootEntry.IsArchive)?
            //    _entryRepo.GetByNameAndPathAndIsDirectoryAndIsArchive(rootEntry.Name, PathId, rootEntry.IsDirectory, rootEntry.IsArchive) : null;
            FTPEntry entry = null;
            var      res   = _putEntry(entry, rootEntry, null, PathId, entriesToAdd);
            await _logger.Log($"Сохранил корень: {sw.Elapsed.Minutes}:{sw.Elapsed.Seconds}");

            sw.Restart();
            _saveTree(res, rootEntry.Children, PathId, entriesToAdd);
            await _logger.Log($"Обошел дерево {sw.Elapsed.Minutes}:{sw.Elapsed.Seconds}");

            sw.Restart();
            if (entriesToAdd.Count > 0)
            {
                await _entryRepo.BulkInsert(entriesToAdd);
            }
            await _logger.Log($"Записал новые файлы в базу {sw.Elapsed.Minutes}:{sw.Elapsed.Seconds}");

            sw.Stop();
            return(true);
        }
コード例 #2
0
        public async Task <IActionResult> AddFileTree([FromQuery] string pathId, [FromBody] FTPEntriesTreeParam entries)
        {
            if (!_idProvider.IsIdValid(pathId))
            {
                return(BadRequest("Неверный идентификатор пути"));
            }
            if (!_pathRepo.Exists(pathId))
            {
                return(BadRequest("Путь не найден"));
            }
            var sw = new Stopwatch();
            var b  = await _treeSaverService.SaveFTPEntriesTree(pathId, entries);

            await _logger.Log($"Сохранил дерево файлов {sw.Elapsed}");

            sw.Stop();
            return(Ok(""));
        }
コード例 #3
0
        private string _putEntry(FTPEntry o, FTPEntriesTreeParam n, string parent, string pathId, ISet <FTPEntry> entriesToAdd)
        {
            var sw = new Stopwatch();

            sw.Start();
            string res;

            //if (o == null)
            {
                res = _idProvider.GenerateId();
                var entry = new FTPEntry()
                {
                    Id          = res,
                    Name        = n.Name,
                    IsDirectory = n.IsDirectory,
                    IsArchive   = n.IsArchive,
                    Size        = n.Size,
                    Modified    = n.Modified,
                    Path        = pathId,
                    Parent      = parent,
                    State       = StateFile.New
                };
                entriesToAdd.Add(entry);
            }
            //else
            //{
            //    var modified = n.Size != o.Size || n.Modified != o.Modified;
            //    if (modified)
            //    {
            //        o.Size = n.Size;
            //        o.Modified = n.Modified;
            //        o.State = StateFile.Modified;

            //        _entryRepo.Update(o);
            //    }
            //    res = o.Id;
            //}
            _logger.Log($"Добавил элемент {sw.ElapsedMilliseconds}");
            sw.Stop();
            return(res ?? throw new InvalidOperationException($"Ошибка при сохранении пути {n.Name}. Идентификатор сохраненного объекта оказался null"));
        }