No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Proyecto: migraci贸n de funciones a clases

17/25
Recursos

Aportes 8

Preguntas 1

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

ami me dice que todos los metodos de faker estan deprecados xd

Si todo lo relacionado con Faker les da error, deben de utlizar el nombre de faker entre llaves. as铆

import { faker } from "@faker-js/faker";

Creo que al m茅todo add deber铆a hacerlo privado, as铆 no se puede acceder desde fuera de la clase. Ya que su finalidad es ser utilizado internamente por el m茅todo create

import { faker } from '@faker-js/faker';
import { Product } from '../models/product.model';
import { CreateProductDto, updateProductDto } from '../dtos/product.dto';

export class ProductMemoryService {
  private products: Product[] = [];

  create(data: CreateProductDto): Product {
    const newProduct = {
      ...data,
      id: faker.datatype.number(),
      category: {
        id: data.categoryId,
        name: faker.commerce.department(),
        image: faker.image.imageUrl(),
      },
    };
    this.products.push(newProduct);
    return this.add(newProduct);
  }

  add(product: Product) {
    this.products.push(product);
    return product;
  }

  updateProduct(id: Product['id'], changes: updateProductDto): Product {
    const index = this.products.findIndex((item) => item.id === id);
    const prevData = this.products[index];
    this.products[index] = {
      ...prevData,
      ...changes,
    };
    return this.products[index];
  }

  findOne(id: Product['id']) {
    return this.products.find((item) => item.id === id);
  }
}

Me tarde un rato en saber por que me daba error el metodo 鈥渃reate鈥 era por que tenia creationAt y UpdatedAt en las propiedades de la interfaz Product y Category

Migraci贸n de mi c贸dig:

import { faker } from '@faker-js/faker';
import { Product } from "../models/product.model";
import { CreateProductDto, UpdateProductDto } from "../dtos/product.dto";
import { Category } from '../models/category.model';

export class ProductMemoryService {
  private products: Product[] = [];

  create (data: CreateProductDto): Product {
    const newProduct = {
      ...data,
      id: faker.datatype.number(),
      category: {
        id: data.categoryId,
        createdAt: faker.date.past(5),
        name: faker.commerce.department(),
        image: faker.image.imageUrl()
      },
    };
    
    return this.add(newProduct);
  };

  add (product: Product) {
    this.products.push(product);
    return product;
  };

  update (id: number, changes: UpdateProductDto): Product {
    const index = this.products.findIndex(item => item.id === id);
    const prevData = this.products[index];
    this.products[index] = {
    ...prevData,
    ...changes,
    }
    return this.products[index];
  };

  delete (id: number) {
    const getIndexOfProduct = (id: Category['id']) =>
      this.products.findIndex(item => item.id === id);
    
    const index: number = getIndexOfProduct(id);

    this.products.splice(index, 1);
    console.log(this.products);
  };

  getOne (id: number) {
    return this.products.find(item => item.id === id);
  };
}

Documentaci贸n de Faker

Aqui esta mi version de la function create(). Use los metodos de la version mas reciente de faker

    create(data: CreateProductDto): Product {
        const newProduct = {
            ...data,
            id: faker.number.int(),
            category: {
                id: data.categoryId,
                name: faker.commerce.department(),
                image: faker.image.url()
            }
        }
        return this.add(newProduct);
    }

Tambien cambie el importe de faker:

import { faker } from '@faker-js/faker';