Importante

jueves, 11 de mayo de 2023

nest repositorios

 coloco un cosnstructir en el servicio de tuiot

import { Injectable, NotFoundException } from '@nestjs/common';
import { Twits } from './twits.entity';
import { CreateTwitDto } from './dto/create-twit.dto/create-twit.dto';
import { UddateTwitDto } from './dto/uddate-twit.dto/uddate-twit.dto';
import { Repository } from 'typeorm';

@Injectable()
export class TwitsService {
  constructor(private readonly TwitsRepository: Repository<Twits>) {}
  // creo un ejmlo para trabajar

para retornar la información que se encuentra en la base de Datos 

  // El get lo voy a hacer aincronico y traerá una promesa
  async getTwits(): Promise<Twits[]> {
    //ahora retornará el await
    // find hará un select all de sql, es decir traiem todo
    return await this.twitsRepository.find();


creo una funcion asincrona, que regrezará un tipo promesa, Promise esta es una función genérica así que cloco >Twits[] > que es la entidad del modulp que estoy trabajando, esta función como ya estamos conectado a la base de dato traer´pa todos los valores de la tabla de datos. aqui el metodo find es el equivalente  a select all de  mysql.

para obtener un solo dato se usa el findOne

 async getTwit(id: number): Promise<Twits> {
    const twit = await this.twitsRepository.findOne({ where: { id } });
    if (!twit) {
      throw new NotFoundException('Resource Not Found');
    }
    return twit;
  }

Se crea una funcnión asincrónica que recibe el id desde el fronend , esta función devolverá una promeza y el modelo será Twit.  entonces espero un awit  que usa el repositorio creado y con el método findone  extrae solo el dato que necesita, el del id.

si el id no existe genera una excepcion notfound exception 404, pero si existe retorna el dato pedido

para ageregar un nuevo twits se usa 

 async createTwit({ menssage }: CreateTwitDto): Promise<Twits>{
    const twit = this.twitsRepository.create({ menssage });
    return this.twitsRepository.save(twit);
  }

donde create genera el nuevo mensaje, yse guarada en la contstante twit ahor5a esta se salva y retorna


para actulizar

 async updateTwit(id: number, { menssage }: UddateTwitDto): Promise<Twits> {
    const twit: Twits = await this.twitsRepository.preload({
      id,
      menssage,
    });
    if (!twit) {
      throw new NotFoundException('Resource Not Found');
    }
    twit.menssage = menssage;
    return twit;
  } }
 

proload busca y actuliza si existe





0 comentarios:

Publicar un comentario