summaryrefslogtreecommitdiff
path: root/Controllers
diff options
context:
space:
mode:
Diffstat (limited to 'Controllers')
-rw-r--r--Controllers/AuthorsController.cs69
-rw-r--r--Controllers/BooksController.cs196
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