Premiere - ES5

by Pedro Moreira

HTML

<script src="https://unpkg.com/premiere/dist/premiere.min.js"></script>
<section>
  <header>
    <h1>Book List</h1>
  </header>

  <pre id="books"></pre>
  <button type="button" onclick="createBook()">New book</button>
  <button type="button" onclick="deleteBook()">Delete First Book</button>
</section>

JavaScript

Premiere.Api.base = 'http://rest.learncode.academy/api/premiere-es5/';

var Book = Object.assign({}, Premiere.Model, {
  path: 'books',
  first: function() {
    return new Promise(function(resolve, reject) {
      Book.all().then(function(books) {
        books.length ? resolve(books[0]) : reject('No books found');
      }, reject);
    });
  }
})

window.createBook = function() {
  var name = prompt('Please enter the book name');
  if (!name) return;

  Book.save({
    name: name
  }).then(function() {
    listBooks();
  });
}

window.deleteBook = function() {
  Book.first().then(function(book) {
    book.destroy().then(function() {
      listBooks();
    });
  });
};

function listBooks() {
  $('#books').text('Loading Books');
  Book.all().then(function(books) {
    var text = books.length ?
      JSON.stringify(books, null, '\t') : 'No books found :/'
    $('#books').text(text);
  }, function() {
    $('#books').text('Failed to load books');
  });
}

listBooks();