using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using LibraryAPI.Models; namespace LibraryAPI.Controllers { [Route("api/books")] [ApiController] public class BooksController : ControllerBase { private readonly LibraryContext _context; public BooksController(LibraryContext context) { _context = context; } // GET: api/books [HttpGet] public async Task>> GetBooks() { if (_context.Books == null) { return NotFound(); } return await _context.Books.ToListAsync(); } // GET: api/books/5 [HttpGet("{id}")] public async Task> GetBook(long id) { if (_context.Books == null) { return NotFound(); } var book = await _context.Books.FindAsync(id); if (book == null) { return NotFound(); } return book; } // PUT: api/books/5 // To protect from overposting attacks, see https://go.microsoft.com/fwlink/?linkid=2123754 [HttpPut("{id}")] public async Task PutBook(long id, Book book) { if (id != book.Id) { return BadRequest(); } _context.Entry(book).State = EntityState.Modified; try { await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!BookExists(id)) { return NotFound(); } else { throw; } } return NoContent(); } // POST: api/books // To protect from overposting attacks, see https://go.microsoft.com/fwlink/?linkid=2123754 [HttpPost] public async Task> PostBook(Book book) { if (_context.Books == null) { return Problem("Entity set 'LibraryContext.Books' is null."); } _context.Books.Add(book); await _context.SaveChangesAsync(); return CreatedAtAction("GetBook", new { id = book.Id }, book); } // DELETE: api/books/5 [HttpDelete("{id}")] public async Task DeleteBook(long id) { if (_context.Books == null) { return NotFound(); } var book = await _context.Books.FindAsync(id); if (book == null) { return NotFound(); } _context.Books.Remove(book); await _context.SaveChangesAsync(); return NoContent(); } private bool BookExists(long id) { return (_context.Books?.Any(e => e.Id == id)).GetValueOrDefault(); } } }