1 00:00:00,000 --> 00:00:01,700 Si me da un error, yo reacciono rápido. 2 00:00:03,060 --> 00:00:06,860 ¿A qué me refiero muy en resumen? 3 00:00:07,940 --> 00:00:10,199 Vosotros habéis visto programación multihiro. 4 00:00:10,480 --> 00:00:10,800 Sí. 5 00:00:11,080 --> 00:00:12,740 Y sois muy expertos en multihiro. 6 00:00:13,560 --> 00:00:15,320 Pero, para variar, 7 00:00:15,560 --> 00:00:18,280 todo eso se trabaja con capas, por ejemplo. 8 00:00:18,899 --> 00:00:19,339 Lógicamente. 9 00:00:19,820 --> 00:00:20,019 ¿Verdad? 10 00:00:20,019 --> 00:00:21,059 Pero hay reas, ¿no? 11 00:00:23,460 --> 00:00:23,980 Claro. 12 00:00:25,219 --> 00:00:26,120 Con capas. 13 00:00:26,420 --> 00:00:27,300 Capas por encima. 14 00:00:27,440 --> 00:00:28,280 Entonces, ya. 15 00:00:28,280 --> 00:00:31,019 idea muy, muy, muy, muy 16 00:00:31,019 --> 00:00:32,560 sencilla, muy sencilla 17 00:00:32,560 --> 00:00:35,179 muy sencilla, que es la que tengo yo, porque yo tampoco 18 00:00:35,179 --> 00:00:37,079 sé de esta 19 00:00:37,079 --> 00:00:39,020 domino esta materia en absoluto 20 00:00:39,020 --> 00:00:41,200 ¿qué ocurre cuando tenemos 21 00:00:41,200 --> 00:00:42,780 una base de datos? 22 00:00:43,479 --> 00:00:45,200 sobre todo cuando tenemos una aplicación 23 00:00:45,200 --> 00:00:47,219 web, si es una aplicación de escritorio 24 00:00:47,219 --> 00:00:48,719 hay un tío solo que está cediendo 25 00:00:48,719 --> 00:00:50,859 si es una aplicación web, hay millones 26 00:00:50,859 --> 00:00:52,719 de tíos y tías 27 00:00:52,719 --> 00:00:57,179 eso por un lado, pero eso ya 28 00:00:57,179 --> 00:00:59,000 lo hace solo, claro 29 00:00:59,000 --> 00:01:00,659 eso ya lo hace solo, hombre, estaría bueno 30 00:01:00,659 --> 00:01:03,039 que hubiera un solo hilo para las 200.000 31 00:01:03,039 --> 00:01:04,739 personas que están solicitando algo por la web 32 00:01:04,739 --> 00:01:07,200 vale, pero no solo eso 33 00:01:07,200 --> 00:01:08,900 sino esos hilos 34 00:01:08,900 --> 00:01:11,040 lo normal es que quieran acceder a una base 35 00:01:11,040 --> 00:01:11,519 de datos 36 00:01:11,519 --> 00:01:15,000 puede ocurrir que eso tarde 37 00:01:15,000 --> 00:01:16,980 claro, puede 38 00:01:16,980 --> 00:01:18,239 como condiciones de carrera 39 00:01:18,239 --> 00:01:20,280 puedes modificar la base de datos 40 00:01:20,280 --> 00:01:21,780 y que esté devolviendo a la vez 41 00:01:21,780 --> 00:01:23,900 y devuelva las cosas que ya han sido modificadas 42 00:01:23,900 --> 00:01:26,219 no, bueno, pero eso ya es un tema de sincronización de los hilos 43 00:01:26,219 --> 00:01:29,099 eso ya se hace automáticamente 44 00:01:29,099 --> 00:01:30,640 eso no es un problema 45 00:01:30,640 --> 00:01:32,540 a lo que voy es 46 00:01:32,540 --> 00:01:35,340 el hilo del usuario 47 00:01:35,340 --> 00:01:36,920 está cediendo la base de datos 48 00:01:36,920 --> 00:01:37,819 para recuperar datos 49 00:01:37,819 --> 00:01:39,659 eso puede tardar 50 00:01:39,659 --> 00:01:42,780 puede tardar milisegundos incluso 51 00:01:42,780 --> 00:01:44,739 que milisegundos es mucho cuando hablamos 52 00:01:44,739 --> 00:01:46,579 de un servidor web, es un montón 53 00:01:46,579 --> 00:01:49,200 entonces, si no es programación reactiva 54 00:01:49,200 --> 00:01:50,939 el hilo ahí está parado 55 00:01:50,939 --> 00:01:53,159 esperando que le lleguen 56 00:01:53,159 --> 00:01:53,640 los datos 57 00:01:53,640 --> 00:01:56,980 entonces decimos, oye, pero no podría ocurrir 58 00:01:56,980 --> 00:01:58,920 que ese hilo, mientras está ahí 59 00:01:58,920 --> 00:02:00,680 muerto de la risa esperando que lleguen los datos 60 00:02:00,680 --> 00:02:02,019 se libere 61 00:02:02,019 --> 00:02:04,739 con lo cual el recurso 62 00:02:04,739 --> 00:02:06,019 se quede disponible para otra cosa 63 00:02:06,019 --> 00:02:08,919 y cuando pum, el dato aparezca 64 00:02:08,919 --> 00:02:10,879 rápidamente, ya se 65 00:02:10,879 --> 00:02:12,000 abra un hilo para cogerlo 66 00:02:12,000 --> 00:02:14,800 y ahí es la reacción, de ahí viene lo de reactivo 67 00:02:14,800 --> 00:02:16,840 es reactivo a que aparezcan 68 00:02:16,840 --> 00:02:18,340 datos en flujos que tú has abierto 69 00:02:18,340 --> 00:02:20,599 de ahí viene la palabra reactivo 70 00:02:20,599 --> 00:02:23,080 que tú tienes flujos de datos que te van llegando 71 00:02:23,080 --> 00:02:41,020 Entonces, tú puedes estarte ahí esperando o puedes decir, avísame cuando llegues y yo me piro. Claro, avísame cuando llegues. Entonces, cuando ha llegado, tú reaccionas, reaccionas a la llegada, reaccionas y te enganchas. Entonces, optimizas los hilos, ¿vale? 72 00:02:41,020 --> 00:02:43,639 entonces eso, pues lógicamente 73 00:02:43,639 --> 00:02:45,599 hay frameworks para hacerlo automáticamente 74 00:02:45,599 --> 00:02:47,740 el más sencillo que yo he visto, el WebFlux 75 00:02:47,740 --> 00:02:49,840 ¿vale? WebFlux 76 00:02:49,840 --> 00:02:51,379 ya es 77 00:02:51,379 --> 00:02:53,659 el Spring Data JPA que hemos visto 78 00:02:53,659 --> 00:02:55,539 el Spring Data, con eso 79 00:02:55,539 --> 00:02:57,039 ya está 80 00:02:57,039 --> 00:02:58,819 entonces tú en lugar de 81 00:02:58,819 --> 00:03:00,219 crear 82 00:03:00,219 --> 00:03:03,280 creas fluxes 83 00:03:03,280 --> 00:03:05,479 y esos fluxes ya pues se comunican entre sí 84 00:03:05,479 --> 00:03:07,539 ¿por qué te hace mal? porque se ha inventado después 85 00:03:07,539 --> 00:03:09,520 pero el WebFlux te lo hace 86 00:03:09,520 --> 00:03:11,460 de base, tú instancias 87 00:03:11,460 --> 00:03:13,280 en lugar de instanciar listas 88 00:03:13,280 --> 00:03:15,039 de tareas, en este caso 89 00:03:15,039 --> 00:03:17,120 o listas de alumnos o listas de lo que sea 90 00:03:17,120 --> 00:03:18,800 instancias fluxes de eso 91 00:03:18,800 --> 00:03:20,300 y esos fluxes ya 92 00:03:20,300 --> 00:03:23,840 se mapea 93 00:03:23,840 --> 00:03:24,860 ya incluso Spring 94 00:03:24,860 --> 00:03:27,180 lo mapea 95 00:03:27,180 --> 00:03:30,860 exacto, poner eso más o menos 96 00:03:30,860 --> 00:03:33,180 ese es un resumen muy resumido, pero tú lo 97 00:03:33,180 --> 00:03:34,840 haces y funciona y 98 00:03:34,840 --> 00:03:37,219 claro, para comprobar que utilidad 99 00:03:37,219 --> 00:03:38,919 tiene eso, pues tendrías que 100 00:03:38,919 --> 00:03:40,099 irte a un servidor 101 00:03:40,099 --> 00:03:43,180 o 10.000 102 00:03:43,180 --> 00:03:44,900 entonces 103 00:03:44,900 --> 00:03:47,419 yo como no quiero contaros mil ongas 104 00:03:47,419 --> 00:03:49,159 que hice ayer por la 105 00:03:49,159 --> 00:03:50,560 un segundo, que hice ayer por la tarde 106 00:03:50,560 --> 00:03:53,080 pues me puse a 107 00:03:53,080 --> 00:03:55,300 contactar con la gente de Conozco que trabaja 108 00:03:55,300 --> 00:03:56,900 en microservicio Java 109 00:03:56,900 --> 00:03:59,099 por ahí, por universo, que son dos, no son más 110 00:03:59,099 --> 00:04:01,080 y les dije, a ver 111 00:04:01,080 --> 00:04:03,099 vosotros hacéis esto con programación 112 00:04:03,099 --> 00:04:03,620 reactiva 113 00:04:03,620 --> 00:04:06,780 me dijeron, pues la verdad es que en la vida 114 00:04:06,780 --> 00:04:09,539 entonces debe ser que no se usa tantísimo 115 00:04:09,539 --> 00:04:10,520 creo que sí 116 00:04:10,520 --> 00:04:25,180 tú lo habilitas 117 00:04:25,180 --> 00:04:27,079 y ya el funcionamiento se despliega 118 00:04:27,079 --> 00:04:27,819 automáticamente 119 00:04:27,819 --> 00:04:41,339 Pero si no necesitas 120 00:04:41,339 --> 00:04:43,040 Backpressure, es decir, si no necesitas 121 00:04:43,040 --> 00:04:44,860 Que los clientes puedan solicitar 122 00:04:44,860 --> 00:04:47,199 A su ritmo los paquetes o un uso intensivo 123 00:04:47,199 --> 00:04:49,759 De servers, elements o websockets 124 00:04:49,759 --> 00:04:51,439 Bueno, ya me he perdido 125 00:04:51,439 --> 00:04:53,060 Pero bueno, igual alguno te sigue 126 00:04:53,060 --> 00:04:54,980 Servers, elements es un protocolo sobre HTTP 127 00:04:54,980 --> 00:04:56,779 Que te permite abrir un canal en el que 128 00:04:56,779 --> 00:04:59,379 El servidor hace entregas unidireccionales 129 00:04:59,379 --> 00:05:19,360 O sea, existen más capas de optimización 130 00:05:19,360 --> 00:05:20,040 Claro 131 00:05:20,040 --> 00:05:23,279 Frameworks de eso existen un montón 132 00:05:23,279 --> 00:05:24,920 Webflux es lo más sencillo 133 00:05:24,920 --> 00:05:26,620 De implementar para probarlo 134 00:05:26,620 --> 00:05:28,279 Pero sí, existe 135 00:05:28,279 --> 00:05:30,879 aparte de muchas, pues bueno, por lo que está diciendo él 136 00:05:30,879 --> 00:05:31,680 pues muchas más 137 00:05:31,680 --> 00:05:34,240 lo que pasa es que a las últimas que vas a meter 138 00:05:34,240 --> 00:05:36,740 tres llamadas de que si una base de datos 139 00:05:36,740 --> 00:05:38,079 una API o no sé qué en un servicio 140 00:05:38,079 --> 00:05:40,660 el método te escala a 60.000 141 00:05:40,660 --> 00:05:42,800 entre el 142 00:05:42,800 --> 00:05:43,600 sistema y no sé qué 143 00:05:43,600 --> 00:05:46,779 ya, que no es tan fácil luego 144 00:05:46,779 --> 00:05:47,519 de programar 145 00:05:47,519 --> 00:05:50,279 ya, que es pesado 146 00:05:50,279 --> 00:05:52,319 claro, ya, ya, ya 147 00:05:52,319 --> 00:05:54,720 bueno, pues vamos al borrado 148 00:05:54,720 --> 00:05:56,540 hemos dicho, entonces 149 00:05:56,540 --> 00:06:03,740 El borrado, pues ya que estamos 150 00:06:03,740 --> 00:06:06,949 Dani 151 00:06:06,949 --> 00:06:08,129 Se nos ha ido 152 00:06:08,129 --> 00:06:11,029 Le hemos perdido 153 00:06:11,029 --> 00:06:12,750 Vale, pues ya que estamos 154 00:06:12,750 --> 00:06:14,629 Que ese método vaya por delete 155 00:06:14,629 --> 00:06:16,769 Vale, pues en lugar de get mapping 156 00:06:16,769 --> 00:06:19,250 Post mapping, pues delete mapping 157 00:06:19,250 --> 00:06:25,779 Vale 158 00:06:25,779 --> 00:06:26,680 Entonces 159 00:06:26,680 --> 00:06:43,959 Vale 160 00:06:43,959 --> 00:06:55,980 Aquí, bueno, entiendo que me estáis siguiendo 161 00:06:55,980 --> 00:07:01,970 ¿No? Vale 162 00:07:01,970 --> 00:07:04,970 Entiendo que me estáis siguiendo 163 00:07:04,970 --> 00:07:06,610 ¿No? Aquí para borrar 164 00:07:06,610 --> 00:07:08,149 Hay que pasarle 165 00:07:08,149 --> 00:07:09,850 ¿El qué? La clave 166 00:07:09,850 --> 00:07:11,550 La clave 167 00:07:11,550 --> 00:07:14,470 Si yo la pongo aquí 168 00:07:14,470 --> 00:07:16,069 En la ruta 169 00:07:16,069 --> 00:07:18,329 La clave, pues entonces aquí pongo 170 00:07:18,329 --> 00:07:19,389 Variable de par 171 00:07:19,389 --> 00:07:21,129 Y ya está 172 00:07:21,129 --> 00:07:24,170 Y ahora llamo al método del repositor 173 00:07:24,170 --> 00:07:25,389 Del servicio que lo tenga 174 00:07:25,389 --> 00:07:27,069 ¿Tengo algún método en el servicio que me borra? 175 00:07:27,209 --> 00:07:29,430 No, pues vamos a hacerlo 176 00:07:29,430 --> 00:07:31,250 Yo he usado el método delete 177 00:07:31,250 --> 00:07:32,430 ¿Tienes que hacerlo por método delete? 178 00:07:32,709 --> 00:07:33,910 No, lo puedo hacer con get 179 00:07:33,910 --> 00:07:35,009 Claro 180 00:07:35,009 --> 00:07:38,470 Claro 181 00:07:38,470 --> 00:07:44,629 Pero bueno, era por probarlo 182 00:07:44,629 --> 00:07:49,180 Delete tarea 183 00:07:49,180 --> 00:08:03,399 Claro, pero bueno, get está 184 00:08:03,399 --> 00:08:05,199 Pues optimizado para consultas 185 00:08:05,199 --> 00:08:07,459 Entonces, delete y aquí 186 00:08:07,459 --> 00:08:09,240 ¿Qué haríamos? Pues repo 187 00:08:09,240 --> 00:08:11,319 Punto y repo tendrá 188 00:08:11,319 --> 00:08:13,220 Su delete by id 189 00:08:13,220 --> 00:08:15,420 Id 190 00:08:15,420 --> 00:08:19,279 Y ya está 191 00:08:19,279 --> 00:08:25,430 vale, si lo pongo por delete 192 00:08:25,430 --> 00:08:27,569 no lo puedo pasar por el navegador 193 00:08:27,569 --> 00:08:29,170 pero lo paso por el postman y ya está 194 00:08:29,170 --> 00:08:34,389 y ahora, aquí he hecho algo 195 00:08:34,389 --> 00:08:35,149 muy mal hecho 196 00:08:35,149 --> 00:08:37,830 y no me lo habéis dicho 197 00:08:37,830 --> 00:08:40,309 aquí he hecho 198 00:08:40,309 --> 00:08:42,490 algo muy feo, aquí no me lo habéis dicho 199 00:08:42,490 --> 00:08:47,629 va por ahí 200 00:08:47,629 --> 00:08:50,309 que es confuso, porque cuando yo ponga 201 00:08:50,909 --> 00:08:51,970 a pincelta 202 00:08:51,970 --> 00:08:54,409 él como sabe que no es 203 00:08:54,409 --> 00:08:56,110 borrar uno con 204 00:08:56,110 --> 00:08:58,070 I de inserta o que es este? 205 00:08:58,370 --> 00:09:00,029 Hay ambigüedad. 206 00:09:00,289 --> 00:09:01,889 ¿Por qué entonces anteriormente? 207 00:09:02,690 --> 00:09:04,149 Porque antes no había ambigüedad, porque 208 00:09:04,149 --> 00:09:06,330 antes era directamente la palabra inserta 209 00:09:06,330 --> 00:09:08,370 o directamente la palabra tareas. 210 00:09:08,450 --> 00:09:09,070 No hay ninguna ambigüedad. 211 00:09:09,070 --> 00:09:10,789 Hay dos métodos distintos. Uno va en el red 212 00:09:10,789 --> 00:09:11,990 y otro va por el telete. 213 00:09:13,929 --> 00:09:15,009 Bueno, vale. 214 00:09:15,309 --> 00:09:17,029 Sí. Muy bien 215 00:09:17,029 --> 00:09:18,870 vistos y muy listos. Pero 216 00:09:18,870 --> 00:09:20,289 si yo hubiera puesto aquí red, 217 00:09:21,889 --> 00:09:23,049 os habríais echado 218 00:09:23,049 --> 00:09:24,070 encima diciendo ¡No! 219 00:09:24,409 --> 00:09:26,470 eso jamás 220 00:09:26,470 --> 00:09:30,809 no, pero también es que 221 00:09:30,809 --> 00:09:32,830 no le pasas la palabra inserta 222 00:09:32,830 --> 00:09:33,669 y luego es la tarea 223 00:09:33,669 --> 00:09:38,289 a ver, si yo pongo esto así está mal 224 00:09:38,289 --> 00:09:40,649 y esprime a ver 225 00:09:40,649 --> 00:09:42,429 que me va a decir, ahí tienes una ambigüedad 226 00:09:42,429 --> 00:09:44,250 porque me dice, hay dos rutas 227 00:09:44,250 --> 00:09:48,350 hay dos rutas 228 00:09:48,350 --> 00:09:50,110 de método get 229 00:09:50,110 --> 00:09:52,649 que yo no puedo distinguir 230 00:09:52,649 --> 00:09:54,509 distinguir. Yo no puedo distinguir 231 00:09:54,509 --> 00:09:55,730 cuándo me quieres borrar 232 00:09:55,730 --> 00:09:57,909 un documento con clave 233 00:09:57,909 --> 00:10:00,110 tareas o cuándo quieres 234 00:10:00,110 --> 00:10:00,830 listar las tareas. 235 00:10:03,149 --> 00:10:04,509 Claro, puede pensar 236 00:10:04,509 --> 00:10:05,450 que tareas es una idea. 237 00:10:06,490 --> 00:10:07,509 Vale, ahora está claro, ¿no? 238 00:10:10,490 --> 00:10:12,370 ¿Cómo hago que el siguiente? ¿Así va a tomar 239 00:10:12,370 --> 00:10:13,629 esas decisiones, alegremente? 240 00:10:13,629 --> 00:10:15,850 ¿Por qué lo pones encima y no lo pones arriba en la cabeza? 241 00:10:16,590 --> 00:10:17,509 A ver, lo he puesto así. 242 00:10:18,210 --> 00:10:19,590 Es que... 243 00:10:19,590 --> 00:10:21,110 Conclusión. 244 00:10:21,110 --> 00:10:22,230 Que pienso un poquito. 245 00:10:22,649 --> 00:10:28,840 O sea, ya no solo nos lo hace todo, sino encima queréis que piense. 246 00:10:29,639 --> 00:10:30,940 Pero entonces, ¿para qué queréis vosotros? 247 00:10:32,159 --> 00:10:48,879 Entonces, ahora yo le pongo aquí, delete, delete id, ¿vale? 248 00:10:50,259 --> 00:10:52,340 Ahora ya sí no hay confusión. 249 00:10:53,320 --> 00:10:54,659 Le tengo que pasar esta url. 250 00:10:54,659 --> 00:10:57,919 Pues venga, vamos a borrar 251 00:10:57,919 --> 00:11:00,399 Bueno, primero 252 00:11:00,399 --> 00:11:09,440 No hay errores, no parece 253 00:11:09,440 --> 00:11:12,659 Venga, me voy a coger 254 00:11:12,659 --> 00:11:16,039 El primero de todos 255 00:11:16,039 --> 00:11:17,200 Esto 256 00:11:17,200 --> 00:11:19,799 Control C 257 00:11:19,799 --> 00:11:20,519 ¡Hala! 258 00:11:22,460 --> 00:11:23,820 Ese ID tan horroroso 259 00:11:23,820 --> 00:11:27,980 Y ahora, con el método 260 00:11:27,980 --> 00:11:28,860 Delete 261 00:11:28,860 --> 00:11:31,360 ¿Qué quiero yo? Quiero API 262 00:11:31,360 --> 00:11:34,240 Delete 263 00:11:34,240 --> 00:11:36,519 Barra este ID 264 00:11:36,519 --> 00:11:39,299 Sin body y sin nada 265 00:11:39,299 --> 00:11:40,720 No quiero que vaya body 266 00:11:40,720 --> 00:11:41,620 Ni que vaya nada 267 00:11:41,620 --> 00:11:43,159 ¿Vale? 268 00:11:45,679 --> 00:11:47,259 Copié un ID de la base de datos 269 00:11:47,259 --> 00:11:48,539 Y puse la ruta 270 00:11:48,539 --> 00:11:50,639 API delete, puse aquí delete 271 00:11:50,639 --> 00:11:52,740 Y a ver si me sale 272 00:11:52,740 --> 00:11:54,820 ¿Que no te lo borra? 273 00:11:55,600 --> 00:11:56,419 No, yo no lo borro 274 00:11:56,419 --> 00:11:58,419 ¿Tú has dicho que no te lo ha borrado? 275 00:11:58,860 --> 00:11:59,899 No lo sé. 276 00:12:00,120 --> 00:12:00,879 Vamos a probar. 277 00:12:03,519 --> 00:12:05,879 Me da la respuesta OK. 278 00:12:06,139 --> 00:12:06,779 Buen rollo. 279 00:12:07,860 --> 00:12:09,679 Que estoy siendo muy vaga 280 00:12:09,679 --> 00:12:11,620 porque también estoy poniendo 281 00:12:11,620 --> 00:12:14,080 que todos me den la respuesta genérica OK. 282 00:12:14,820 --> 00:12:15,899 Esos métodos de mapping 283 00:12:15,899 --> 00:12:17,139 se les puede configurar. 284 00:12:17,200 --> 00:12:18,840 Yo estoy configurando de alguna manera 285 00:12:18,840 --> 00:12:20,539 lo mínimo, pero bueno, 286 00:12:20,600 --> 00:12:22,419 uno se pone a cotillar aquí 287 00:12:22,419 --> 00:12:24,340 y aquí podemos configurar 288 00:12:24,340 --> 00:12:26,279 qué tipo de respuesta quieres que te dé. 289 00:12:26,279 --> 00:12:29,419 HTTP, response, cualquiera que sea 290 00:12:29,419 --> 00:12:30,879 Me está dando 200 siempre 291 00:12:30,879 --> 00:12:32,919 Pero yo le puedo decir que me dé otra 292 00:12:32,919 --> 00:12:35,679 Entonces, en principio yo creo que me ha funcionado 293 00:12:35,679 --> 00:12:36,620 A ver si me ha borrado 294 00:12:36,620 --> 00:12:38,519 Este primero 295 00:12:38,519 --> 00:12:42,179 El que acababa en 8.6.4 296 00:12:42,179 --> 00:12:47,090 Muchacho, ¿por qué no me lo has borrado? 297 00:12:48,450 --> 00:12:49,970 ¿Te has enviado para el método delete? 298 00:12:50,309 --> 00:12:50,710 Sí 299 00:12:50,710 --> 00:12:51,970 No haces nada en el delete 300 00:12:51,970 --> 00:12:53,429 No llamas a este bit 301 00:12:53,429 --> 00:12:55,610 Acabáramos 302 00:12:55,610 --> 00:12:57,230 Con razón me ha dado tanto ok 303 00:12:57,230 --> 00:12:58,750 Vale, vale, vale 304 00:12:58,750 --> 00:13:08,429 Bueno, esto pasaría a las pruebas 305 00:13:08,429 --> 00:13:09,750 Perfectamente 306 00:13:09,750 --> 00:13:11,789 Vale, pues entonces 307 00:13:11,789 --> 00:13:13,870 Efectivamente mi service 308 00:13:13,870 --> 00:13:16,600 Así 309 00:13:16,600 --> 00:13:19,360 Es complicado que haga nada 310 00:13:19,360 --> 00:13:24,539 Segundo intento 311 00:13:24,539 --> 00:13:26,139 Ya decía yo que había funcionado 312 00:13:26,139 --> 00:13:27,120 Demasiado bien a la primera 313 00:13:27,120 --> 00:13:29,500 Y los deletes siempre dan mucha angustia 314 00:13:29,500 --> 00:13:33,600 Sí, lo temo 315 00:13:33,600 --> 00:13:38,850 Lo temo 316 00:13:38,850 --> 00:13:40,269 Vale, y ahora 317 00:13:40,269 --> 00:13:44,159 ¿Algo borró? 318 00:13:44,399 --> 00:13:44,840 Sí, sí, ha borrado 319 00:13:44,840 --> 00:13:48,039 Ha borrado, porque antes tenía 320 00:13:48,039 --> 00:13:49,340 15 y ya tengo 14 321 00:13:49,340 --> 00:13:51,799 Vale, magnífico 322 00:13:51,799 --> 00:13:54,360 Lo único es que esto va un poco contra nuestros principios 323 00:13:54,360 --> 00:13:55,700 Realmente 324 00:13:55,700 --> 00:13:57,440 Por el DTO, no 325 00:13:57,440 --> 00:13:59,379 Por el DTO, no 326 00:13:59,379 --> 00:14:00,679 Porque es que 327 00:14:00,679 --> 00:14:04,019 Uy, no, porque me estoy 328 00:14:04,019 --> 00:14:09,639 Bueno, no os he preguntado 329 00:14:09,639 --> 00:14:11,440 Si queríais ir a la feria de empleo 330 00:14:11,440 --> 00:14:18,799 Bueno, el recreo ya está aquí 331 00:14:18,799 --> 00:14:26,279 Entonces digo que está un poquito feo 332 00:14:26,279 --> 00:14:27,080 Porque 333 00:14:27,080 --> 00:14:29,539 Jolines 334 00:14:29,539 --> 00:14:31,419 Es que fijaos que ID 335 00:14:31,419 --> 00:14:36,639 Hemos tenido que copiar y pegar 336 00:14:36,639 --> 00:14:38,759 Me da un poco de angustia 337 00:14:38,759 --> 00:14:42,779 No, me gustaría 338 00:14:42,779 --> 00:14:45,360 Ni saber que esos números existen 339 00:14:45,360 --> 00:14:48,860 Claro, o sea 340 00:14:48,860 --> 00:14:50,419 Lo que realmente querríamos 341 00:14:50,419 --> 00:14:51,460 Lo que estaría guay 342 00:14:51,460 --> 00:14:55,240 Sería poner aquí un campo 343 00:14:55,240 --> 00:14:56,799 Que fuera mi código, de verdad 344 00:14:56,799 --> 00:14:58,600 Y que yo lo manejara por programa 345 00:14:58,600 --> 00:15:00,460 Y todo eso, ¿vale? 346 00:15:01,279 --> 00:15:02,919 Es decir, claro 347 00:15:02,919 --> 00:15:04,500 Pues esto tendría más sentido, ¿no? 348 00:15:04,980 --> 00:15:06,799 Yo me hago aquí, lo que pasa es que ahora 349 00:15:06,799 --> 00:15:08,559 Parcheando, vete a saber, pero 350 00:15:08,559 --> 00:15:10,519 Pues hacerme yo aquí 351 00:15:10,519 --> 00:15:13,220 Mi código, pero todo esto lo manejaría 352 00:15:13,220 --> 00:15:14,159 Yo por programa 353 00:15:14,159 --> 00:15:21,049 Sí, claro, las que tengo ya 354 00:15:21,049 --> 00:15:22,649 Esas las he dejado 355 00:15:22,649 --> 00:15:24,669 No encontrables 356 00:15:24,669 --> 00:15:26,029 Por ese código, pero bueno, claro 357 00:15:26,029 --> 00:15:27,289 Pero es que claro, ¿qué estamos haciendo? 358 00:15:27,389 --> 00:15:28,289 Estamos poniendo parches 359 00:15:28,289 --> 00:15:31,269 Pero a ver 360 00:15:31,269 --> 00:15:38,179 Deja, deja 361 00:15:38,179 --> 00:15:39,519 No sé lo que es 362 00:15:39,519 --> 00:15:40,259 A ver 363 00:15:40,259 --> 00:15:53,220 Ah, bueno, ya, pero 364 00:15:53,220 --> 00:15:55,559 Vale, entonces 365 00:15:55,559 --> 00:15:56,700 Pero yo iba a otra cosa 366 00:15:56,700 --> 00:15:57,759 ¿Vale? 367 00:16:02,539 --> 00:16:02,980 Vale 368 00:16:02,980 --> 00:16:04,120 Entonces 369 00:16:04,120 --> 00:16:08,840 Si este código 370 00:16:08,840 --> 00:16:10,879 Tengo yo aquí algún constructor 371 00:16:10,879 --> 00:16:12,399 No, ni le había puesto constructor 372 00:16:12,399 --> 00:16:19,500 le he puesto constructor 373 00:16:19,500 --> 00:16:21,000 no, vale 374 00:16:21,000 --> 00:16:22,379 entonces no tengo que modificarlo 375 00:16:22,379 --> 00:16:25,360 aquí lo único, si este es nuestro campo 376 00:16:25,360 --> 00:16:27,220 de búsquedas, que se convertiría 377 00:16:27,220 --> 00:16:29,240 de repente en nuestro campo de búsquedas 378 00:16:29,240 --> 00:16:31,059 pues estaría bien 379 00:16:31,059 --> 00:16:36,700 bueno, sí, si lo vamos a meter 380 00:16:36,700 --> 00:16:39,019 en colecciones, pero me refería 381 00:16:39,019 --> 00:16:41,200 a anotarlo 382 00:16:41,200 --> 00:16:42,080 con 383 00:16:42,080 --> 00:16:43,700 esta anotación 384 00:16:43,700 --> 00:16:48,340 la de Mongo 385 00:16:48,340 --> 00:16:49,740 porque 386 00:16:49,740 --> 00:16:53,080 el IDE 387 00:16:53,080 --> 00:16:55,100 las claves primarias 388 00:16:55,100 --> 00:16:56,980 están indexadas automáticamente 389 00:16:56,980 --> 00:16:59,059 las claves primarias 390 00:16:59,059 --> 00:17:01,179 están indexadas automáticamente 391 00:17:01,179 --> 00:17:02,240 el resto de campos no 392 00:17:02,240 --> 00:17:04,920 entonces si yo lo indexo 393 00:17:04,920 --> 00:17:06,940 pues automáticamente 394 00:17:06,940 --> 00:17:09,160 el gestor de base de datos ya se habilita 395 00:17:09,160 --> 00:17:11,119 un mecanismo para encontrarlo 396 00:17:11,119 --> 00:17:11,779 más rápidamente 397 00:17:11,779 --> 00:17:13,220 ¿qué son números? 398 00:17:13,700 --> 00:17:15,180 ¿Qué mecanismo se habilita? 399 00:17:15,539 --> 00:17:17,099 Pues meterlo en un árbol ordenado. 400 00:17:17,240 --> 00:17:19,619 Entonces, si tú quieres recuperar uno, no vas uno por uno, 401 00:17:20,000 --> 00:17:22,440 sino que vas a la zona del árbol correspondiente. 402 00:17:24,240 --> 00:17:26,380 Entonces, siempre conviene indexar los campos 403 00:17:26,380 --> 00:17:27,859 para los que se van a hacer muchas búsquedas. 404 00:17:28,039 --> 00:17:30,559 Y luego, además, si le ponemos una anotación, 405 00:17:30,980 --> 00:17:32,380 que eso también podría ser en la de fill, 406 00:17:33,480 --> 00:17:36,799 pues podemos, al menos, sí poner alguna pequeñita. 407 00:17:40,779 --> 00:17:42,839 Podemos ponerle este aviso a MongoDB. 408 00:17:42,839 --> 00:17:44,940 Decir, oye, que este campo va a ser único 409 00:17:44,940 --> 00:17:46,819 ¿Vale? Entonces, bueno, algo ya 410 00:17:46,819 --> 00:17:47,700 Sí que podemos hacer 411 00:17:47,700 --> 00:17:50,359 Un pelinín de restricción, de lo poco que podemos hacer 412 00:17:50,359 --> 00:17:54,579 Pero este campo es un campo mío 413 00:17:54,579 --> 00:17:55,960 Entonces, que yo ahora quiero localizar 414 00:17:55,960 --> 00:17:57,980 Por códigos, quiero todo por código 415 00:17:57,980 --> 00:17:59,700 Pues me lo tengo que meter en el repositorio 416 00:17:59,700 --> 00:18:03,609 ¿Vale? 417 00:18:05,029 --> 00:18:06,390 Pues, esa 418 00:18:06,390 --> 00:18:09,390 Claro, me hago un índice 419 00:18:09,390 --> 00:18:11,269 Y el gestor de base de datos 420 00:18:11,269 --> 00:18:13,450 Ya se pone su mecanismo 421 00:18:13,450 --> 00:18:15,069 Para encontrarlo antes 422 00:18:15,069 --> 00:18:16,769 el que sea, ese mecanismo dependerá 423 00:18:16,769 --> 00:18:18,630 si son booleans, si son números, si son cadenas 424 00:18:18,630 --> 00:18:20,589 normalmente es 425 00:18:20,589 --> 00:18:22,390 ponerles en un orden, en un arbolito 426 00:18:22,390 --> 00:18:24,569 y así tú ya vas buscando uno, pues te quedas 427 00:18:24,569 --> 00:18:26,150 con la mitad del árbol que se corresponde 428 00:18:26,150 --> 00:18:27,369 y ahí te vas quedando por partes 429 00:18:27,369 --> 00:18:30,549 si no hay un índice, pues ya sabéis que se busca 430 00:18:30,549 --> 00:18:32,269 uno detrás de otro, uno detrás de otro 431 00:18:32,269 --> 00:18:33,869 recorre y eso es muy pesado 432 00:18:33,869 --> 00:18:40,269 Exacto, entonces 433 00:18:40,269 --> 00:18:42,769 claro, es una carga 434 00:18:42,769 --> 00:18:44,450 para el gestor de base de datos 435 00:18:44,450 --> 00:18:51,650 Pero si vas a hacer muchas consultas por ese campo, pues el balanceo, el coste-beneficio, se supone que va hacia el beneficio. 436 00:18:52,509 --> 00:18:59,450 Entonces, si queremos usar este para hacer consulta, para hacer lo que sea, pues eso nos obliga a irnos a nuestro repositorio. 437 00:19:01,309 --> 00:19:05,910 Nos obliga a irnos a nuestro repositorio y ahora ya hacer métodos propios. 438 00:19:06,569 --> 00:19:09,690 Pues bueno, métodos propios como buscar por otro campo. 439 00:19:09,690 --> 00:19:12,150 Que esto es como el Spring JPA que hemos visto 440 00:19:12,150 --> 00:19:13,150 Find by 441 00:19:13,150 --> 00:19:14,930 Código 442 00:19:14,930 --> 00:19:19,430 Claro 443 00:19:19,430 --> 00:19:21,069 Esto ya está 444 00:19:21,069 --> 00:19:22,250 No lo tienes que hacer 445 00:19:22,250 --> 00:19:25,369 No, este no, porque esto es buscar 446 00:19:25,369 --> 00:19:27,230 No, el que te viene es por ID 447 00:19:27,230 --> 00:19:29,529 El find by código no 448 00:19:29,529 --> 00:19:30,869 Ese lo tienes que hacer tú 449 00:19:30,869 --> 00:19:32,089 Porque el código es un campo que has hecho tú 450 00:19:32,089 --> 00:19:37,869 Los que te vienen 451 00:19:37,869 --> 00:19:39,269 Si yo este no le tengo 452 00:19:39,269 --> 00:19:43,609 Los que te vienen solos son 453 00:19:43,609 --> 00:19:46,009 Recuperar todos, borrar por clave 454 00:19:46,009 --> 00:19:47,529 Pero la clave por la id 455 00:19:47,529 --> 00:19:50,150 Pero tú esta la puedes poner 456 00:19:50,150 --> 00:19:51,470 La idea es que lo tenías que poner 457 00:19:51,470 --> 00:19:53,710 Pero ya entiende que el código es un atributo 458 00:19:53,710 --> 00:19:56,369 Sí, entiende 459 00:19:56,369 --> 00:19:57,990 Claro, eso ya entiende que es un atributo 460 00:19:57,990 --> 00:19:59,210 Entonces 461 00:19:59,210 --> 00:20:02,269 Pues bueno, podríamos gestionarlo así 462 00:20:02,269 --> 00:20:03,869 Hacer ya nuestro servicio 463 00:20:03,869 --> 00:20:10,829 También en este caso 464 00:20:10,829 --> 00:20:12,410 en el repo 465 00:20:12,410 --> 00:20:14,730 podríamos hacer también 466 00:20:14,730 --> 00:20:18,960 tarea delete 467 00:20:18,960 --> 00:20:19,740 by 468 00:20:19,740 --> 00:20:23,079 código 469 00:20:23,079 --> 00:20:28,289 este que él no te lo ofrece por defecto 470 00:20:28,289 --> 00:20:29,609 porque no es el campo id 471 00:20:29,609 --> 00:20:31,250 lo podríamos hacer también 472 00:20:31,250 --> 00:20:33,549 lo podríamos hacer también 473 00:20:33,549 --> 00:20:39,180 y aquí ya en nuestro 474 00:20:39,180 --> 00:20:40,440 servicio 475 00:20:40,440 --> 00:20:47,359 pues podríamos hacer 476 00:20:47,359 --> 00:20:51,519 nuestro deleteTarea 477 00:20:51,519 --> 00:20:58,240 este deleteTareaId le vamos a llamar 478 00:20:58,240 --> 00:21:01,740 y al otro deleteTareaNormal le podríamos llamar 479 00:21:01,740 --> 00:21:07,240 deleteTarea 480 00:21:07,240 --> 00:21:09,519 claro, deleteTareaNormal 481 00:21:09,519 --> 00:21:15,670 ¿alguien ha llamado? ¿sí o no? 482 00:21:15,670 --> 00:21:16,589 no sé 483 00:21:16,589 --> 00:21:35,309 Vale, pues podríamos trabajar así 484 00:21:35,309 --> 00:21:36,549 Con nuestras propias claves 485 00:21:36,549 --> 00:21:39,109 En el insert lo podríamos modificar, etc 486 00:21:39,109 --> 00:21:40,470 Vale 487 00:21:40,470 --> 00:21:42,170 Último método 488 00:21:42,170 --> 00:21:44,630 El último método que queremos hacer 489 00:21:44,630 --> 00:21:47,210 Imaginaos que ahora 490 00:21:47,210 --> 00:21:48,849 Queremos añadir un ítem 491 00:21:48,849 --> 00:21:50,470 Porque nuestro inserta 492 00:21:50,470 --> 00:21:52,970 Añade el documento, nuestra tarea 493 00:21:52,970 --> 00:21:53,650 Sin ítems 494 00:21:53,650 --> 00:21:56,890 Ahora podría ser que quisiéramos añadir un ítem 495 00:21:56,890 --> 00:21:59,470 Vale, a una tarea en concreta 496 00:21:59,470 --> 00:22:01,029 Pues bueno, el controller 497 00:22:01,029 --> 00:22:03,589 Nuestro controller, ¿cómo sería? 498 00:22:08,109 --> 00:22:09,509 Bueno, pues nuestro controller 499 00:22:09,509 --> 00:22:10,490 Aquí 500 00:22:10,490 --> 00:22:13,970 Esto es una modificación 501 00:22:13,970 --> 00:22:16,089 Que lleva 502 00:22:16,089 --> 00:22:18,069 Tanto en el body datos 503 00:22:18,069 --> 00:22:19,069 Los datos nuevos 504 00:22:19,069 --> 00:22:20,690 Como en el id 505 00:22:20,690 --> 00:22:21,990 Lleva también parámetros 506 00:22:21,990 --> 00:22:24,849 Que es el id de la tarea que quiero yo borrar 507 00:22:24,849 --> 00:22:26,750 La tarea de la que quiero añadir ítems 508 00:22:26,750 --> 00:22:29,369 Entonces, esto en un GET 509 00:22:29,369 --> 00:22:31,130 No debería ir 510 00:22:31,130 --> 00:22:33,710 ¿Vale? Podría ir en un POST 511 00:22:33,710 --> 00:22:35,690 Pero para esto 512 00:22:35,690 --> 00:22:36,670 En principio 513 00:22:36,670 --> 00:22:38,750 Se suele usar 514 00:22:38,750 --> 00:22:41,569 El otro protocolo de HTTP 515 00:22:41,569 --> 00:22:42,430 Que es el PUT 516 00:22:42,430 --> 00:22:45,589 Normalmente asociado a modificar 517 00:22:45,589 --> 00:22:46,730 Luego, normalmente 518 00:22:46,730 --> 00:22:49,069 GET asociado a recuperaciones 519 00:22:49,069 --> 00:22:51,970 POST asociado a inserciones 520 00:22:51,970 --> 00:22:54,289 DELETE asociado a borrados 521 00:22:54,289 --> 00:22:56,130 Y PUT asociado a modificaciones 522 00:22:56,130 --> 00:22:57,650 ¿Vale? 523 00:22:58,930 --> 00:22:59,569 Entonces 524 00:22:59,569 --> 00:23:01,490 Put y post 525 00:23:01,490 --> 00:23:04,769 Por ejemplo 526 00:23:04,769 --> 00:23:05,250 Si 527 00:23:05,250 --> 00:23:08,829 Put 528 00:23:08,829 --> 00:23:10,490 No te 529 00:23:10,490 --> 00:23:12,490 Inserta un recurso nuevo cada vez 530 00:23:12,490 --> 00:23:14,589 Es decir, si tu post le das a reenviar 531 00:23:14,589 --> 00:23:15,609 Reenviar y reenviar 532 00:23:15,609 --> 00:23:17,690 Cada vez te metería uno nuevo 533 00:23:17,690 --> 00:23:18,849 Put no 534 00:23:18,849 --> 00:23:20,150 ¿Vale? 535 00:23:20,950 --> 00:23:22,950 Put se sustituye solo 536 00:23:22,950 --> 00:23:25,789 Hay diferencias entre todos los protocolos 537 00:23:25,789 --> 00:23:27,609 hay diferencias sutiles entre los protocolos 538 00:23:27,609 --> 00:23:28,049 entre sí. 539 00:23:29,490 --> 00:23:30,690 ¿Vale? Pero bueno, eso... 540 00:23:30,690 --> 00:23:33,490 Independientemente de cómo funcione luego el método. 541 00:23:33,930 --> 00:23:35,470 Claro, luego el método lo que haga dentro, 542 00:23:35,690 --> 00:23:37,289 pero sobre todo 543 00:23:37,289 --> 00:23:39,289 las implicaciones que tiene 544 00:23:39,289 --> 00:23:40,529 es... 545 00:23:40,529 --> 00:23:43,529 Es en 546 00:23:43,529 --> 00:23:46,029 sobre el que... 547 00:23:46,029 --> 00:23:47,250 sobre lo que tú hagas 548 00:23:47,250 --> 00:23:49,430 con el mensajero, con el postman, 549 00:23:49,509 --> 00:23:51,490 con el navegador, pues en función de cómo lo 550 00:23:51,490 --> 00:23:53,490 hagas, ¿vale? Si reenvías y no sé qué, pues 551 00:23:53,490 --> 00:23:55,369 ahí están las diferencias. Luego lo que 552 00:23:55,369 --> 00:23:56,869 hacen, pues lo que esté en el cuerpo 553 00:23:56,869 --> 00:23:58,289 de la petición 554 00:23:58,289 --> 00:24:05,910 Sí, lo que pasa es que 555 00:24:05,910 --> 00:24:07,289 uno 556 00:24:07,289 --> 00:24:09,329 se dice que es 557 00:24:09,329 --> 00:24:11,430 idempotente, es decir, que está haciendo 558 00:24:11,430 --> 00:24:13,269 lo mismo una y otra vez, y el otro 559 00:24:13,269 --> 00:24:15,410 no, el otro te está haciendo inserciones nuevas 560 00:24:15,410 --> 00:24:17,220 cada vez 561 00:24:17,220 --> 00:24:20,380 Entonces, aquí, ¿qué ruta querríamos poner? 562 00:24:20,539 --> 00:24:21,799 Pues, items 563 00:24:21,799 --> 00:24:24,960 Vamos a llamarla 564 00:24:24,960 --> 00:24:27,160 AddItem 565 00:24:27,160 --> 00:24:28,259 ¿A quién? 566 00:24:28,799 --> 00:24:31,000 Pues al de código, el que sea 567 00:24:31,000 --> 00:24:34,059 Al de código, el que sea 568 00:24:34,059 --> 00:24:36,940 Entonces, vale 569 00:24:36,940 --> 00:24:38,859 Pues aquí 570 00:24:38,859 --> 00:24:40,339 PutMapping 571 00:24:40,339 --> 00:24:42,039 El método que sería 572 00:24:42,039 --> 00:24:45,359 Public, que nos devuelva 573 00:24:45,359 --> 00:24:46,160 La tarea 574 00:24:46,160 --> 00:24:53,339 A ver, es que lo voy a hacer por ID 575 00:24:53,339 --> 00:24:55,859 Porque como tengo todos los documentos 576 00:24:55,859 --> 00:24:57,259 Con id, todo el mapeo 577 00:24:57,259 --> 00:24:58,779 Eso lo había puesto solo 578 00:24:58,779 --> 00:25:00,099 Pues para, pero 579 00:25:00,099 --> 00:25:02,519 Pues 580 00:25:02,519 --> 00:25:04,660 Si me pongo a hacer parches 581 00:25:04,660 --> 00:25:07,200 Ahora, pero daría lo mismo 582 00:25:07,200 --> 00:25:09,119 Por uno que por otro, pero tendrían que tener códigos 583 00:25:09,119 --> 00:25:10,539 Vale, entonces, tarea 584 00:25:10,539 --> 00:25:12,259 Pues add item 585 00:25:12,259 --> 00:25:14,819 Ahora, este tiene 586 00:25:14,819 --> 00:25:17,940 Uno de estos 587 00:25:17,940 --> 00:25:20,460 Exacto 588 00:25:20,460 --> 00:25:22,619 Que va a ser el string id 589 00:25:22,619 --> 00:25:24,440 Y otro el body 590 00:25:24,440 --> 00:25:25,240 Efectivamente 591 00:25:25,240 --> 00:25:29,170 RequestBody que es el 592 00:25:29,170 --> 00:25:31,890 Ítem, con que sea un ítem es suficiente 593 00:25:31,890 --> 00:25:35,869 Ítem, ítem, el requestBody 594 00:25:35,869 --> 00:25:36,369 Vale 595 00:25:36,369 --> 00:25:38,329 Y ahora este que tiene que hacer 596 00:25:38,329 --> 00:25:40,069 Tendremos que hacer un método de servicio 597 00:25:40,069 --> 00:25:41,990 Servicio para 598 00:25:41,990 --> 00:25:45,230 Añadir un ítem 599 00:25:45,230 --> 00:25:49,470 Por id 600 00:25:49,470 --> 00:25:51,009 A este 601 00:25:51,009 --> 00:25:53,529 A añadir a este 602 00:25:53,529 --> 00:25:58,269 Tendremos que hacer este 603 00:25:58,269 --> 00:26:28,250 Y ahora hacemos este método aquí, este método, pues entonces, vale, a este método, rep, tareate, repo.findbyid, porque no lo he, no tengo códigos en los sitios, no tengo nada, findbyid de este. 604 00:26:28,250 --> 00:26:33,059 Y ahora, bueno 605 00:26:33,059 --> 00:26:35,039 Punto 606 00:26:35,039 --> 00:26:37,380 Lo saco del optional 607 00:26:37,380 --> 00:26:39,359 No, tan vaga no voy a ser 608 00:26:39,359 --> 00:26:41,779 Or else throw 609 00:26:41,779 --> 00:26:43,619 New 610 00:26:43,619 --> 00:26:44,920 Como no tengo excepción hecha 611 00:26:44,920 --> 00:26:47,420 Aquí lo bueno sería hacerse uno su propia excepción 612 00:26:47,420 --> 00:26:50,440 Runtime es 613 00:26:50,440 --> 00:26:51,099 Claro 614 00:26:51,099 --> 00:26:54,099 Pero bueno, voy a 615 00:26:54,099 --> 00:26:54,839 Ex 616 00:26:54,839 --> 00:26:58,740 Voy a poner una genérica y ya está 617 00:26:58,740 --> 00:27:04,380 Exception 618 00:27:04,380 --> 00:27:08,430 vale 619 00:27:08,430 --> 00:27:13,529 un time step 620 00:27:13,529 --> 00:27:14,509 new 621 00:27:14,509 --> 00:27:16,069 eh 622 00:27:16,069 --> 00:27:19,670 porque no, él se throw, una excepción 623 00:27:19,670 --> 00:27:21,549 no, lo único que quiere, ah bueno, espérate 624 00:27:21,549 --> 00:27:23,490 ah no, es que tengo que meterle un supplier, perdón 625 00:27:23,490 --> 00:27:25,650 perdón, un supplier 626 00:27:25,650 --> 00:27:27,670 ah sí, ahora sí 627 00:27:27,670 --> 00:27:30,880 vale, vale 628 00:27:30,880 --> 00:27:33,220 eso se llama supplier, si eres una 629 00:27:33,220 --> 00:27:35,220 lambda que no recibe nada y te da 630 00:27:35,220 --> 00:27:36,799 algo, vale 631 00:27:36,799 --> 00:27:38,980 pues entonces, ahora a esta tarea 632 00:27:38,980 --> 00:27:41,039 t.get 633 00:27:41,039 --> 00:27:42,039 items 634 00:27:42,039 --> 00:27:44,640 get items punto 635 00:27:44,640 --> 00:27:46,359 add items 636 00:27:46,359 --> 00:27:48,740 ahora ya tengo esta tarea 637 00:27:48,740 --> 00:27:50,559 y ahora repo 638 00:27:50,559 --> 00:27:52,599 punto save 639 00:27:52,599 --> 00:27:55,329 tarea 640 00:27:55,329 --> 00:27:57,549 vale 641 00:27:57,549 --> 00:27:58,890 que el 642 00:27:58,890 --> 00:28:05,339 exacto, te la devuelve también 643 00:28:05,339 --> 00:28:07,240 y yo aquí 644 00:28:07,240 --> 00:28:08,740 lo había puesto como 645 00:28:08,740 --> 00:28:11,359 tarea, pues aquí también en el service 646 00:28:11,359 --> 00:28:11,980 igual 647 00:28:11,980 --> 00:28:15,079 en el service que me devuelva la tarea 648 00:28:15,079 --> 00:28:17,319 actualizada 649 00:28:17,319 --> 00:28:21,240 retun 650 00:28:21,240 --> 00:28:24,519 vale, el método de servicio ya estaría 651 00:28:24,519 --> 00:28:26,819 que me devuelva la tarea actualizada 652 00:28:26,819 --> 00:28:28,759 lo llamo 653 00:28:28,759 --> 00:28:29,859 desde el controller 654 00:28:29,859 --> 00:28:32,859 que me está diciendo 655 00:28:32,859 --> 00:28:35,000 cosas porque me falta aquí 656 00:28:35,000 --> 00:28:35,579 un 657 00:28:35,579 --> 00:28:38,019 retun 658 00:28:38,019 --> 00:28:42,079 vale 659 00:28:42,079 --> 00:28:44,920 te guarda el objeto persistente 660 00:28:44,920 --> 00:28:47,380 O te lo sobrescribes y ya está 661 00:28:47,380 --> 00:28:50,200 ¿Vale? Te lo sobrescribes y ya está 662 00:28:50,200 --> 00:28:51,220 Que en este caso es lo que queremos 663 00:28:51,220 --> 00:28:59,230 Ah, si no lo harías 664 00:28:59,230 --> 00:29:00,549 Si no lo haces en el 665 00:29:00,549 --> 00:29:02,009 En el otro hemos hecho insert 666 00:29:02,009 --> 00:29:05,890 En el otro método del servicio 667 00:29:05,890 --> 00:29:08,170 Que lo insertábamos de nuevas 668 00:29:08,170 --> 00:29:09,650 Que no estábamos hecho el insert 669 00:29:09,650 --> 00:29:11,569 Entonces él ya te crea un id nuevo para él 670 00:29:11,569 --> 00:29:13,190 En el save 671 00:29:13,190 --> 00:29:15,230 No te crea un id nuevo para él 672 00:29:15,230 --> 00:29:16,730 Sustituye el que hubiera 673 00:29:16,730 --> 00:29:17,789 ¿Vale? 674 00:29:17,789 --> 00:29:21,089 vale, entonces yo creo 675 00:29:21,089 --> 00:29:23,089 que está todo, creo 676 00:29:23,089 --> 00:29:25,069 lo estamos haciendo un poco 677 00:29:25,069 --> 00:29:26,930 a lo gorrino, porque 678 00:29:26,930 --> 00:29:28,910 ni estamos haciendo excepciones 679 00:29:28,910 --> 00:29:30,970 ni estamos poniendo DTOs para cada parte 680 00:29:30,970 --> 00:29:33,089 que sería lo ideal, como hemos empezado con 681 00:29:33,089 --> 00:29:35,029 ID, estamos tirando con ID en lugar de haber 682 00:29:35,029 --> 00:29:36,349 hecho desde el principio un código 683 00:29:36,349 --> 00:29:39,250 pero bueno, sabéis de que va esto 684 00:29:39,250 --> 00:29:41,170 ya en el examen lo hacéis bien vosotros 685 00:29:41,170 --> 00:29:42,009 y no pasa nada 686 00:29:42,009 --> 00:29:50,230 Sí, bueno, persistente 687 00:29:50,230 --> 00:29:51,849 lo que pasa es que como el ID 688 00:29:51,849 --> 00:29:54,170 persistente ya es, porque lo he sacado de un find 689 00:29:54,170 --> 00:29:56,069 Bueno, a ver, no es persistente 690 00:29:56,069 --> 00:29:57,529 pero el contexto de persistencia 691 00:29:57,529 --> 00:29:59,690 ya se cerró, ¿vale? 692 00:30:00,329 --> 00:30:02,069 Entonces, lo que hace, esto no es como 693 00:30:02,069 --> 00:30:03,869 cuando lo hacemos nosotros directamente en JPA 694 00:30:03,869 --> 00:30:05,670 lo que hace el save, pues bueno 695 00:30:05,670 --> 00:30:08,450 si existe un ID con este, lo modifica 696 00:30:08,450 --> 00:30:10,450 ¿vale? Que en este caso va a existir 697 00:30:10,450 --> 00:30:11,529 pero lo he sacado con un find 698 00:30:11,529 --> 00:30:26,150 Es que 699 00:30:26,150 --> 00:30:33,750 Es que no sé muy bien 700 00:30:33,750 --> 00:30:35,289 Las transacciones en MongoDB 701 00:30:35,289 --> 00:30:41,470 Bueno, no, no es tan sencillo 702 00:30:41,470 --> 00:30:43,089 habría que mirarlo, no lo tengo muy claro 703 00:30:43,089 --> 00:30:49,950 claro, lo que pasa es que es cierto que como normalmente 704 00:30:49,950 --> 00:30:51,529 no trabajas 705 00:30:51,529 --> 00:30:53,769 de uno a otro, de uno te lleva a otro 706 00:30:53,769 --> 00:30:57,170 está más orientado 707 00:30:57,170 --> 00:30:59,690 a que está efectivamente todo recogido en el mismo sitio 708 00:30:59,690 --> 00:31:01,609 lo de las transacciones pierde un poco su 709 00:31:01,609 --> 00:31:03,769 pero no lo sé, no me he puesto a mirarlo 710 00:31:03,769 --> 00:31:05,710 en realidad, no me he puesto a mirarlo 711 00:31:05,710 --> 00:31:08,049 lo de las transacciones 712 00:31:08,049 --> 00:31:13,049 normalmente se pasan bastante por alto 713 00:31:13,049 --> 00:31:14,190 Cuando trabajas con MongoDB 714 00:31:14,190 --> 00:31:18,190 Vamos a probarlo 715 00:31:18,190 --> 00:31:19,309 A ver 716 00:31:19,309 --> 00:31:28,349 Vale, entonces 717 00:31:28,349 --> 00:31:29,789 Este era 718 00:31:29,789 --> 00:31:32,470 Delete e id 719 00:31:32,470 --> 00:31:34,029 No, delete e id no 720 00:31:34,029 --> 00:31:35,210 Add item e id 721 00:31:35,210 --> 00:31:38,829 Pues voy a añadirle yo un item a este 722 00:31:38,829 --> 00:31:45,619 Y los item 723 00:31:45,619 --> 00:31:46,599 Tienen 724 00:31:46,599 --> 00:31:51,990 Que tienen los ítems 725 00:31:51,990 --> 00:31:53,470 Descripción y completado 726 00:31:53,470 --> 00:31:53,910 ¿Verdad? 727 00:31:58,430 --> 00:32:00,609 Ítem tienen nombre y completado 728 00:32:00,609 --> 00:32:01,950 Tienen los ítems 729 00:32:01,950 --> 00:32:03,549 Nombre y completado 730 00:32:03,549 --> 00:32:06,859 Pues a ver 731 00:32:06,859 --> 00:32:10,640 Esto sería 732 00:32:10,640 --> 00:32:13,319 Add item 733 00:32:13,319 --> 00:32:16,220 Control V 734 00:32:16,220 --> 00:32:17,640 Esto sería put 735 00:32:17,640 --> 00:32:19,960 Y aquí hay que poner un cuerpo 736 00:32:19,960 --> 00:32:20,500 Además 737 00:32:20,500 --> 00:32:25,920 Que el cuerpo sería 738 00:32:25,920 --> 00:32:37,839 El cuerpo sería 739 00:32:37,839 --> 00:32:40,519 Nombre y completado 740 00:32:40,519 --> 00:32:41,299 Hemos dicho 741 00:32:41,299 --> 00:32:55,450 Completado 742 00:32:55,450 --> 00:32:57,890 True 743 00:32:57,890 --> 00:32:59,630 Vamos a ver esto 744 00:32:59,630 --> 00:33:01,710 Lo veo yo muy raro, pero bueno 745 00:33:01,710 --> 00:33:02,369 Nombre 746 00:33:02,369 --> 00:33:07,140 Dice ok 747 00:33:07,140 --> 00:33:10,890 Y aquí estamos 748 00:33:10,890 --> 00:33:12,589 El código null, efectivamente 749 00:33:12,589 --> 00:33:13,690 Este es el id 750 00:33:13,690 --> 00:33:16,930 Completado y los que tenía 751 00:33:16,930 --> 00:33:19,190 Más este, participantes, primera prueba 752 00:33:19,190 --> 00:33:20,509 Pues sí 753 00:33:20,509 --> 00:33:30,089 Aquí está, me lo ha modificado con el barra class 754 00:33:30,089 --> 00:33:34,519 Y aquí tengo 755 00:33:34,519 --> 00:33:35,359 El nuevo ítem 756 00:33:35,359 --> 00:33:37,539 Que ya he añadido 757 00:33:37,539 --> 00:33:47,539 Pues muy bien, me he apañado, ¿no? 758 00:33:49,380 --> 00:33:51,319 ¿Ya sabéis hacer un montón de cosas? 759 00:33:56,319 --> 00:33:57,319 Que va a entrar a la sala 760 00:33:57,319 --> 00:33:59,380 Sí, por favor 761 00:33:59,380 --> 00:34:00,279 Que...