diff options
Diffstat (limited to 'Controllers')
-rw-r--r-- | Controllers/AuthorsController.cs | 69 | ||||
-rw-r--r-- | Controllers/BooksController.cs | 196 |
2 files changed, 142 insertions, 123 deletions
diff --git a/Controllers/AuthorsController.cs b/Controllers/AuthorsController.cs new file mode 100644 index 0000000..845708b --- /dev/null +++ b/Controllers/AuthorsController.cs @@ -0,0 +1,69 @@ +using Microsoft.AspNetCore.Mvc; +using Microsoft.EntityFrameworkCore; +using LibraryAPI.Models; + +namespace LibraryAPI.Controllers { + [Route("api/authors")] + [ApiController] + public class AuthorsController : ControllerBase { + private readonly LibraryContext _context; + + public AuthorsController(LibraryContext context) { + _context = context; + } + + [HttpGet] + public async Task<ActionResult<IEnumerable<Author>>> getAuthors() { + if(_context.Authors == null) { + return NotFound(); + } + + return await _context.Authors.ToListAsync(); + } + + [HttpGet("{id}")] + public async Task<ActionResult<Author>> GetAuthor(long id) { + if(_context.Authors == null) + return NotFound(); + + var author = await _context.Authors.FindAsync(id); + + if(author == null) + return NotFound(); + + return author; + } + + [HttpPut("{id}")] + public async Task<ActionResult> PutAuthor(long id, Author author) { + if(id != author.Id) + return BadRequest("Attempted to modify a different resource"); + + _context.Update(author); + await _context.SaveChangesAsync(); + + return Ok(); + } + + [HttpPost] + public async Task<ActionResult<Author>> PostAuthor(Author author) { + _context.Authors.Add(author); + await _context.SaveChangesAsync(); + + return Ok(); + } + + [HttpDelete("{id}")] + public async Task<ActionResult> DeleteAuthor(long id) { + var author = await _context.Authors.FindAsync(id); + + if(author == null) + return NotFound(); + + _context.Authors.Remove(author); + await _context.SaveChangesAsync(); + + return Ok(); + } + } +}
\ No newline at end of file diff --git a/Controllers/BooksController.cs b/Controllers/BooksController.cs index 06e7055..ad336f0 100644 --- a/Controllers/BooksController.cs +++ b/Controllers/BooksController.cs @@ -1,123 +1,73 @@ -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<ActionResult<IEnumerable<Book>>> GetBooks()
- {
- if (_context.Books == null)
- {
- return NotFound();
- }
- return await _context.Books.ToListAsync();
- }
-
- // GET: api/books/5
- [HttpGet("{id}")]
- public async Task<ActionResult<Book>> 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<IActionResult> 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<ActionResult<Book>> 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<IActionResult> 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();
- }
- }
-}
+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; + } + + [HttpGet] + public async Task<ActionResult<IEnumerable<Book>>> GetBooks() { + return await _context.Books.ToListAsync(); + } + + [HttpGet("{id}")] + public async Task<ActionResult<Book>> GetBook(long id) { + if (_context.Books == null) + return NotFound(); + + var book = await _context.Books.FindAsync(id); + + if (book == null) + return NotFound(); + + return book; + } + + + [HttpPut("{id:int}")] + public async Task<ActionResult> PutBook(long id, Book book) { + if (id != book.Id) + return BadRequest("Attempted to modify a different resource"); + + _context.Update(book); + await _context.SaveChangesAsync(); + var updated = await _context.Books.FindAsync(book.Id); + + return Ok(); + } + + [HttpPost] + public async Task<ActionResult> PostBook(Book book) { + var author_exists = await _context.Authors.FindAsync(book.AuthorId); + + if(author_exists == null) + return BadRequest($"Author with id {book.AuthorId} doesn't exist"); + + _context.Books.Add(book); + await _context.SaveChangesAsync(); + + return Ok(); + } + + // DELETE: api/books/5 + [HttpDelete("{id}")] + public async Task<ActionResult> DeleteBook(long id) { + var book = await _context.Books.FindAsync(id); + + if (book == null) + return NotFound(); + + _context.Books.Remove(book); + await _context.SaveChangesAsync(); + + return Ok(); + } + } +}
\ No newline at end of file |