public static void ToJson(string saveFilePath) { using var context = DbContexts.GetContext(); var dtos = context.GetLibrary_Flat_NoTracking().ToDtos(); var json = Newtonsoft.Json.JsonConvert.SerializeObject(dtos, Newtonsoft.Json.Formatting.Indented); System.IO.File.WriteAllText(saveFilePath, json); }
private static async Task <int> importIntoDbAsync(List <ImportItem> importItems) { using var context = DbContexts.GetContext(); var libraryImporter = new LibraryImporter(context); var newCount = await Task.Run(() => libraryImporter.Import(importItems)); context.SaveChanges(); return(newCount); }
public static void UpdateBookTags(Book book) { var engine = new SearchEngine(DbContexts.GetContext()); try { engine.UpdateTags(book.AudibleProductId, book.UserDefinedItem.Tags); } catch (FileNotFoundException) { FullReIndex(); engine.UpdateTags(book.AudibleProductId, book.UserDefinedItem.Tags); } }
public static SearchResultSet Search(string searchString) { var engine = new SearchEngine(DbContexts.GetContext()); try { return(engine.Search(searchString)); } catch (FileNotFoundException) { FullReIndex(); return(engine.Search(searchString)); } }
private static T performSearchEngineFunc_safe <T>(Func <SearchEngine, T> action) { var engine = new SearchEngine(DbContexts.GetContext()); try { return(action(engine)); } catch (FileNotFoundException) { FullReIndex(); return(action(engine)); } }
private static void performSearchEngineAction_safe(Action <SearchEngine> action) { var engine = new SearchEngine(DbContexts.GetContext()); try { action(engine); } catch (FileNotFoundException) { FullReIndex(); action(engine); } }
public static void ToCsv(string saveFilePath) { using var context = DbContexts.GetContext(); var dtos = context.GetLibrary_Flat_NoTracking().ToDtos(); if (!dtos.Any()) { return; } using var writer = new System.IO.StreamWriter(saveFilePath); using var csv = new CsvWriter(writer, System.Globalization.CultureInfo.CurrentCulture); csv.WriteHeader(typeof(ExportDto)); csv.NextRecord(); csv.WriteRecords(dtos); }
private static List <LibraryBook> removeBooks(List <string> idsToRemove) { using var context = DbContexts.GetContext(); var libBooks = context.GetLibrary_Flat_NoTracking(); var removeLibraryBooks = libBooks.Where(lb => idsToRemove.Contains(lb.Book.AudibleProductId)).ToList(); context.LibraryBooks.RemoveRange(removeLibraryBooks); context.Books.RemoveRange(removeLibraryBooks.Select(lb => lb.Book)); var qtyChanges = context.SaveChanges(); if (qtyChanges > 0) { finalizeLibrarySizeChange(); } return(removeLibraryBooks); }
private static async Task <int> importIntoDbAsync(List <ImportItem> importItems) { logTime("importIntoDbAsync -- pre db"); using var context = DbContexts.GetContext(); var libraryBookImporter = new LibraryBookImporter(context); var newCount = await Task.Run(() => libraryBookImporter.Import(importItems)); logTime("importIntoDbAsync -- post Import()"); var qtyChanges = context.SaveChanges(); logTime("importIntoDbAsync -- post SaveChanges"); if (qtyChanges > 0) { await Task.Run(() => finalizeLibrarySizeChange()); } logTime("importIntoDbAsync -- post finalizeLibrarySizeChange"); return(newCount); }
public static int UpdateUserDefinedItem(Book book) { try { using var context = DbContexts.GetContext(); // Attach() NoTracking entities before SaveChanges() context.Attach(book.UserDefinedItem).State = Microsoft.EntityFrameworkCore.EntityState.Modified; var qtyChanges = context.SaveChanges(); if (qtyChanges > 0) { SearchEngineCommands.UpdateLiberatedStatus(book); SearchEngineCommands.UpdateBookTags(book); BookUserDefinedItemCommitted?.Invoke(null, book.AudibleProductId); } return(qtyChanges); } catch (Exception ex) { Log.Logger.Error(ex, $"Error updating {nameof(book.UserDefinedItem)}"); throw; } }
public static void FullReIndex() { var engine = new SearchEngine(DbContexts.GetContext()); engine.CreateNewIndex(); }
public static void ToXlsx(string saveFilePath) { using var context = DbContexts.GetContext(); var dtos = context.GetLibrary_Flat_NoTracking().ToDtos(); var workbook = new XSSFWorkbook(); var sheet = workbook.CreateSheet("Library"); var detailSubtotalFont = workbook.CreateFont(); detailSubtotalFont.IsBold = true; var detailSubtotalCellStyle = workbook.CreateCellStyle(); detailSubtotalCellStyle.SetFont(detailSubtotalFont); // headers var rowIndex = 0; var row = sheet.CreateRow(rowIndex); var columns = new[] { nameof(ExportDto.Account), nameof(ExportDto.DateAdded), nameof(ExportDto.AudibleProductId), nameof(ExportDto.Locale), nameof(ExportDto.Title), nameof(ExportDto.AuthorNames), nameof(ExportDto.NarratorNames), nameof(ExportDto.LengthInMinutes), nameof(ExportDto.Publisher), nameof(ExportDto.PdfUrl), nameof(ExportDto.SeriesNames), nameof(ExportDto.SeriesOrder), nameof(ExportDto.CommunityRatingOverall), nameof(ExportDto.CommunityRatingPerformance), nameof(ExportDto.CommunityRatingStory), nameof(ExportDto.PictureId), nameof(ExportDto.IsAbridged), nameof(ExportDto.DatePublished), nameof(ExportDto.CategoriesNames), nameof(ExportDto.MyRatingOverall), nameof(ExportDto.MyRatingPerformance), nameof(ExportDto.MyRatingStory), nameof(ExportDto.MyLibationTags) }; var col = 0; foreach (var c in columns) { var cell = row.CreateCell(col++); var name = ExportDto.GetName(c); cell.SetCellValue(name); cell.CellStyle = detailSubtotalCellStyle; } var dateFormat = workbook.CreateDataFormat(); var dateStyle = workbook.CreateCellStyle(); dateStyle.DataFormat = dateFormat.GetFormat("MM/dd/yyyy HH:mm:ss"); rowIndex++; // Add data rows foreach (var dto in dtos) { col = 0; row = sheet.CreateRow(rowIndex); row.CreateCell(col++).SetCellValue(dto.Account); var dateAddedCell = row.CreateCell(col++); dateAddedCell.CellStyle = dateStyle; dateAddedCell.SetCellValue(dto.DateAdded); row.CreateCell(col++).SetCellValue(dto.AudibleProductId); row.CreateCell(col++).SetCellValue(dto.Locale); row.CreateCell(col++).SetCellValue(dto.Title); row.CreateCell(col++).SetCellValue(dto.AuthorNames); row.CreateCell(col++).SetCellValue(dto.NarratorNames); row.CreateCell(col++).SetCellValue(dto.LengthInMinutes); row.CreateCell(col++).SetCellValue(dto.Publisher); row.CreateCell(col++).SetCellValue(dto.PdfUrl); row.CreateCell(col++).SetCellValue(dto.SeriesNames); row.CreateCell(col++).SetCellValue(dto.SeriesOrder); col = createCell(row, col, dto.CommunityRatingOverall); col = createCell(row, col, dto.CommunityRatingPerformance); col = createCell(row, col, dto.CommunityRatingStory); row.CreateCell(col++).SetCellValue(dto.PictureId); row.CreateCell(col++).SetCellValue(dto.IsAbridged); var datePubCell = row.CreateCell(col++); datePubCell.CellStyle = dateStyle; if (dto.DatePublished.HasValue) { datePubCell.SetCellValue(dto.DatePublished.Value); } else { datePubCell.SetCellValue(""); } row.CreateCell(col++).SetCellValue(dto.CategoriesNames); col = createCell(row, col, dto.MyRatingOverall); col = createCell(row, col, dto.MyRatingPerformance); col = createCell(row, col, dto.MyRatingStory); row.CreateCell(col++).SetCellValue(dto.MyLibationTags); rowIndex++; } using var fileData = new System.IO.FileStream(saveFilePath, System.IO.FileMode.Create); workbook.Write(fileData); }