På morgonen gjorde vi en recap av validering av kategorier och lade in så att vi kan ange kategorier även när vi skapar ett nytt café.

Därefter började vi (eller ja – jag) bråka med Sequelize och Sequelize-CLI och strax efter lunch så kastade vi ut det och lade in Bookshelf.js istället som är en annan ORM som inte är riktigt lika ”bestämd” med hur den vill ha strukturen i databasen.

Vi kollade även på hur man kan sätta upp 1:n relationer och n:n relationer i Bookshelf.js, varefter ni fick en lite större workshop inför torsdagens lektion om autentisering (alla punkter är viktiga men ni måste ha punkt 5 på plats till på torsdag!).


Länkar

Bookshelf.js

https://bookshelfjs.org/

Bookshelf One-to-many (1:n)

https://bookshelfjs.org/tutorial-one-to-many.html

Bookshelf Many-to-many (n:n)

https://bookshelfjs.org/tutorial-many-to-many.html

Bookshelf.js API Reference

https://bookshelfjs.org/api.html

Bookshelf Cheat Sheet (rekommenderas!)

https://devhints.io/bookshelf

Bookshelf.js tutorial

Använder PostgreSQL men bör annars vara applicerbart. Bra för att kolla hur man t.ex. skapar nya instanser (dvs nya rader i en tabell) av en modell.

http://zetcode.com/javascript/bookshelf/


Workshop

Som jag skrev i sammanfattningen överst i blogginlägget men även sa på lektionen så är det jätteviktigt att alla hinner klart med steg 5 innan nästa lektion då vi kommer att bygga vidare på detta när vi kollar på autentisering på torsdag morgon.

Steg 1.

Se till att ni är uppdaterade med det vi gjort idag.

Steg 2.

Flytta logiken från routes/books.js till controllers/book_controller.js.

Steg 3.

Skapa endpoint för att lista alla authors men även en enskild författare. Självklart separerar du logiken från routern precis som i steg 2.

Enskild författare ska även visa författarens böcker.

/authors/   # Alla författare i databasen
/authors/1  # Författare 1 samt alla böcker som hen har skrivit

Steg 4.

Gör samma sak som steg 3 fast för användare (User). Enskild användare ska även visa hens böcker. Igen såklart separerat i controller och router.

/users/     # Alla användare i databasen
/users/1    # Användare 1 samt alla böcker som hen äger

Steg 5.

Man ska kunna skapa en ny användare genom att POST:a till /users.

Exempel på data vi ska kunna skicka in med POST:en:

{
  "username": "kalle",
  "password": "quack",
  "first_name": "Kalle",
  "last_name": "Anka",
}

Steg 5.🌟

Guldstjärna om du även lägger till validering av datan vi POST:ar in till /users när vi skapar en ny användare. Välj vad du tycker är lämpliga valideringsregler själv!