From 090c5af0b38bd93acbb2d96756bf13134375a707 Mon Sep 17 00:00:00 2001 From: Emilio Date: Tue, 11 Nov 2025 09:18:22 -0600 Subject: [PATCH] crear relaciones en tabla intermedia --- mariadb/aria_log.00000001 | Bin 5029888 -> 5062656 bytes mariadb/aria_log_control | Bin 52 -> 52 bytes src/equipo/equipo.controller.ts | 4 +- src/equipo/equipo.service.ts | 73 ++++++++++++++++++++++++-------- 4 files changed, 58 insertions(+), 19 deletions(-) diff --git a/mariadb/aria_log.00000001 b/mariadb/aria_log.00000001 index e1d5683e2042f8efde597d10e9a0fb8ceccf0771..7caeed46e9b828db97bad8e397be0295617b10d8 100644 GIT binary patch delta 17746 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 LOIZ9uY;BE-xD1_fAm=cMZ zHX|+}Y1W*13l=R|mXfw&RmPfi8#Zmp%GtJK*PeZO1w|zX$|?>WIdfX?ynK)tip4p1y&1!@rNu@2^QKnfhsuGXM2IJ2?OV diff --git a/mariadb/aria_log_control b/mariadb/aria_log_control index 454cd344bee7330ee8670f38c353d0301b9cd5fb..d76b733d7c55bdf86d549c72627be88bc2fde4d1 100644 GIT binary patch delta 27 gcmXppnII>2>HVk0j0_CFm3, - ) { } + ) {} async buscarEquipos(filtros: any, page: number = 1, limit: number = 10) { const query = this.equipoRepository @@ -131,12 +135,35 @@ export class EquipoService { }; } async updateEquipo(equipoNuevo: UpdateEquipoDto, id_equipo: number, id_user) { + let equipo = await this.equipoRepository.findOne({ + where: { id_equipo }, + relations: ['tipoEquipo'], + }); + if (!equipo) { + throw new NotFoundException('No se encontó equipo'); + } + let procesador_tipoequipo; + if (equipoNuevo.id_procesador) { procesador_tipoequipo = await this.procesadorTipoEquipoRepo.findOne({ - where: { procesador: { id_procesador: equipoNuevo.id_procesador } }, + where: { + procesador: { id_procesador: equipoNuevo.id_procesador }, + tipoEquipo: { + id_tipo_de_equipo: equipo.tipoEquipo.id_tipo_de_equipo, + }, + }, relations: ['procesador', 'tipoEquipo'], }); + + if (!procesador_tipoequipo) { + procesador_tipoequipo = await this.procesadorTipoEquipoRepo.save({ + procesador: { id_procesador: equipoNuevo.id_procesador }, + tipoEquipo: { + id_tipo_de_equipo: equipo.tipoEquipo.id_tipo_de_equipo, + }, + }); + } } const updateData = { @@ -252,17 +279,33 @@ export class EquipoService { tipoEquipo: { id_tipo_de_equipo: equipo.id_tipo_equipo }, }); } else { - const procesador_tipoequipo = - await this.procesadorTipoEquipoRepo.findOneBy({ - procesador: { id_procesador: equipo.id_procesador }, - tipoEquipo: { id_tipo_de_equipo: equipo.id_tipo_equipo }, - }); + let procesador = await this.procesadorRepo.findOne({ + where: { id_procesador: equipo.id_procesador }, + relations: ['procesador', 'tipoEquipo'], + }); + let tipo_equipo = await this.tipoEquipoRepo.findOne({ + where: { id_tipo_de_equipo: equipo.id_procesador }, + }); - if (!procesador_tipoequipo) { - throw new Error( - `No se encontró la combinación de procesador y tipo de equipo proporcionados.`, + if (!procesador || !tipo_equipo) { + throw new NotFoundException( + 'No se encontro procesador ni tipo de equipo', ); } + let procesador_tipoequipo = await this.procesadorTipoEquipoRepo.findOne({ + where: { procesador: procesador, tipoEquipo: tipo_equipo }, + }); + if (!procesador_tipoequipo) { + procesador_tipoequipo = await this.procesadorTipoEquipoRepo.create({ + procesador, + tipoEquipo: tipo_equipo, + }); + + procesador_tipoequipo = await this.procesadorTipoEquipoRepo.save( + procesador_tipoequipo, + ); + } + nuevoEquipo = this.equipoRepository.create({ procesador_tipoequipo: procesador_tipoequipo, inventario: equipo.inventario, @@ -276,7 +319,7 @@ export class EquipoService { sistemaOperativo: { id_sistema_operativo: equipo.id_sistema_operativo }, tipoUso: { id_uso: equipo.id_uso }, marca: { id_marca: equipo.id_marca }, - tipoEquipo: { id_tipo_de_equipo: equipo.id_tipo_equipo }, + tipoEquipo: tipo_equipo, }); } @@ -832,11 +875,7 @@ export class EquipoService { } } -let escritorio = [ - 'ESCRITORIO PC', - 'ESCRITORIO MAC OS ', - 'ESCRITORIO LINUX', -]; +let escritorio = ['ESCRITORIO PC', 'ESCRITORIO MAC OS ', 'ESCRITORIO LINUX']; let portatil = [ 'PORTÁTILES WINDOWS', 'PORTÁTILES CHROMEBOOK',