/
rumina-v
/
database
Обзор
Документация
Войти
/
rumina-v
/
database
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
LibraryApp/Repositories/BookRepository.cs
92 строки
2 KB
Viktoria Rumina
Add solution files
04 июн 2026, 12:13
04 июн 2026, 12:13
73cfef0
Код
Авторство
О чём код?
using LibraryApp.Abstractions; using LibraryApp.Data; using LibraryApp.Entities; using Microsoft.EntityFrameworkCore; namespace LibraryApp.Repositories; public class BookRepository : IBookRepository { private readonly AppDbContext _context; public BookRepository(AppDbContext context) { _context = context; } public async Task<List<Book>> GetAllAsync() { return await _context.Books .Include(x => x.Loans) .ToListAsync(); } public async Task<Book?> GetByIdAsync(int id) { return await _context.Books .Include(x => x.Loans) .FirstOrDefaultAsync(x => x.Id == id); } public async Task<Book> AddAsync(Book book) { _context.Books.Add(book); await _context.SaveChangesAsync(); return book; } public async Task<Book?> UpdateAsync(int id, Book book) { var existingBook = await _context.Books .FirstOrDefaultAsync(x => x.Id == id); if (existingBook is null) { return null; } existingBook.Title = book.Title; existingBook.Author = book.Author; existingBook.PublishYear = book.PublishYear; existingBook.TotalCopies = book.TotalCopies; existingBook.AvailableCopies = book.AvailableCopies; await _context.SaveChangesAsync(); return existingBook; } public async Task<bool> DeleteAsync(int id) { var book = await _context.Books.FirstOrDefaultAsync(x => x.Id == id); if (book is null) { return false; } _context.Books.Remove(book); await _context.SaveChangesAsync(); return true; } public async Task<List<Book>> GetAvailableBooksAsync() { return await _context.Books .Where(x => x.AvailableCopies > 0) .ToListAsync(); } public async Task<List<Book>> GetMostPopularBooksAsync(int count) { if (count <= 0) { count = 1; } return await _context.Books .Include(x => x.Loans) .OrderByDescending(x => x.Loans.Count) .Take(count) .ToListAsync(); } }