コード例 #1
0
ファイル: Startup.cs プロジェクト: jeffbrn/book-depo
        /// <inheritdoc />
        public void Run(CancellationToken cancel)
        {
            //var wait = Task.Delay(10000, cancel);
            //wait.Wait(cancel);
            Task.Run(async() => {
                var dataDir = new DirectoryInfo(_settings.DataSrcDir);
                if (!dataDir.Exists)
                {
                    throw new ApplicationException($"Data directory {_settings.DataSrcDir} does not exist");
                }

                var loadedRaw = new List <ExtnBookData>();
                foreach (var isbnDir in dataDir.EnumerateDirectories())
                {
                    _log.LogInformation("Directory found: {0}", isbnDir.Name);
                    // check to see if book already exists
                    var raw = await _repo.GetRawData(isbnDir.Name);
                    if (raw != null)
                    {
                        continue;
                    }
                    _log.LogInformation("New book data, parsing and loading: {0}", isbnDir.Name);
                    raw = await LoadBook(isbnDir);
                    loadedRaw.Add(raw);
                }

                foreach (var rawBook in loadedRaw)
                {
                    var chk = await _repo.GetOne(rawBook.Isbn, BookIsbn.GetMap());
                    if (chk != null)
                    {
                        continue;
                    }
                    _log.LogInformation("Parsing raw data to load book {0}", rawBook.Isbn);
                    var bk    = await DataScraperFactory.CreateBook(rawBook);
                    var newId = await _repo.Insert(bk);
                    _log.LogInformation("Book '{0}' loaded new id = {1}", rawBook.Isbn, newId);
                }
            }, cancel).Wait(cancel);

            _log.LogWarning("Task finished.");
        }
コード例 #2
0
 internal bool IsIsbnOf(string isbn)
 {
     return(BookIsbn.Equals(isbn));
 }