Kreiranje objekta sa podacima o proizvodu u Redux-u

Funkciju za kreiranje objekta sa prodavcem imamo, pređimo na proizvod. Kreiranje ovog objekta će biti malo složenije, pošto sadrži više polja sa podacima. Počnimo.

Otvorimo našu aplikaciju sa proizvodima, a u njoj fajl server.js. Ispod nakon funkcije getRandInt napišimo našu funkciju createProductData:

api/server.jsconst createProductData = () => {}

Sada propišimo potrebne osobine. Vrednosti za name, price i amount ćemo generisati pomoću getRandInt, koju smo napisali na prošloj lekciji:

api/server.jsconst createProductData = () => {
  return {
    name: `Product${getRandInt(0, 100)}`,
    price: getRandInt(100, 2000),
    amount: getRandInt(1, 50),
  }
}

A da bismo generisali opis, mi ćemo iskoristiti još jednu korisnu stvar. To je biblioteka faker, koja omogućava generisanje lažnih imena, adresa, mejlova, naziva ulica, tekstova i sl. na raznim jezicima. Upišimo u terminalu sledeću liniju i instalirajmo ovu biblioteku za našu aplikaciju:

terminalnpm install @faker-js/faker --save-dev

A zatim importujmo u naš fajl:

api/server.jsimport { faker } from '@faker-js/faker'

Iskoristimo u njoj generisanje rečenica, koje sadrže poznati tekst-"ribu" 'Lorem ipsum'. Neka opis sadrži od 3 do 5 takvih rečenica:

api/server.jsconst createProductData = () => {
  return {
    name: `Product${getRandInt(0, 100)}`,
    desc: faker.lorem.sentences({ min: 3, max: 5 }),
    price: getRandInt(100, 2000),
    amount: getRandInt(1, 50),
  }
}

Sada dodajmo u naš objekat polje sa reakcijama, vrednost ćemo mu proslediti, generisanu na mestu komandom create, objekat (reakcije za sada u njemu će biti po 0):

api/server.jsconst createProductData = () => {
  return {
    name: `Product${getRandInt(0, 100)}`,
    desc: faker.lorem.sentences({ min: 3, max: 5 }),
    price: getRandInt(100, 2000),
    amount: getRandInt(1, 50),
    reactions: db.reaction.create(),
  }
}

I kao poslednju osobinu dodajmo već generisani objekat prodavca, koji moramo da prosledimo kao parametar u funkciju createProductData. Ovako izgleda kompletan kod funkcije za kreiranje objekta proizvoda:

api/server.jsconst createProductData = (seller) => {
  return {
    name: `Product${getRandInt(0, 100)}`,
    desc: faker.lorem.sentences({ min: 3, max: 5 }),
    price: getRandInt(100, 2000),
    amount: getRandInt(1, 50),
    reactions: db.reaction.create(),
    seller,
  }
}
Задание 1

Otvorite vašu aplikaciju sa studentima. Upoznavši se sa materijalom ove lekcije, napišite funkciju za kreiranje objekta sa podacima o studentu.