Untitled
unknown
javascript
a year ago
4.1 kB
1
Indexable
Never
const fs = require("fs") const { json } = require("node:stream/consumers") //acá deberías usar los imports de ESModules como acordamos al inicio del curso. Para ello falta el package.json class ProductManager { constructor(path) { this.path = path, this.products = [ ] } getProduct = async () => { const listOfProducts = await fs.promises.readFile(this.path, "utf-8") const listOfProductsParse = JSON.parse(listOfProducts) return listOfProductsParse } generateId = async () => { const counter = this.products.length if (counter === 0) { return 1 } else { return (this.products[counter - 1].id) + 1 } } addProduct = async (title, description, price, image, code, stock) => { if (!title || !description || !price || !image || !code || !stock) { console.error("Ingresa todos los datos del producto") return } else { const coderepet = this.products.find(element => element.code === code) if (!coderepet) { //este condicional no es correcto, está haciendo que si el código no está repetido (find devuelve undefined) entonces entrá acá console.error("El codigo del producto es repetido") return } else { const generatedIds = await this.generateId() const productNew = { id: generatedIds, title, description, price, image, code, stock } this.products.push(productNew) await fs.promises.writeFile(this.path, JSON.stringify(this.products, null, 2)) } } } updateProduct = async (id, title, description, price, image, code, stock) => { if (!id || !title || !description || !price || !image || !code || !stock) { console.error("Ingresa todos los datos del producto para su correcta actualizacion") return } else { const allproducts = await this.getProduct() const coderepet = allproducts.find(element => element.code === code) if (coderepet) { console.error("El codigo del producto que desea actualizar se encuentra repetido") return } else { const currentProductsList = await this.getProduct() const newProductsList = currentProductsList.map(element => { if (element.id === id) { const updatedProduct = { ...element, title, description, price, image, code, stock } return updatedProduct } else { return element } }) await fs.promises.writeFile(this.path, JSON.stringify(newProductsList, null, 2)) } } } delateProduct = async (id) => { const allproducts = await this.getProduct() const productsNotFound = allproducts.filter (element => element.id === id) //acá hay dos temas: primero el nombre de la variable no corresponde a lo que representa. //podría ser filteredProducts //segundo: la confición no es correcta para lo que se busca, debería ser !== porque justamente buscas filtrar los productos que querés conservar. await fs.promises.writeFile(this.path, JSON.stringify(productsNotFound, null, 2)) //esto no es correcto, se está escribiendo en el archivo el producto que supuestamente hay que eliminar } getProductById = async(id) => { const allproducts = await this.getProduct() const found = allproducts.find(element => element.id === id) return found } } async function generator() { const productManager = new ProductManager("./path/products.json"); //const list = await productManager.getProduct() const only = await productManager.getProductById(1) console.log(only) } generator()