/
plug1at
/
Personal_Digital_Library
Обзор
Документация
Войти
/
plug1at
/
Personal_Digital_Library
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
DigitalLibrary.Data/Repositories/BookRepository.cs
92 строки
3 KB
plug1at
Create: Class1.cs, DigitalLibrary.Data.csproj, LibraryDbContext.cs, BookRepository.cs, CategoryRepository.cs, IBookRepository.cs, ICategoryRepository.cs
10 июн 2026, 11:29
Верифицирован
10 июн 2026, 11:29
8593c6e
Код
Авторство
О чём код?
using Microsoft.EntityFrameworkCore; using DigitalLibrary.Core.Models; namespace DigitalLibrary.Data.Repositories { public class BookRepository : IBookRepository { private readonly LibraryDbContext _context; public BookRepository(LibraryDbContext context) { _context = context; } public async Task<List<Book>> GetAllBooksAsync() { return await _context.Books .Include(b => b.Category) .Include(b => b.Metadata) .ToListAsync(); } public async Task<Book?> GetBookByIdAsync(int id) { return await _context.Books .Include(b => b.Category) .Include(b => b.Metadata) .FirstOrDefaultAsync(b => b.Id == id); } public async Task<List<Book>> SearchBooksAsync(string searchTerm) { var lowerSearchTerm = searchTerm.ToLower(); var allBooks = await _context.Books .Include(b => b.Category) .ToListAsync(); return allBooks .Where(b => (b.Title != null && b.Title.ToLower().Contains(lowerSearchTerm)) || (b.Author != null && b.Author.ToLower().Contains(lowerSearchTerm))) .ToList(); } public async Task AddBookAsync(Book book) { _context.Books.Add(book); await _context.SaveChangesAsync(); } public async Task UpdateBookAsync(Book book) { _context.Books.Update(book); await _context.SaveChangesAsync(); } public async Task DeleteBookAsync(int id) { var book = await _context.Books.FindAsync(id); if (book != null) { _context.Books.Remove(book); await _context.SaveChangesAsync(); } } public async Task<List<Book>> GetTbrListAsync() { return await _context.Books .Where(b => b.InTbrList) .Include(b => b.Category) .ToListAsync(); } public async Task<List<Book>> FullTextSearchAsync(string searchTerm) { var lowerSearchTerm = searchTerm.ToLower(); var allBooks = await _context.Books .Include(b => b.Category) .ToListAsync(); return allBooks .Where(b => (b.Title != null && b.Title.ToLower().Contains(lowerSearchTerm)) || (b.Author != null && b.Author.ToLower().Contains(lowerSearchTerm)) || (b.FullText != null && b.FullText.ToLower().Contains(lowerSearchTerm))) .ToList(); } } }