Premiere - Book List
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>
Babel + JSX
// import {Api, Model} from 'premiere';
let {Api, Model} = Premiere; // Use the line above outside of JSFiddle
Api.base = 'http://rest.learncode.academy/api/premiere-book-list/';
class Book extends Model {
static path = 'books';
static first() {
return new Promise((resolve, reject) => {
Book.all().then((books) => {
books.length ? resolve(books[0]) : reject('No books found');
}, reject);
});
}
}
window.createBook = () => {
var name = prompt('Please enter the book name');
if (!name) return;
Book.save({name}).then(() => listBooks());
}
window.deleteBook = () => {
Book.first().then((book) => book.destroy().then(() => listBooks()))
};
function listBooks() {
$('#books').text('Loading Books');
Book.all().then((books) => {
var text = books.length ?
JSON.stringify(books, null, '\t') : 'No books found :/'
$('#books').text(text);
}, (error) => $('#books').text('Failed to load books'));
}
listBooks();