Aprende Spring GraphQL | Ezekiel Eromosei | Skillshare
Buscar

Velocidad de reproducción


1.0x


  • 0.5x
  • 0.75x
  • 1x (Normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 2x

Aprende Spring GraphQL

teacher avatar Ezekiel Eromosei

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Ve esta clase y miles más

Obtenga acceso ilimitado a todas las clases
Clases enseñadas por líderes de la industria y profesionales activos
Los temas incluyen ilustración, diseño, fotografía y más

Lecciones en esta clase

    • 1.

      INTRODUCCIÓN

      1:18

    • 2.

      Beneficios de Graphql

      2:53

    • 3.

      Por qué Java 22

      4:30

    • 4.

      Colección Altair

      0:47

    • 5.

      Dependencias de Init Intellij

      6:15

    • 6.

      Dependencias de Init start.spring.io

      5:46

    • 7.

      Explicación de dependencias

      4:59

    • 8.

      Plugin de generación de código en dgs

      2:39

    • 9.

      Configuración del complemento Dgs y configuración básica de propiedades

      6:07

    • 10.

      Tipos básicos

      6:12

    • 11.

      Interfaz y Enum

      7:13

    • 12.

      Unión

      2:07

    • 13.

      Escalares extendidos

      7:13

    • 14.

      Configuración de Scalars extendida

      7:11

    • 15.

      Uso extendido de escalares

      7:17

    • 16.

      Tipo de consulta, parte 1

      7:40

    • 17.

      Tipo de consulta, parte 2

      3:45

    • 18.

      Tipo de mutación

      4:20

    • 19.

      Tipo de suscripción

      4:50

    • 20.

      Entidades en Graphql, parte 1

      7:52

    • 21.

      Entidades en Graphql, parte 2

      8:30

    • 22.

      Entidades en Graphql, parte 3

      3:03

    • 23.

      Entrada de entidades en Graphql

      8:07

    • 24.

      Entidad Jpa de la empresa

      8:13

    • 25.

      Entidad Jpa, parte 2

      8:40

    • 26.

      Por qué no usaremos relaciones de entidades en JPA

      3:44

    • 27.

      Convertidor de Enum

      10:30

    • 28.

      Cierre del problema en GitHub del convertidor Enum

      2:19

    • 29.

      Crea repositorios Jpa

      9:29

    • 30.

      Implemente solo el repositorio que necesita

      5:01

    • 31.

      Consulta inicial en Graphql

      8:56

    • 32.

      Consulta inicial en Graphql 2

      2:46

    • 33.

      Mutación inicial en Graphql

      7:16

    • 34.

      Mutación inicial en Graphql 2

      2:28

    • 35.

      Una consulta, una mutación

      2:43

    • 36.

      Traducción de verbos Http en Graphql

      9:26

    • 37.

      Traducción de verbos Http en Graphql, parte 2

      3:33

    • 38.

      Chasis del controlador de la empresa

      7:09

    • 39.

      Chasis del controlador de departamento y constantes generadas

      8:01

    • 40.

      Chasis del controlador de empleados

      4:59

    • 41.

      MaperUtil, parte 1

      9:31

    • 42.

      MapperUtil, parte 2

      8:16

    • 43.

      Servicio para mutaciones, parte 1

      8:06

    • 44.

      Servicio para mutaciones, parte 2

      9:42

    • 45.

      Servicio para mutaciones, parte 3

      7:40

    • 46.

      Servicio para mutaciones, parte 4

      8:08

    • 47.

      Servicio para mutaciones, parte 5

      7:58

    • 48.

      Servicio para mutaciones, parte 6

      5:06

    • 49.

      Servicio para mutaciones, parte 7

      7:54

    • 50.

      Prepararse para las pruebas

      4:44

    • 51.

      Prueba de mutación

      7:31

    • 52.

      Prueba de mutación 2

      7:54

    • 53.

      Prueba de mutación 3

      9:35

    • 54.

      Prueba de mutación 4

      2:58

    • 55.

      Prueba de mutación con Postman

      2:23

    • 56.

      Entidades en Bootstrap parte 1

      8:30

    • 57.

      Entidades en Bootstrap parte 2

      9:05

    • 58.

      Entidades en Bootstrap, parte 3

      8:12

    • 59.

      Entidades en Bootstrap, parte 4

      8:49

    • 60.

      Entidades en Bootstrap, parte 5

      9:04

    • 61.

      Entidades en Bootstrap, parte 6

      10:19

    • 62.

      Entidades en Bootstrap, parte 7

      6:43

    • 63.

      Servicio para consultas, parte 1

      7:42

    • 64.

      Servicio para consultas, parte 2

      10:14

    • 65.

      Servicio para consultas, parte 2

      10:14

    • 66.

      Servicio para consultas, parte 3

      9:41

    • 67.

      Servicio para consultas, parte 4

      3:00

    • 68.

      Servicio de prueba para consultas e introducción de nombres de tipo

      8:49

    • 69.

      Servicio de pruebas para Query 2 e introducción de fragmentos

      7:15

    • 70.

      Unión Grapqhl

      9:32

    • 71.

      Graphql Union 2

      5:28

    • 72.

      Uso de encabezados (sin QueryParam, sin PathVariable)

      10:32

    • 73.

      Uso de encabezados 2 (sin QueryParam, sin PathVariable)

      8:15

    • 74.

      Uso de encabezados 3 (sin QueryParam, sin PathVariable)

      8:11

    • 75.

      Prueba de encabezados (sin QueryParam, sin PathVariable)

      3:45

    • 76.

      Teoría de paginación en GraphQL

      7:06

    • 77.

      Paginación, parte 1

      7:45

    • 78.

      Paginación, parte 2

      9:04

    • 79.

      Paginación, parte 3

      8:54

    • 80.

      Paginación, parte 4

      7:33

    • 81.

      Paginación, parte 5

      9:59

    • 82.

      Paginación, parte 6

      8:56

    • 83.

      Paginación, parte 7

      8:47

    • 84.

      Paginación, parte 8

      9:36

    • 85.

      Paginación, parte 9

      9:10

    • 86.

      Paginación, parte 10

      9:06

    • 87.

      Paginación, parte 11

      10:14

    • 88.

      Paginación, parte 12

      7:00

    • 89.

      Paginación, parte 13

      8:50

    • 90.

      Paginación, parte 14

      9:32

    • 91.

      ExceptionHandling, parte 1

      8:45

    • 92.

      ExceptionHandling, parte 2

      7:56

    • 93.

      ExceptionHandling, parte 3

      2:46

    • 94.

      ExceptionHandling, parte 4

      5:59

    • 95.

      Validación, parte 1

      7:29

    • 96.

      Validación, parte 2

      8:20

    • 97.

      Validación, parte 3

      6:28

    • 98.

      Validación, parte 4

      5:27

    • 99.

      Teoría de sockets web

      5:42

    • 100.

      Websocket, parte 1

      9:45

    • 101.

      Websocket, parte 2

      8:03

    • 102.

      Websocket, parte 3

      11:31

    • 103.

      Websocket, parte 4 con excepción de clave duplicada

      6:41

    • 104.

      Websocket, parte 5

      7:08

    • 105.

      Instrumentación parte 1

      8:39

    • 106.

      Instrumentación parte 2

      8:29

    • 107.

      Instrumentación parte 3

      8:43

    • 108.

      Instrumentación parte 4

      10:14

    • 109.

      Instrumentación parte 5

      8:27

    • 110.

      Pruebas parte 1

      7:55

    • 111.

      Pruebas parte 2

      8:26

    • 112.

      Pruebas parte 3

      9:11

    • 113.

      Pruebas parte 4

      9:06

    • 114.

      Pruebas Parte 5

      9:16

    • 115.

      Pruebas Parte 6

      7:47

    • 116.

      Pruebas Parte 7

      7:31

    • 117.

      Pruebas Parte 8

      8:22

    • 118.

      Pruebas Parte 9

      9:27

    • 119.

      Seguridad en Graphql, parte 1

      8:13

    • 120.

      Seguridad en Graphql, parte 2

      3:53

    • 121.

      Seguridad en Graphql, parte 3

      8:50

    • 122.

      Seguridad en Graphql, parte 4

      8:02

    • 123.

      Seguridad en Graphql, parte 5

      5:58

    • 124.

      Seguridad en Graphql, parte 6

      6:50

    • 125.

      Seguridad en Graphql, parte 7

      5:29

    • 126.

      Seguridad en Graphql, parte 8

      11:48

    • 127.

      Seguridad en Graphql, parte 9

      9:01

    • 128.

      Graalvm local, parte 1

      9:38

    • 129.

      Graalvm local, parte 2

      8:04

    • 130.

      Graalvm local, parte 3

      8:46

    • 131.

      Actuador local de dockerfile en graalvm parte 4

      5:08

    • 132.

      Configuración de escritorio en Docker en Kubernetes

      9:15

    • 133.

      Kubernetes Comienza a usar Kubernetes

      3:55

    • 134.

      Instala el cliente kubectl en Kubernetes

      8:33

    • 135.

      Kubernetes explora y cambia de contexto

      8:22

    • 136.

      Espacio de nombres y proyecto de prueba base en Kubernetes

      11:32

    • 137.

      K8s pod 1

      22:59

    • 138.

      K8s Pod 2

      6:59

    • 139.

      Mapa de configuración de K8s pod 3

      16:56

    • 140.

      Reenvío de puertos v2 90p mejorado en K8s pod 4

      8:22

    • 141.

      Puerto de nodo de servicio K8s

      11:37

    • 142.

      Despliegue de K8s

      23:00

    • 143.

      Despliegue de prueba en K8s

      3:30

    • 144.

      CD de CI, parte 1

      3:45

    • 145.

      CD de CI parte 2

      11:42

    • 146.

      CD de CI parte 3

      8:23

    • 147.

      CD de CI parte 4

      8:57

    • 148.

      CD de CI parte 5

      8:52

    • 149.

      CD de CI, parte 6

      8:34

    • 150.

      CD de CI, parte 7

      8:36

    • 151.

      CD de CI, parte 8

      5:06

    • 152.

      CD de CI parte 9

      8:07

    • 153.

      CD de CI parte 10

      9:38

    • 154.

      CD de CI, parte 11

    • 155.

      Cliente Graphql 1

      8:10

    • 156.

      Cliente Graphql 2

      7:19

    • 157.

      Cliente Graphql 3

      8:29

    • 158.

      Cliente Graphql 4

      9:54

    • 159.

      Cliente Graphql 5

      9:19

    • 160.

      Cliente Graphql 6

      4:42

    • 161.

      Cierre

      1:14

  • --
  • Nivel principiante
  • Nivel intermedio
  • Nivel avanzado
  • Todos los niveles

Generado por la comunidad

El nivel se determina según la opinión de la mayoría de los estudiantes que han dejado reseñas en esta clase. La recomendación del profesor o de la profesora se muestra hasta que se recopilen al menos 5 reseñas de estudiantes.

4

Estudiantes

--

Proyecto

Acerca de esta clase

¿Te gustaría aprender a aprovechar GraphQL con Spring? Entonces este curso es para ti

Te enseña todo lo que necesitas saber sobre Spring GraphQL desde cero. Tomamos un enfoque pragmático basándonos en las secciones anteriores.

Dominarás por qué y cómo se comunica cada componente de GraphQL.

El curso también explica de manera pragmática cómo:

  • amplía los tipos básicos de GraphQL.

  • usa la instrumentación para crear lógica de validación adicional

  • Implementa Spring Authorization Server (Oauth2): credenciales de clientes en Granr

  • implementa el pipeline de CI/CD con acciones de Git

  • usa GraalVm para crear una imagen nativa según tu sistema operativo

  • interactúa con Kubernetes con los comandos de bajo nivel de kubectl para crear pods, servicios, implementaciones, mapas de configuración y reenvío de puertos

  • usa WebSocket para publicar eventos o mensajes

  • Repositorios JPA específicos de Spring Data para realizar tareas específicas

  • usa SpringBootTest con GraphQL, Junit y Hamcrest

  • Escribimos pruebas de integración efectivas para cubrir prácticamente todos nuestros casos de uso

Además del curso, aprenderás y/o destacarás un poco lo siguiente:

  • Contenedorización (Docker)

    • El curso te muestra cómo contenerizar nuestra aplicación. Es decir, crear imágenes

    • También ejecutamos la aplicación a través de comandos de Docker en el terminal

  • PostgresDB

  • Excepciones y validaciones personalizadas

  • Registros de Java

  • El iniciador de Spring Boot en Docker Compose y cómo usarlo en el desarrollo.

Conoce a tu profesor(a)

Teacher Profile Image

Ezekiel Eromosei

Profesor(a)
Level: All Levels

Valoración de la clase

¿Se cumplieron las expectativas?
    ¡Superadas!
  • 0%
  • 0%
  • Un poco
  • 0%
  • No realmente
  • 0%

¿Por qué unirse a Skillshare?

Mira las galardonadas Skillshare Originals

Cada clase tiene lecciones cortas y proyectos prácticos

Tu membresía apoya a los profesores de Skillshare

Aprende desde cualquier lugar

Ve clases sobre la marcha con la aplicación de Skillshare. Progresa en línea o descarga las clases para verlas en el avión, el metro o donde sea que aprendas mejor.

Transcripciones

1. INTRODUCCIÓN: Hola a todos. creador de Len Spring Modult Monats Mi nombre es Zeke Leamas, creador de Len Spring Modult Monats the Microservices sin problemas. Soy un ingeniero de software al que le encanta construir cosas y resolver problemas a través de la programación. Estoy aquí presentando mi segundo curso titulado LensPringGraph Este curso fue creado para permitir que los amantes de Java, los amantes primavera de los autos, los amantes de las botas y aquellos que esperan hacer la transición a la comunidad de primavera tengan un camino guiado implementar GraphQL con swing Este curso proporciona una ruta estructurada a medida que miramos el núcleo de GrapQL sin desviarnos del paradigma convencional de En otras palabras, no es necesario cambiar la forma de implementar swing o swing boot y al mismo tiempo implementar GraphQL Nos fijamos en secciones como paginación, manejo de excepciones, validación Pop servicio web socket, instrumentación, pruebas, seguridad con 02, construcción de una imagen nativa con GAVM, CICD usando acciones GID, e implementación en Cubertis para que usted tenga un extremo a extremo Promete ser achilrating. Sinceramente espero que vengas conmigo en este emocionante viaje. Por favor, encuentra el enlace en la descripción. Espero verte en el curso. 2. Beneficios de Graphql: Hola a todos. Z aquí. Todo bien. Como introducción a este curso, quiero explicar rápidamente qué son los beneficios de la señal gráfica. No pretendo este curso. Estos son videos para ser muy largos. Te voy a mostrar algunos de los principales beneficios de usar graph cue. El número uno es footprt de red bajo. número dos es la flexibilidad, que en realidad van de la mano. Voy a explicar ambos juntos. Ahora GAP Care le brinda la flexibilidad de quering solo lo que necesita Voy a demostrarte o mostrarte a lo que me refiero en términos de adyacingPLO solo en unos pocos bits Sólo tienes que seguir adelante. una ruta donde puedes consultar lo que necesites. A diferencia del aspecto del descanso, solo obtienes todo del servidor. Empiezas a manipular datos alrededor. No, hay un paseo por ahí, pero GAF Quel en realidad se adapta específicamente a este propósito Ahora, cuando tienes o estás tratando con toneladas de datos, un servidor está emitiendo muchos datos por cada solicitud o solicitud específica, GAF Qu DVD nivela tu billetera escogiendo una subsección de esa manera, podrías actuar el mismo servidor devolviendo ciertas Ahora para móvil, solo necesito un subconjunto para web, solo necesito otro subconjunto o probablemente qué toring móvil más algunas cosas adicionales Ahí es donde viene Graph Care. Podrías decidir qué quieres consultar, que es uno de los beneficios de usar GraphQL Ahora, otra cosa es autodocumentar, Graph KWL es autodocumentar Ahora, te voy a mostrar demostrando esto lo largo de los videos para que veas lo maravilloso que es esto. Pero es solo una selección previa para que ustedes puedan ver algunos de los beneficios principales de Graph Keywll Ahora continúe. Tomemos una muestra. Este conteo para la venta carga útil. Tomemos por ejemplo, usted está obteniendo estos datos, todos los datos están regresando a usted. Ahora bien, esto en sí mismo, que es el topping Gossy, son bastantes Digamos que solo necesitas el tipo de identificación y el nombre. La cura GAF te da este beneficio porque podrías decidir que, oye, esto es lo que eres como lo que necesitas para tu respuesta, y la cura GAF te quitará todo esto G quita todo esto, y básicamente tienes en esto. Vas a estar demostrando esta vida en los videos y vas a ver algunas cosas geniales, algunas cosas extra geniales. Alguien podría decir, no, quiero estos datos. Sin embargo, no necesito esto. Quiero esto fuera del camino. GofCare te da la posibilidad de patear y seleccionar exactamente lo que necesitas Cuál sería un beneficio genial de usar GAF Care. Es desarrollado por Meta, anteriormente conocido como Facebook, Spring en realidad hizo un hermoso trabajo al proporcionar un proyecto para apoyar realmente esto. Vamos a estar explorando esto en detalle en este curso. Miras cosas como manejo de excepciones, validación, socket web, el CICD implementando para cobertis varias otras cosas increíbles que vas a estar viendo Espero verte en el siguiente video. 3. Por qué Java 22: Hola, chicos. Genial tenerte de vuelta, ¿verdad? Bien, entonces en este video, quiero explicarte brevemente por qué estás usando Java 22, ¿verdad? Y razón principal por la que estás usando Java 22. La razón por la que estamos usando Java 22 en realidad es por esto, ¿verdad? Entonces, en algún momento de la aplicación, estaremos usando una validación para las entradas que están entrando al sistema. Entonces, como ustedes saben, confíen con el mismo modelo que Springbod sigue realmente De hecho, tenemos un proyecto que se llama validación de arranque Springbok Ahora, esa validación de inicio de Springbok básicamente funciona para versiones web, ¿verdad? Pero para este caso, si en realidad estás usando graph QL, estarás haciendo uso de esta biblioteca llamada GraphQL Java Y esto realmente funciona muy bien. Ahora bien, el problema, la declaración del problema de lo que realmente encontré fue el hecho de que estaba en la versión LTS, que es Java 20 porque me encanta usar la versión LCs, Pero por alguna razón, mientras intenté usar mientras intentaba usar esta versión, el Graph K Java me dijo validación para Java 21. Es decir, hay que especificar 21 aquí. Empezó a romperse y la flecha en realidad apuntaba sobre probablemente la sincronización con la versión JDK Eso me dio algunos problemas. Me tomó algunos días solucionar problemas. Lo que tenía que hacer tuve que buscar lo último, y pensé en mi cabeza, bien, si estoy teniendo estos problemas, probablemente alguien más lo habría descubierto. Pero pruebo la última versión, y boom, eso realmente funcionó, ¿verdad? Entonces esa es la misma razón por que en realidad decidí usar Java 22. Entonces por ninguna otra razón, esta sola razón, ¿verdad? Entonces estoy usando Java 20. Si anotas ahí, ves, te dicen que uses 210, significa que 21 punto cero debería estar aquí para Java 21, pero encuentro problemas. Entonces me estoy apegando a Java 22. Entonces surge la pregunta, ¿de dónde obtengo Java 20? Porque podría ser silencioso navegar por el sitio web de Oracle. Todo lo que necesitas hacer solo tienes que escribir JDK. Una vez que escriba JDK, llegue al sitio de Oracle, en realidad requerirá que se registre Una vez que te registres, todo lo que necesitas hacer una vez que ingreses ya registrado, así que me llevarán directamente. Ahora una vez que estás en, los archivos a los que realmente puedes ir, ellos tienen archivo, así puedes ir a Java Archive. Una vez que vayas a Java Archive, una vez que te quedes abajo, estaremos usando la máquina virtual grav Ves el deber de usar GAEM hacia el final del curso, pero al estar usando GravyN escoges GravM para JDK 22, salsa para DK 22 una vez que entras, tienes toda la versión Descarga la que en realidad te sea peculiar y que sea lo que necesites. Ahora, a medida que te configuras, es bastante fácil de configurar. Todo lo que necesitas hacer muy fácilmente. Como pueden ver este es mi PC. Acabo de colocarlo en mi unidad C. Probablemente podrías colocarlo en tus raíces estás usando Linux o si estás usando Linux o Mac o simplemente colocar un pliegue que puedas identificar rápidamente, extraerlo porque solid viene en un archivo Z, extraerlo tal como lo he hecho aquí. Luego colocar en la variable de entorno. No me gustaría mostrar mi variable de entorno aquí porque contiene algunos otros detalles que no sean el uso para otros proyectos. Te muestro en realidad una cepa, coloco tu variable de entorno. No se debe mostrar cómo configurarlo. Solo Google cómo configurar realmente las partes del hogar de Java. Esto es relativamente fácil. Pero si tienes problemas, aún puedes plantear cualquier duda y probablemente en realidad te deje una guía paso a paso sobre cómo hacerlo pero creo que es relativamente fácil. Haz esto y una vez que lo hayas hecho así puedo traer mi tiempo ahora. Estoy trayendo mi tiempo solo puedo decir versión Java y se puede ver que me estoy ejecutando en el 20 dos.o2 y la app GravoraCogav Una vez que tenga esta configuración, puede estar seguro de que podrá tener las cosas funcionando sin problemas. Bien entonces los veré chicos en el siguiente video. 4. Colección Altair: Oigan, todos. Este va a ser un video relativamente corto. Quiero mostrarte cómo importar ta Así es como lo haces. Una vez que abras un ti, ahora verías la izquierda a la esquina superior izquierda. Ves esta parte, solo haz clic en I puertos. Entonces, una vez que haces clic en los puertos, solo lo escoges. Entonces, una vez que elija la colección de alquitrán, haga clic en Abrir. Una vez que lo hagas, eso realmente entraría las cosas en. Ya tengo esto en. Por eso se puede ver un duplicado de ella, yo tengo esto y tengo esto. Yo solo sigo adelante y borro esto, ¿de acuerdo? Entonces esa es la forma sencilla de traerlo realmente. Simplemente haga clic en esto. Entonces ves el recurso. El recurso está realmente unido a este video. Simplemente escoge ese recurso, ábrelo y podrás ver la colección de ataques de audio. Todo bien. Nos vemos chicos el siguiente video. 5. Dependencias de Init Intellij: Hola, chicos, genial tenerlos de vuelta. Lo que vamos a estar logrando en este video es arrancar nuestras dependencias. Al comenzar un nuevo proyecto, necesitamos conocer las dependencias que necesitamos Voy a estar arrancando las dependencias, y lo estaré haciendo de dos maneras Voy a estar usando la versión definitiva de intelligen. Y por otro lado, ¿verdad? También estaría usando un resorte extendido el. Se inicia la primavera IO. Arranca el spring dot IO, lo cual voy a estar haciendo en un video de seguimiento. Entonces entremos en ello, lo que debes hacer es hacer clic en Archivo, luego ir a Proyecto. Después Botas de primavera. Al parecer, en realidad la construcción de una aplicación de arranque de resorte. Botas primaverales, entonces como pueden ver, ya estoy en mi gravIn 22, gravIn 22 Estoy grabando este proyecto en octubre. Bien, voy a ir a colocar octubre aquí. Esto justo más allá de mi aplicación. Yo sólo lo tengo toda la sección fuera. Voy a llamar a esto GraphQL CoS Graph QL, Cos. Entonces, me gusta usar mi apodo ZZ o Z. luego solo especifica como necesites Entonces vamos a estar eligiendo Java 23 aquí, ¿verdad? Sólo por estatus o mejor dicho, solo elegiré Java 21. Pero se puede ver que estoy usando JDK 22. No obstante, dentro del archivo de la bomba voy a cambiarlo, voy a mostrarles cómo hacer eso. Es relativamente fácil. Todo bien. Eso es básicamente lo que necesitamos. Estamos usando Maving usando Maven. Tienes Java, a lo mejor puedas usar Gov o Go Cutler lo que prefieras, me apegaré a esta Entonces al parecer es Java, luego paso a siguiente. Vamos a las dependencias del picker. Fresco. La primera dependencia que probablemente estarás escogiendo es web. Oh, sí, es web. Entonces la siguiente dependencia básicamente será picking es así que podrías estar preguntando por qué web. Recuerda, para la web, donde realmente estás usando web, supongo que en realidad haremos la explicación un poco más tarde. Simplemente escojamos rápidamente nuestras dependencias. Después siguiente parada, voy a poner la gráfica QL. Gráfica Q, resorte para gráfica Q que funciona. Impresionante. Entonces en el siguiente estaremos eligiendo el JPA, el Spring Data JPA, que es uno de los subproyectos bajo el periodo de datos de primavera La siguiente dependencia será el uso de Docker componer. Me encanta Docker componer. La componer te ayuda a arrancar realmente sin tener que especificar las propiedades. Eso es bastante impresionante. Estoy usando cuadros pull. TsingPullQares. Eso literalmente funciona, entonces estaremos usando Lumbar. Soy un gran fan de umbo, ¿verdad? ¿Correcto? Recogiendo lumbog De hecho, podrías eliminar todos los umbxupotsps de preferencia. Entonces vamos a ver. Creo que eso debería ser lo que necesito ahora mismo. A medida que avanzamos en el curso, luego agregamos las otras dependencias que necesitamos Coloco esto y mi proyecto arranca en este aspecto, esta ventana. Bien y las cosas están surgiendo. Todo lo que necesitas hacer si estás usando Java, si quieres volver a cambiar Ja diez. Recuerda, mencioné usar Java 22, ¿verdad? Yo sólo voy a entrar. Si ves que esto es Java 21, solo voy a cambiar esto a Java 22, y eso es todo lo que necesito hacer. Además, si realmente hago clic aquí, quinto clip clic derecho, desplácese hacia abajo. Verá la configuración del módulo abierto. Configuración del módulo abierto ir al proyecto. Lo configuraste en Java 22, que es Gaviu 22 que estoy usando Quiero mantenerlo como Gavia 22. Ya tengo este Gavia 22, ¿verdad? Gator, que básicamente es culpa de mi SDK porque si revisas los SDK, solo me moveré paso a paso Ir al modus, Modus debe ser 22. Al parecer no puede ser esto, tiene que ser 22, 22. Fresco. Entonces SD SDKs tienes que colocar en 20 para que veas una debución de nivel básico solo Así es como configurarlo realmente , estás usando Intelligent, pero para que apunte a un JDK en particular que tienes en tu sistema. Esto es por proyecto. Esta configuración es un proyecto SPA, así que no tenías que preocuparte por nada. Eso es una escuela. Yo regresaré al proyecto, tú lo configuraste. Ese es el nivel de idioma predeterminado por defecto es 22. Pero podría simplemente hacer solo elegimos este 22 o lo que prefieras Sólo por defecto. Eso es si demuestras que un valor por defecto es 22. Porque recuerden, hice esa Java mi versión Java en el último video y muestro que estoy usando K 22. El módulo y mostrar que establece su nivel de idioma a 22 de lo contrario tiene problemas. Después AKs, establece tu Sk 22, que es un gavio 22. Eso funciona bien. Entonces solo aplica esto Bien. Todo bien. Para que puedas ver escaneando a indexar, las cosas están subiendo. Todo bien. Bien. Fresco. Esto es bastante impresionante. Ahora he podido hacer esto. Así es como me encanta comenzar mi proyecto. Se podía ver que elegí la última versión porque la última versión funcionaría, y esto realmente debería ayudarnos a volar. Antes de continuar, creo que simplemente procedemos. Ahora bien, si nos fijamos en esta rehabilitación, entonces yo explicaría dependencias o qué hacen en los videos posteriores Ahora mismo, pasemos al siguiente video y vamos explicar Bostropi desde inicio primavera punto IO, veo chicos en el siguiente 6. Dependencias de Init start.spring.io: Hola, chicos. Gracias por volver conmigo. Todo bien. Así que quiero mostrar exactamente cómo podemos realmente arrancar usando start the Spingard IO Así que voy a refrescar esto. Entonces, una vez que vengas a iniciar un Spingard IO, todo lo que necesitas hacer es elegir el lenguaje Java, luego el gestor de paquetes Entonces voy a escoger voy a usar Combat Z. entonces lo llamaré una gráfica QO Cos Graph QO cos GvQo Cos Gráfica Q curso. Entonces pick enviado por ahora, luego en realidad escoge dependencia estar necesitando la web. Sí, vamos a necesitar GraphQL. Vas a necesitar componer, componer. Sí, vas a necesitar pocas, nosotros estaremos necesitando Lombok Apertura JPA. Todo bien. Podemos explorar esto mientras exploramos, ves exactamente cómo un pum se verá como esta estructura de proyecto Eso es exactamente lo que parece. Para que pudieras seguir adelante y generarlo. Una vez que generes, luego descarga dos veces solo voy a hacer se enseguida. Así que de inmediato. Esto es lo que he seguido adelante. Ya tengo una carga hecha. Simplemente lo coloco dentro de la carpeta particular aquí. Si solo lo coloco, solo lo descargaré y solo les mostraré chicos cómo extraerlo. Todo bien. Todo bien. He seguido adelante, he generado, lo he descargado. Ahí lo tienes. Así que simplemente lo extraes Batalis viene en archivo Z. Yo sólo lo extraigo. Sí. Entonces lo tengo extraído. Hay dos maneras de hacer esto, ¿verdad? Básicamente hay dos formas de hacer esto. Así que en realidad podrías usar dos métodos, ¿verdad? Les voy a enseñar ambos métodos sobre cómo hacerlo. Entonces el primer método va a ir archivo, luego elegir un nuevo proyecto existente. Esa es una parte. Vamos por la otra ruta. Archivo, haga clic en Abrir. Archivo, haces clic en abrir, luego yo navegaré. Voy a navegar en mi pantalla para no mostrar algunas de mis carpetas protegidas. Voy a navegar a ese lugar en particular hasta ese lugar donde descargué el proyecto. Ellos van enseguida, yendo ahí, he puesto una enorme carpeta anidada Solo trata de navegar por todo el camino. Todo bien. Entonces ahí lo tenemos. Ahí lo tienes he navegado a esta parte, solo eliges el caso gráfico de caso QL Una vez que solo lo eliges, yo solo, Bien ahora voy a abrir en esta ventana, vamos a abrir una ventana diferente. Esto será para leer tu oración y probar esto exactamente lo que es y darte todo lo que necesitas. Eso simplemente funciona bien. Entonces podemos entrar Voy a cambiar esto a 22, igual que hicimos en el último video. Entonces sólo voy a refrescarme. Una vez que me refresque, hago clic, voy a abrir Modelo seteen Recuerda, modelo de proyecto SDK. El proyecto primero, cámbielo a 22. Tú eliges 22 por aquí lo cual es genial, vas a modelos y vas a recoger 22 por aquí, C luego vas a SDKs y escoge Gram 22 Una vez que lo hayas hecho, bien. Ahora bien, podrías estar haciendo la pregunta, ¿cómo supo Intelligent que esto era Gavium 22 ¿Cómo se cargó aquí? Es simple. En el momento en que realmente configuras tu variable de entorno en Java home y comienzas inteligente, debería recogerla automáticamente, debería recogerla automáticamente. Bien, ahí lo tenemos. Luego haz clic en Bien, luego sigue adelante. Entonces esto en realidad está configurado y listo para usar. La alternativa, solo les voy a mostrar chicos en B bien. Segundo archivo alternativo nuevo proyecto a fuentes existentes. Una vez que haga esto, esto también abrirá algunos datos personales, así que simplemente lo abriré y luego navegaré hasta ese lugar. Yo voy a hacer. Una vez que lo hagas esto se abrirá una vez que hagas clic en Archivo Exisur seleccionar dict fuentes existentes Se ubicará toda la entidad de bombeo que cuenta con bomba de proyecto DXM GavDo y Grado KT Haz esto. Yo elijo esto por aquí, lo cual es un costo, entonces en realidad hago esto. Ahora debería preguntarte qué proyecto están construyendo para Aparentemente es Mving Ya está seleccionado, solo crea. Una vez lo hago para que pueda hacer esta ventana. Ves que esto realmente surge, ¿verdad? Porque lo he cambiado, por eso esto está aquí, cambia el 22, ven a abrir e ir a abrir la configuración del módulo, proyectar, cambiar esto y mostrar esto es 22, solo ve ahora 22 y SDK Por eso los módulos y show esto es 22, entonces los SDK son lo mismo Al parecer, una vez que lo has hecho, una vez que realmente hiciste esto más bien, entonces estás listo para ir. Todo bien. Eso realmente concluye cómo arrancar realmente las cosas con nuestras dependencias iniciales, y luego podemos pasar al siguiente Video 7. Explicación de dependencias: Hola, chicos. Gracias por regresar. Todo bien. Entonces en este video en particular, vas a explicar y tratar de pasar por el caso de uso o lo que realmente hacen cada uno de estos dependientes, ¿verdad Entonces creo que esto es bastante importante. Entonces, mientras estamos haciendo cualquier cosa y por qué estamos construyendo lo que realmente en, podemos ver fácilmente cómo se juntan todos y saber de qué biblioteca proviene. Todo bien. Bien, entonces Spring Bod inició datos JPA es en realidad de la familia de datos de primavera Y los datos de primavera, es más como si fuera un proceso abstraído o mejor dicho, permítanme decir que es una interfaz Déjame usar la palabra interfaz. Es más como un proceso abstraído como si no se viera la implementación central, que en realidad facilita el uso de datos para conectarse a bases Sin conexión per se, pero te ayuda a usar una capa para poder trabajar fácilmente con bases de datos. Para ser más específicos, puede trabajar con bases de datos tanto relacionales no relacionales En ahora en caso de que estés usando post quest. Algunos de los meollos de meollo son escribir los SQs y los serán para ser extraídos de una manera ya que si tuvieras que verificar las dependencias y vamos en el Spring Data JPA, también verías que contiene hibernación también verías que contiene hibernación Si estás familiarizado con la hibernación, que es el ORM, eso es en realidad el que se utilizará en la comunicación con Estar usando el estilo de primavera escribiendo código de primavera, y eso básicamente se traducirá a un idioma nativo que luego se pronunciaría luego no hablado que luego se utilizará para comunicarse a la base de datos de post ráfaga. Todo bien. Si nos fijamos en esto también, también tenemos un poco llamado aspecto aspecto. Aspecto primaveral, cierto, en realidad miras si realmente profundizas un poco, ¿verdad? Entonces el aspecto de resorte es en realidad parte de es en realidad una subsubsección del aspecto J, ¿verdad? Aspect J aspect J es más como lo que usas familiarizado con la primavera, programación orientada a aspectos. En realidad se extrajo del Aspecto J, ¿de acuerdo? Ahora bien, ¿qué es responsable de cosas como una transacción? Si estás enterado con una notación de transacción, lo que hace es que inicia un proceso, inicia una transacción antes que realmente intentes registrarte en una base de datos, y cuando ese proceso termina, cierra esa transacción. Todo está hecho por ti detrás de escena cuando usas esa anotación. Hablemos de GAF Care. GFC es el tipo principal que en realidad contendría que contienen la mayoría de los detalles que está utilizando para real a está abarcando para el gráfico de primavera QL Esta es la biblioteca de la que es totalmente responsable debería decir el proyecto? Entonces la web aparentemente necesita traer el contexto web de vez en cuando, y esto es básicamente nuestro responsable de eso. Si profundizas, vas a la web y entras, que puedas ver la web de primavera. Se puede ver contiene núcleo de resorte contiene núcleo de resorte. Si entras aquí, puedes ver que esto contiene contexto primaveral. Esto contiene contexto primaveral. Entonces estás sacando contexto de vez en cuando. Bien, entonces Docker Compose es muy sencillo. Todo lo que hace es que al agregar esto crea esto para nosotros. Eso fue traído en este expediente. Y ves que automáticamente arranca el camino para que realmente nos conectemos a un contenedor Docker Estamos hablando de contenedor Docker. Por lo que no necesitamos especificar todos los detalles dentro la aplicación o propiedades o aplicación de ñame Dmving esto más adelante en el curso, una vez que realmente quieres contenerizar porque como ves, si lo miras críticamente, en realidad es un es opcional, es opcional Si bien pretendemos entrar en producción o construir las características listas para la producción, tomamos algunos de los subpartis que lo colocan dentro del Yam off para Bien ahora postgas es el conductor va a estar usando la base de datos depose conectada, entonces umbog estoy seguro de que estás Lombog hace muchas decenas? Más como el código estándar, abstrae la mayor parte de él y genera un tiempo de ejecución para que básicamente lo usemos. Entonces tenemos todos nuestros trajes de prueba. Si ve, tenemos un flujo de manera traído. El motivo es porque mientras estamos trabajando a través de la aplicación, básicamente les mostraría algún lugar estará haciendo algunas cosas de prueba reactivas, usar GraphQL, automáticamente trae esto, y también tenemos la prueba Graph Q, que estará profundizando mucho en Creo que eso es básicamente todo. Espero verlos chicos en el siguiente video. 8. Plugin de generación de código en dgs: Hola, chicos. Gracias por volver conmigo. Muy bien, así que voy a revisar esto a un repositorio de GitHub, que voy a estar compartiendo. Todo bien. En realidad surge una pregunta. Cuando estamos escribiendo graph, usamos un script que tiene una extensión dot GraphQLS Eso es gráfico QL, eso es para primavera. Todo bien. Entonces surge la pregunta. Esta es una muestra. Esta es una muestra que vas a utilizar. Mira la muestra. Mi pregunta entonces es, ¿cómo vamos a poder conectar esto en el código Java, luego poder usarlo en la aplicación, muy simple. Para poder hacer esto, hay un plugin que viene automáticamente. También está en el inicio de Spring Dot IO. Vamos a empezar dospring dot IO. Estoy bien para comenzar o primavera IO solo voy a elegir un M Java, entonces solo actuaré para ver si estoy tratando de boostr desde el principio, web, luego graficar QL, hagamos DGS Se llama DGS. Este es un tipo. Cuando exploramos, como puedes ver, cuando exploramos, tiene este plugin completo, este plugin. Ese es este plougin en el que empezamos aquí. Yo traigo a este tipo. Entonces si bajamos, entonces agrega este tipo también, este azote. ¿Qué es el plugin? ¿Qué se supone que debe hacer? Bastante sencillo. Voy por delante para agregarlo, así que tenemos el enchufe aquí, así que lo he ddt adentro. ¿Qué hace esto? El plug in básicamente convierte ese script en un código Java, y está dentro de la carpeta de destino. You'ware, también podría ayudar a esto en carpeta de destino desde di dentro de la aplicación durante la prueba Estás probando tu aplicación, estás desarrollando. Cuando estamos empaquetando la aplicación, todo se une, ¿verdad? Esto nos da el apoyo total de lo que necesitamos. Necesitaba explicar ese poco. Hay algunas configuraciones extra, vamos a estar haciendo aquí, pero apenas empieza a mantener esto muy simple para que podamos saber exactamente para qué sirve esto. Esto es muy importante, chicos, muy, muy importante. Tenga en cuenta la versión, y por eso soy la versión divertida en realidad debería simplemente seguir la misma versión divertida porque recuerden, empecé con un tres que es cuatro, y estoy seguro de que eso es lo que me traerán aquí, ¿verdad? Bien. Bien, entonces dicho eso, veo chicos y el siguiente video. 9. Configuración del complemento Dgs y configuración básica de propiedades: Hola, chicos. Gracias por regresar, ¿verdad? Ustedes han sido increíbles hasta ahora. Queremos hacer un poco de configuración solo para limpiar las cosas. Bien, entonces tenemos las cosas en una forma adecuada. Lo primero que cambiamos es esto. Recuerda, tuvimos que escoger esto de Sat the spring dot IO. Esto apuntaba a un paquete equivocado. Entonces tenemos que hacer que apunte a nuestro propio paquete. Esto tiene que apuntar a nuestro paquete. Esto debería ser una C, luego Z, luego la gráfica QL curso Entonces queremos probablemente hacer que todo se genere dentro del código Gen. Lo que significa que todo lo que a la vez los archivos o los scripts se hayan convertido a código Java, los encuentre dentro de código gen Esto es muy, muy importante, chicos. Es muy importante. Bien, entonces esa es la primera parte. La segunda parte es la ruta del esquema, la ruta del esquema. Este quimiopat significa donde quieres colocar tus guiones, Ahora, por defecto, debido a que agregaste la dependencia para graph cual, spring ya se adelantó para crear una carpeta para ti. Y esta carpeta es la ruta por defecto que ya se elige por primavera, ¿verdad? Podrías cambiarlo, pero te aconsejo que no. Me gusta usar default, ¿verdad? Porque una vez que comienzas a cambiar alguna configuración, mi pab necesita comenzar a actualizarse para cambiar otra cosa para dar mis puntos, podría simplemente seguir en el inicio solo tener este efecto ripple, ¿verdad Me gusta mantener los impagos, excepto que estás completamente seguro lo que estás haciendo, ¿verdad Entonces lo que voy a hacer es cambiar esto. Entonces esto solo sería gráfico QL. Para mostrarles chicos, este es el valor por defecto. Si vas a aplicación o propiedades entonces simplemente escribe spring dot graph QL Gráfica Q punto ves Trayectoria. ¿Qué es esto? Usted ve esto. Esta es la ubicación para la gráfica Q schemop, cual es la parte de la clase, ¿verdad? ClasSpa es carpeta de recursos. La carpeta de recursos forma parte de la parte de la clase. Entonces tenemos GraphQ y todo lo que esté debajo de esta gráfica Q se cargará Puede tener carpetas dentro de carpetas. Entonces eso es lo que significa starstr. Carpetas dentro de carpeta y ella, pero solo me gusta colocar todo en una sola carpeta. En realidad solo lo aclaro. Voy a estar usando esto directamente, ¿verdad? Voy a estar usando estos cambios de base y también lo he actualizado. Ese fue el cambio que hice aquí. Quiero que ustedes sean un reloj vamos a la derecha otra vez. Esta parte era para cambiar el nombre del paquete así que en realidad lo confirma con nuestro proyecto. Entonces estaré generando todo dentro de un nuevo nombre de paquete llamado Co Jet. Cuando realmente construimos, cuando compilamos la aplicación, el código se genera dentro este paquete o carpeta, como puedes llamarlo. También te mostré que este es el valor por defecto que hay que hacer. Solo hagamos un trabajo extra. Vamos a crear aquí. Vamos a alejar esto. Me gusta usar Yarmofl Soy un gran fan de Me gusta usar aves Yermo, así que solo voy a seguir adelante y seguir adelante, quitar esto Bien, acabo de crear el archivo Yama. Simplemente hago clic y luego solo escojo esto con factor. Vamos a facetar este archivo y cambiarlo a Yama solo un gran fan de Yama Pero es el caso que no lo uso, pero me encanta. Significa que esto va a cambiar. Esto va a cambiar. Entonces esto entonces esto está bien. Entonces duplicaré esto. Entonces tendría dos perfiles. Estar usando un derecho local? Usando un local, también estaré usando un Docer. Estoy seguro de que sabes exactamente para qué sería eso. Docker. Simplemente lo voy a mantener tan simple como esto por ahora. O mejor dicho, Pablo podría simplemente dejar esto fuera por ahora. Cuando estemos listos para ir a Docker, entonces podremos crearlo y luego mover las propiedades aquí dentro de ahí y luego configurarlo correctamente ¿Qué voy a tener aquí? ¿Aquí dentro? Simplemente dejaré ahí el nombre de la aplicación de primavera. Al mismo tiempo, así que solo habilitaré la pisada virtual. Si solo digo banda de rodadura virtual, habilite banda de rodadura virtual, ¿verdad? A sus estoy usando la versión Java más allá de la t o superior. Yo sólo voy a aprovechar el futuro. Eso es genial. Creo que eso es básicamente todo. Eso es todo lo que tenemos que hacer por ahora. Entonces podremos entrar más adelante para empujar realmente esta cosa. A lo mejor otra cosa que pueda hacer ya ya ya que tú ya estás aquí, normalmente podría seguir adelante. Entonces hay algo que tenemos que hacer. Estoy tratando de comparar todo en un solo video. Simplemente hay tanto zumbido en mi cabeza. Básicamente podríamos habilitar el gráfico QL gráfico. Te voy a decir exactamente lo que esto significa. Hay una interfaz que nos da springys que ya forma parte de la aplicación. Que es gráfico Q. Vamos a poder ubicarlo en la base, esa es la IP, los puertos, entonces si tienes un contexto base, entonces el gráfico Q y funciona a través de él. Les voy a enseñar cómo funciona. Pero sin embargo, no lo estaríamos usando. Yo solo quería mostrarles que está disponible. Estaremos usando algo llamado neumático o neumático de neumático, como se llame. Eso es lo que estamos usando. Creo que esta configuración es suficiente. Entonces por último, también estaría configurando el JPA porque aparentemente estamos usando JPA Configure JPA, estaré usando un lote hibernado. Por ahora solo lo configuraré en actualizaciones. Entonces quiero mostrar mis SQL? Demostremos que todas las Qs son ciertas para que pudiéramos ver básicamente todas las cosas en realidad estaban funcionando. Creo que esto está bien. A partir de ahora, creo que entonces podremos empezar a meternos en algunos detalles extra. Entonces voy a revisar este auto y los veré chicos en el siguiente video. 10. Tipos básicos: Oigan, chicos, gracias por volver conmigo. Bien. Procedamos de donde paramos. En este video en particular, veremos los tipos básicos de GQ, los tipos básicos de GQ Gp QL solo admite cinco tipos básicos, que vas a estar viendo de inmediato. Bien. Recuerda de la última configuración, que realmente hicimos en el yamo de Pom Do como agregamos en el código gen Mv en plugin, especificamos que estaremos escribiendo todo nuestro código dentro de la gráfica de recursos principales Kio dentro de esta carpeta, ¿verdad Entonces esta parte es a lo que en realidad nos estamos refiriendo. Entonces iremos escribiendo, y llamaríamos en realidad crearía el archivo. Lo llamaré todo tipo de datos. Todos los tipos de datos, graficar QLs. Por favor, esto es bastante importante. Spring en realidad usa QL de gráfico. Ahora hay una diferencia, o debería decir, podría parecer una discrepancia, pero hay una manera separar realmente las cosas Cuando escribamos nuestra prueba, usaremos GraphQL Graph QL Pero para los principales scripts que vamos a estar usando en la aplicación es punto GraphQLS Comprobamos la documentación de primavera. Esto está claramente dentro de ahí. Vamos a crear esto. Impresionante. Tengo instalado un plugin. el momento en que empiece a usar Graph QLS, se le dará una sugerencia para un complemento De hecho, podrías verificar el plugin. Si voy a mis plugins. Si voy a mis plugins y una vez voy a mis plugins, entonces podría buscar gráfico Q. Este es Graph que que es proporcionado por Jedin en realidad podrías traer esto, traer esto y te voy a dar este simpático simbolo Ya que también te da algo muy interesante, que también se vería más adelante en el curso. Vamos a poner en marcha. Creas algo llamado tipo. Ahora bien, para esto, me voy a preguntar , ¿qué es el tipo? No entiendo de qué tipo es. Bueno. Tipo físicamente significa una clase. Tipo de Clase C con ver un tipo como una clase. Un tipo es una clase. Bien. No trates de ver cuán probablemente te estás alejando demasiado. Solo ten en cuenta que un tipo es una clase. Después yendo al tipo básico, simplemente los traeré rápidamente, así que tenemos una identificación. Un ID es de tipo cadena. Este ID es de tipo string, aunque es un ID liberal, es string. Entonces en el momento en que añades en este símbolo, este símbolo estás diciendo que es obligatorio. Este símbolo significa que es obligatorio. Siempre que veas este símbolo en particular, significa que es obligatorio. Otra cosa que podrías hacer, entonces podrías usar un commer. Entonces usa una coma, algunos no. Yo lo usaría indistintamente a veces y no lo usaría a veces, así que ya ves que realmente no tiene ningún efecto Entonces el siguiente, vamos a traer en realidad un datat nesta type es una cadena Bien, una cuerda. También lo hago componer. Espero que esto esté sincronizando. Una vez que usted o vea el símbolo, se compone lo mencioné, voy a ir de nuevo, ID. A pesar de que se llama ID, siempre es una vez que se convierte será de tipo string. También estoy usando el segundo tipo de datos que es de tipo string. Entonces pasemos al siguiente, H, He, que es de tipo int, ¿verdad? Que ya está pensando para los desarrolladores de Java. Solo significa entero para números, ¿verdad? Números que tienen precisión exacta, y no tienen ningún valor decimal. Fresco. Bien, sigamos adelante. Próxima parada. A continuación, traemos, usemos la altura. Alturas. Veamos la altura y voy a tomar eso como flotador. Este es el tipo de datos netos. El tipo de datos neto es un flotador. Ten en cuenta símbolo una vez que veas este símbolo, significa componer. Significa componer. En realidad podrías pup algunos comentarios aquí. Símbolo. Esto significa componer. De hecho voy a comprobar esto ya que en realidad se puede ver. Significa componer. Entonces finalmente, estolas apec estola es en realidad verdadera o falsa, que es un bullar Estos son los cinco tipos de datos que existen. Dentro de la gráfica QL Yo trato con sub tipo string, luego la cuerda, luego termina, luego flota, luego el bolardo, luego el bolardo Ahora bien, lo bueno o lo maravilloso es que ya hemos traído en esta parte en particular. Una vez que sales y haces una compilación en movimiento. Una vez que hagas una compilación en movimiento, verías exactamente lo que va a generar para nosotros. Hagamos eso. Bien, entonces compilar VN. Así que moviendo compilar, recuerda que estoy usando Java 22, que es el JDK gravin ya tengo una configuración en movimiento o tengo configuración en movimiento en el sistema, y eso es básicamente trabajar directamente Bien, entonces esto ya está hecho. Vamos. Recuerden, establecemos un camino aquí donde todo debería ser convertido en lo que es este particular es cogen No tenemos cogen en la carpeta principal, por lo que es generar dentro del target Vamos al blanco. Ves gráfica QL, cogen, causa cogen. Comprobemos lo siento. También revisaré las fuentes del generador que quise decir. Ves las fuentes del generador en la fuente generada ves C Z, grafica Q causa cogen vamos a comprobarlo. Los tipos. ¿Cuál es el tipo? ¿El tipo es de qué muestra? Veamos cuál es el generador. Voy a dividir esto a un lado. Voy a dividir bien, vamos a comprobar. Como puedes ver, este ID es de tipo string. El nombre es de tipo string. El int es de tipo integer. Las carrozas, no mencioné estas disculpas, es de doble Entonces el bolar es de tipo Bullard. Creo que esto es muy claro, chicos. Muy sencillo, muy claro. No hay necesidad de confundirse realmente. Estos son los cinco tipos básicos que realmente existen en la gráfica Q ¿cómo compilas? Usa tu maven VN, compilar NBN, compilar. Entonces, los veré chicos en el siguiente video. 11. Interfaz y Enum: Bien, gracias por volver conmigo. Todo bien. Veamos las interfaces y um, establecer interfaces y ums. Ese es el siguiente paso, interfaces y um. Veamos cómo se desarrolla eso físicamente. Veamos la representación de cura gráfica o los scripts para escribir realmente interfaces y noms Esto también es muy sencillo. Lo que voy a hacer, voy a usar una base de escenarios para hacerlo cantar realmente. la misma manera usamos interfaz, interfaz y usaré una interfaz animal. animal más duro, por decir que un animal tiene patas, en poner un int, hacerlo componiendo Entonces quiero decir que tiene pluma, tiene pluma, hazlo bullan El plomo se hunde en. Ahora sólo me estoy apegando a los tipos básicos. Entonces no podría decir un animal, queremos estar seguros de cuál es el color de un animal y nosotros tomando color. Vaya, ¿qué he hecho aquí? Acabo de introducir algo que no estamos usando. Debemos tratar de entender de la misma manera que funciona Java, donde realmente podrías usar, podrías encontrar una firma dentro una interfaz y usar una clase dentro de ella o usar una enum Lo mismo en realidad funciona en graph quo. cuando lo convertiéramos, veríamos exactamente en qué entraría realmente. Ese es el mismo concepto que estás siguiendo aquí. Esto se unirá en un poco. Vamos hacia adelante. Entonces vamos a crear una enum. M enamo trabaja nomotyp color. Soy como color stic ceja, estitan, palo ceja oscura, bueno usemos Ámbar. Podrías decidir usar recordar que te mencioné, podrías decidir no usar las comas Voy a trabajar como es, ¿no? Prefiero usar la coma porque acabo de ver que usar la coma realmente no cambia Como ya vengo de un fondo Java, solo tiene sentido usar coma, solo podría tener definitivamente una sola mosca en mi cabeza No tengo que preocuparme si necesito una coma o no. Puedes ver ahora que hemos creado una interfaz y es una enum ¿Cómo usamos la interfaz? Eso es muy fácil. Todo lo que tenemos que hacer vamos a sacar esto, darnos algo de espacio. Sólo dices tipo. Recuerda tipo es una clase, tipo perro I implementa un animal de interfaz. Ahora bien, para los scripts gráficos, a diferencia de cuando en realidad tienes un tipo gero y estás implementando una interfaz y los me gusta, en realidad debes Debes escoger todo. Todo debe existir. Bueno, esa es la desventaja. Ya ves que se estaba quejando pero Miller agregó que ya no se queja. Debes editarlo. Entonces puedo entonces entrar y agregar probablemente una característica más, dice atrás. ¿Un perro ladra? Sí, ladra verdad, intimidante Cualquier perro que no ladre no es un perro, no sé cómo llamarlo. Recuerde, cuando implemente una interfaz, debe asegurarse de que todos los atributos o los campos dentro de la interfaz deben existir. Dentro de la clase o el tipo que realmente está implementando Vamos a implementar dos más o vamos a tomar en un perro. Tomemos un perro. Un perro implementa animal. Lo mismo, recuerden, esto también tiene que venir en cada detalle tiene que entrar. Entonces, entonces si ves la señal estridente de que yo era él antes está apagado, entonces solo diré meneo bot Al parecer, estoy seguro que ustedes saben que un perro porque es bots la mayoría de las veces cuando los veo, solo sigo riendo. En esta entrada, genial. ¿Hay un bot de meneo de perros? Sí, lo hace. Entonces no tomaría uno más, hay un león. Ion implementa animal, y sabemos que vamos a tomar lo mismo. Recuerda, esta línea quiggly, te referías a dit in, boom, está apagado. Entonces para un león, decimos fila. Qué liras Vamos a darle otra um. Digamos una intensidad cruda. ¿Cuál es la intensidad de la fila? Voy a hacerlo obligatorio. ¿Cuál es la intensidad de la fila? Eso sería vamos a darle una enum. Di intensidad cruda. Intensidad. Diré en voz alta. Diré moderado, y voy a decir poco. Todo bien. Entonces, al parecer, mira lo que hemos hecho, construimos una interfaz, luego en realidad la implementamos, por qué mientras implementamos agregamos un campo extra aquí un campo extra allá. Todo este ejemplo vamos a entrar en detalles que usamos para el curso, pero solo necesitaba que esto fuera claro. También introducimos aquí un tipo num, ¿verdad? Así que simplemente seguimos de la misma manera que si has estado de la misma manera que estás familiarizado con OOP, estás familiarizado con cosas como interfaces y num Sólo te estoy dando una representación clara de cómo la tienes en la gráfica Q o dos. Todo bien. Así que esto hecho, esto realmente hace ver que cubrimos las interfaces. Clases cubiertas y hemos cubierto noms. Vamos pero esto. Construyamos esto. Lo que se les ocurre. Veamos compilar en movimiento. Así que hacemos tal vez compilar y los chicos pasando por y tiene compuesto, suite. Entonces entramos, veamos, veamos nuestra interfaz animal. Ya ves como nos da exactamente la misma representación, la forma en que vamos a tener una interfaz Java normal. Esto es lo que tenemos. No se molesten por estas cosas. Esta es solo parte de la notación utilizada en la generación. Realmente no estaríamos usando a estos tipos, ¿verdad? Entonces como pueden ver, ahora tenemos esto. Ahora tenemos más información. Qué información, dice Dog es un implementador, Doc es un implementador, un león es un implementador, lo cual es bastante genial. Comprobaremos el color. Verás, nos da un nom, exactamente como debería ser. Enum. La misma presentación g wow esto es bastante genial. Entonces echemos un vistazo a cada uno. Veamos la densidad correcta, lo mismo. Echemos un vistazo al perro. Guau, se puede ver que implementa animal, lo cual es bueno, implementa animal. Ahora bien, lo genial de las clases no te mencioné a todas las clases como constructor. Cada clase tiene un constructor. Si ves que cada clase tiene un constructor y puedes tener una compilación, puedes brotar cada una de ellas. Eso es algo muy maravilloso creo que codificó gens. De hecho puedes tener un constructor por cada um, perdón por cada tipo. Bastante genial, hemos podido mirar interfaces, hemos podido ver cómo una clase o un tipo implementaría una interfaz. Soy capaz de mirar num y compramos todo juntos. Creo que en realidad esto es sincronizarlo. De hecho, podrías repasar el video una vez más para ver cómo funciona realmente. A veces te confundes desde el principio pero después mientras se pone simplemente se vuelve más natural. Entonces los veré chicos en el siguiente video. 12. Unión: Bien, gracias por volver conmigo. Bien. Este será un video relativamente corto. Bien, entonces ahora quiero presentarles para separar este video para mayor claridad. Ahora vamos a traer un tipo más, ¿no? Entonces hay un concepto en graphqe llamado union, ¿verdad? Se llama unión. ¿Y qué es la unión? Unión simplemente significa un tipo que devuelve dos o más tipos. Voy a repasarlo otra vez. Union es una combinación de dos o más tipos o algo que devuelve dos o más tipos, y eso sería muy importante para nosotros cuando estamos desarrollando cuando tenemos regresar igual que en el caso de un tipo Java o un objeto Java que pueda devolver cualquier cosa. De hecho podríamos hacer una unión de dos o más tipos y devolverla. De esa manera podríamos devolver cualquiera de ellos o ambos o cada uno de ellos en realidad se compran juntos. Voy a llamar a este perro doc. león. Solo dale algo más Perro entonces esta es una sintaxis Dc y esta es la sintaxis, entonces adelante. Bien. Ya ves que podría traer esto, podría encadenarlo. Así es como usar un sindicato. Sigamos adelante y compilemos. Vamos a compilar. Veamos cómo se ve. Fresco. Esto está hecho. Ahora entremos y veamos lo que hemos hecho. Como puedes ver, mirándolo críticamente un pato Perro perro león nos da una interfaz y ¿qué? Se muestra que el implemento o los tres que se combinan juntos un perro, dc un león. Puedo estar preguntándome ¿por qué no solo usé animal? ¿Por qué no solo usé la interfaz que no sea esta? Verías cómo se desarrolla todo una vez que intentes devolver los objetos. Verás que hay esta dinámica donde vamos a estructurar las cosas y va a ser bastante interesante saberlo. Entonces, gracias chicos. Los veré chicos en el siguiente video. 13. Escalares extendidos: Bien, chicos, gracias por volver. Alguien podría estar preguntándose. ¿Son estos los únicos tipos de datos o son los únicos tipos básicos que vas a usar? ¿Ningún otro tipo de datos? ¿Y si quiero lidiar con dinero y necesito un decimal grande para mayor precisión o largo para tratar probablemente con una versión menor? O necesito la moneda tipo Java. ¿Cómo voy a hacer esto? Hay una buena noticia, chicos, y la buena noticia es que tenemos una biblioteca de soporte que hace esto, que es la gráfica kyo Java escalares extendidos Guau. Bien, así que esto está disponible. Lo genial está disponible. Veo que podrías tenerlo en Java 20, Java 21 o GK 20 enk 22, Estaremos trayendo esta biblioteca, y si bajáramos un poco, puedes ver que todos los escalares personalizados están disponibles Tenemos datetime, tenemos bits, tenemos tiempo. Oh, este es Podisomn. Entonces tenemos un concepto llamado extremos positivos, extremos negativos, no positivos, extremos no negativos, a veces solo para, voy a traerlo. Voy a traer esto entonces voy a hacer alguna explicación de lo que quiere decir cada uno de estos tipos. Entonces sabemos cómo proceder. Bien, entonces iré a mi pum. Voy a copiar Voy a copiar la dependencia. Iré a mi pum. Vendré aquí justo antes de la prueba y la colocaré en, construimos. Boom, esto realmente entra, yo encare las cosas. Todo bien. Entonces ahora que tenemos eso en fresco ¿cuál es el siguiente paso? El siguiente paso que vas a dar, es que necesitamos cablear. Tenemos que configurar esto para aceptarlo para aceptarlo. Tenemos que configurarlo para aceptarlo. ¿Y cómo lo hacemos? Hay un par de formas en las que vamos a hacer eso y hacer que eso suceda. El primer paso es, necesitamos realmente crear una configuración. Necesitamos crear una configuración que la configuración sea todo lo que ayuda a traer esto. Yo lo llamo configuración y esa configuración, lo llamo config. Luego publique bit config, entonces en realidad lo llamaré GraphQL Entonces al parecer esto sería una configuración de configuración. ¿Todo bien? Entonces, ¿cuál es el siguiente paso? El siguiente paso es que vamos a traer algo llamado configuración de cableado de tiempo de ejecución. No voy a hacer esto. No me lo estoy inventando, chicos. Es exactamente exactamente la forma en que la configuración realmente estadía. si ves, dice que realmente use, tienes que traer en el momento equivocado el cableado de tiempo equivocado y agregar esto en. Si estás usando spring, si estás usando spring para Graph care, que es lo que estamos usando, tienes que crear una configuración aG care configs el nombre no responde luego comenzar a cablear cosas Trae todos esos escalares extendidos u otros tipos de datos que quieras traer aquí Eso es exactamente lo mismo que estamos haciendo aquí. Yo solo entraré y el Bam Bam y lo haré público aunque sea innecesario que tuvieras público ahí. Haz de pines para ser visto para que no necesites publicarlo. Tiempo de ejecución cableado configurar es lo que necesito. La configuración es lo que necesito. Quiero tener la configuración de cableado del mismo nombre. Sí. Después siguiente parada, volveré, lo devolveré directamente. Entonces traes una configuración de cableado que ya está disponible para usted Configurador de cableado y luego llama a I'sAll wiring Builder. Constructor de cableado usando Constructor, luego puntos. Eso está muy mal. Lo siento, solo a los constructores de cableado les falta eso. Constructor de cableado y luego constructor de cableado. Puntos, luego escalar. Así que empieza a traerlos uno por uno. Puntos escalares extendidos, ins no negativos o ins negativos. Pero explique esto en un poco negativo int. Entonces encadenarlo, escalar. Entonces solo presionemos un control D sobre Intellij. Entonces solo estoy muy arriba, ¿verdad? Simplemente cambiaré esto a ins no negativos a non No, sí, flotadores no negativos Creo que la forma en que está etiquetada realmente debería comenzar a darnos una definición intuitiva de lo que es. Quiero decir un positivo en eso significa un flotador positivo un positivo flota Entonces traemos un non en flotadores no negativos, entonces necesitamos un largo, al parecer Largo se define como gráfico largo. Después las fechas van a traer combustible gráfico como fechas. Entonces si necesitas datetime, nosotros en datetime. Entonces si necesitas un gran decimal, un gran fan del bit decimal, me encanta Becimal Aunque es caro, pero funciona, entonces vamos a traer la moneda Java, luego traer moneda, swop currency Todo bien. Entonces una vez que hayas terminado con esto, entonces solo llamas a la construcción de puntos. Todo bien. Esto trae en la primera configuración que necesitamos. Esto es una Persis, cómo la traes. Vamos a explorar uno de ellos. Si vas a Graph care si haces un clic de control o simplemente lo abres y mira la definición. Como pueden ver, va todo el camino hacia abajo. Ahora veamos el uso. El uso en realidad llama Java privativo Graph big decimal. Vamos a abrir esto. ¿Correcto? Nosotros lo denominamos gráfico tipo cicatriz Q decimal grande. Veamos, bajemos a ver el uso, Vamos a símbolo educado por el usuario. Vayamos aquí abajo. Como pueden ver, entra y trae el decimal grande. Al parecer pero una vez que tengamos esto acumulado, nos va a dar un decimal grande, un decimal grande. Todo bien. Yo sólo quería señalarlo. A lo mejor deberíamos revisar uno más. Si revisamos uno más echemos un vistazo a nuestro largo. Comprobamos largo va Java primitivo largo, una cola larga. Si ve el uso por aquí, en realidad dice que una descripción larga es 64 B con signo entero. Sabemos exactamente qué es esto, que es exactamente correcto, nos genera un largo que realmente funciona. Bien. Todo bien. De día, solo trata de explorar para que no te lo explique. Estoy tratando de mantener el video más de 8 minutos. Volvamos en el siguiente video para ver las otras configuraciones que necesitamos hacer para que esto funcione. Los veo chicos en el siguiente video. 14. Configuración de Scalars extendida: Muy bien, gracias chicos por volver conmigo. Muy bien, entonces, ¿cómo procedemos? Ahora, lo siguiente, si estás trayendo unos escalares extendidos Graph QO no lo sabe, así que necesitamos informar a Graph Ker respecto, ¿y cómo lo hacemos? Creamos un nombre de archivo, pero me encanta llamarlo escalar Vamos a llamarlo punto escalar GraphQL. Recuerda, Gráfica QS, S es importante. Entonces cuando empiezo a traerlos uno tras otro en función de cuáles son los tipos que quieras usar. Uno por uno, se define un escalar, escalar de int negativo negativo Sólo estoy siguiendo este tipo aquí. Voy adelante para no perder el tiempo, solo voy a cantar los otros adentro, solo agrégalo. Negativo en flotadores no negativos, debería llegar a apostar. Entonces esto entonces positivo ints flotadores positivos, flotadores positivos positivos, flotadores no negativos No negativo, dupliqué esto, necesito quitar esto. Flujos no negativos, recójalo. Entonces necesitamos aquí necesitamos un flotador no positivo, no positivo positivo. Flotadores no positivos, entonces tenemos un largo el gráfico largo entonces tenemos el decimal grande Tenemos el decimal grande para el decimal grande entonces tenemos las fechas, entonces las fechas, luego tenemos las fechas para dt y moneda. Ahora bien, se puede ver que la convención de nomenclatura realmente no sigue Sí, no sigue. algo muy importante que realmente tenemos que hacer. Pero vamos a mapear esto primero de todo lo que necesitamos realmente traer en el escalar y eso es muy importante reversa Entonces después de traer eso en el siguiente paso es entonces ¿cómo lo convertimos? Cómo vamos ahora sólo hemos registrado esto. Sólo lo registramos como runt que vamos a estar usando esto. Estaremos usando un tipo de bit decimal, usando long, usándolo. Pero sin embargo, cogen no es consciente porque recuerden, cogen está estrictamente haciendo que converta para nosotros, pero no es consciente de este tipo que acabamos de comprar ¿Cómo hacemos que cogen sea consciente? Este tipo que vamos a estar usando la sincronización con lo que va a ser usado como runt muy sencillo Después ve a nuestra bomba XML. Una vez que vas a un poXML, si revisas la documentación correctamente, ahora es necesaria, digo, la documentación original para coden estaba en Gdos hecho en Gdo Yo era una comunidad que en realidad lo portó a Maven, pero tiene muy buen apoyo, lo cual es bastante impresionante Lo que tenemos que hacer tenemos que añadir algo llamado. Déjeme tomar esto. Déjame solo dejarla. Ese algo llamado mapeo de tipos. Mapeo de tipos. Básicamente, se ve el tipo mapiner. Desea asignar un escalar a un tipo de datos del que Java es consciente Que mientras esto está construyendo, reconocerá el escalar que estás usando así que estás usando un decimal grande para saber exactamente cómo se verá el decimal grande dentro del código, ese mapeo se va a hacer El escoger el script y convertirlo en código Java, escoger el script y cubrirlo a código Java. Eso es exactamente lo que es. Entonces, ¿cómo se vería esto? Ahora que tenemos todo esto hecho, esto es algo en realidad esto por aquí, este es un tipo escalar que es reconocido por GraphQ vamos a hacer la Conversión, el primero que usamos es negativo Int, usar exactamente el mismo nombre, negativo Int. Int negativo, ¿verdad? Entonces me quitaré esto. Déjame usar un escalar. Escalar más preciso Tan negativo Int, ¿verdad? W tomamos el Int negativo, a qué queremos mapearlo quiero mapearlo a Java punto Lang inte Jar Ahora, volveremos para ir a revisar la documentación para ver qué significa esto. Pero antes que nada, terminemos esta parte. Ahora necesitamos un int no negativo. Hay una t no negativa. un int no negativo, también lo mapeamos a un entero. Nosotros solo quiere decir que no debe ser negativo. Lo vemos, lo vemos brevemente. Entonces, ¿qué es un flotador no negativo? Recuerden, tenemos estos flotadores no negativos. Simplemente soy demasiado perezoso para escribir. Ninguno negativo se mapeará para mapear a double. ¿Qué pasa con el int positivo? El int positivo? Al parecer, se puede adivinar esto ya, se mapeará a entero. Veo que ven chicos, esto es bastante sencillo. Entonces, ¿qué pasa con el flotador positivo? Al parecer habrá un doble. ¿Correcto? ¿Qué pasa con los flotadores no negativos, el flotador negativo no positivo quise decir, flotador no positivo también será un doble. ¿Qué pasa con un largo? Un largo. ¿Qué pasa con un largo? Lo adivinaste, va a ser un largo. Entonces, ¿qué pasa con un decimal? ¿Un gran decimal? Un gran decimal, estoy seguro que también lo adivinaste, esto no sería Esto se encontrará en las matemáticas Java Eso es un gran decimal. Bastante dulce. ¿Qué pasa con la fecha? Una fecha. Seguro que sabes exactamente lo que va a ser. Fecha, voy a mapear mi fecha a Java hora fechas locales, probablemente quieras pensar en tal vez Java, YouTube y empezar a buscar, todavía hay una función de fecha? Hay una fecha, pero no, quiero usar su preferencia. Sabes exactamente la marca que estás buscando. Entonces fechas hora, al parecer, yendo por mi línea de pensamientos, ya sabrías que quiero usar fechas locales tipo. Y finalmente, para la moneda, aunque no vayas a usar moneda, vas a usar moneda. La moneda básicamente vendrá de la clase de moneda, ¿verdad? No debería estar seguro de la moneda. Moneda. Digamos que moneda Java es ese plus en este momento. Déjame buscar eso. Ese será ese debería ser el YouTube. Moneda Java UT Glesn escogió, recuerda, no podía recordar dónde estaba. Todo bien. Entonces ya hicimos el mapeo. Así que esto es genial, ¿verdad? Ahora, cuando construyamos esto, podremos ver que nuestro negativo en cualquier lugar que usemos negativo dentro de nuestro tipo de datos, si usas una t no negativa, automáticamente será un entero y usamos un float no negativo para ser un doble. Entonces vamos a ver eso en acción, pero estos videos ya se están haciendo tanto tiempo. Así que volvamos en el siguiente video y realmente construiríamos esto y para mostrarnos exactamente en qué se marcará esto porque lo vamos a usar. Entonces al mismo tiempo, también exploramos la documentación para ver qué significan estas cosas. Entonces los veré chicos el siguiente video. 15. Uso extendido de escalares: Bien, gracias por regresar, chicos. Les mostré en el último video cómo traer esto. Voy a hacer un rápido recapitulativo. En primer lugar, traes una dependencia. Que es grafica Q Java escalar externo. Estoy apuntando a 22 Java 22 porque estoy usando Java 22. Resumiendo Java 21, voy por Java 21. Pero recuerden, me quedé con Java 22 porque habrá una parte de validación con la que tenemos que tratar. Bien. Primero lo primero, tienes que configurar todos los tipos que necesites, ¿verdad? Configurar el toque es bastante sencillo. Aquí es un constructor, así que solo configuras todo. Después se replica el mismo escalar dentro de una gráfica QLs. Dale para que luego puedas usar estos escalares para tus tipos, nums y lo que pretendas Una vez que hayas hecho eso, el siguiente paso, que es el paso número tres es que necesitas configurar porque los asesinos de GF no saben lo que significan estas cosas, verdad? No sabe lo que significa. Pero sólo se trata de cinco tipos básicos. Entonces, para que sepas exactamente lo que significa esto, necesitamos ahora hacer mapeo de tipos. Diciendo en cualquier lugar que veas final negativo usa un entero. Ves un flotador no negativo usa un doble. Ves una fecha, usas un dt blanco local, y ves un usuario de moneda y el Java, dices moneda. ¿Bien? Entonces esta es una parte de configuración. Ahora veamos la definición. Es bastante sencillo si lo piensas bien, ¿verdad? Entonces veamos la definición. Entonces pasando por esto, así ves, int positivo, int positivo, es decir, un entero en escalar debe ser mayor que cero Detengamos un int no positivo, en escalar que debe ser menor o igual a cero Por lo que significa que no debe ser negativo. Lo siento, no debe ser positivo o no positivo. No debe ser c menor o igual a cero. Podrías adivinarlo si miras lo no positivo, así que debe ser menor o igual a cero, eso es realmente un bocado Por eso ahí estaba chocolate. Realmente es un bocado. Pero esta es mi recomendación. Esta es mi recomendación. No tienes que usar todo esto. Ahora bien, este es un lugar por lo tanto hay algunas restricciones apretadas. Eso es lo que es útil. Pero sin embargo , recuerden, todavía vamos a hacer alguna forma de validación de nuestra parte. ¿Correcto? Las validaciones no terminamos, seguimos encubriendo No queremos que algunos valores arbitrarios signifiquen el tipo de valores Usar la menor cantidad de escalares posible, excepto que esto es muy obligatorio Si yo dijera, diría para cosas como negativos, ins positivos, ints no negativos, o el tt en él, el tipo de datos básicos int es suficiente El tipo de datos básicos, la gráfica básica ca tipo int es suficiente. Pero esta es puramente mi opinión. Yo no soy definitivamente podrías tener una opinión diferente solo haz lo que funcione para ti. Pero solo estoy aconsejando cuanto menor, mejor, no compliques demasiado Prácticamente podría entender cuando ahora estás trayendo el tipo local, la señal Garf, la excavación Decimal, la dosis larga son esenciales Pero por todo esto, que son bastante bocados, solo usa solo lo que necesites. Todo bien. Dicho esto, hemos podido encontrar esta documentación que en realidad pongo a disposición. Esta documentación ya está disponible en la sección de inicio o sin embargo, probablemente solo reestructuraré y la pondré a disposición antes de este particular este video en particular Así que en realidad tenemos este enlace para que lo exploremos más. Entonces, ¿qué es lo siguiente que queremos hacer? Bien. Ahora que trajimos todas estas corbatas increíbles. Es natural que lo usemos, ¿chicos? Creo que deberíamos usarlo, ver cómo funciona. Déjame agregarlo a mi muestra. Volvamos a mi muestra y déjenme solo darle algunos comentarios, solo diré otros tipos escalares, otros tipos escalares, solo lo llamo escalares extendidos Ahora vamos a verlas en acción. Sólo voy a hablar unos pocos. Yo solo diré aves de datos, aves de datos. Fecha de nacimiento, ¿verdad? Recuerden, no voy a poner un comino aquí. Probablemente solo voy a hacer eso deliberadamente solo para que veamos cómo funciona. Fechas. Recuerda, no es escoger estas fechas. ¿Cómo lo sé? Cómo haga clic en la cultura. ¿Ves? Yo salta aquí directamente. Es bueno elegirlo. Bien, así que eso es genial. Eso es genial. Eso es genial. Bien, así que procedamos. El siguiente, usemos algo más es importante. Siguiente, sueldo. ¿Correcto? Entonces para los países que usan cosas como tal vez en Nigera usamos adoquines NIR digamos para EU, para usar probablemente centavos de dólar, para algunos otros países que tienen un Yo soy de una fuerte opinión que el pulmón es realmente bueno. Así que no tienes que preocuparte por esos tipos de datos, y esa pequeña pieza decimal falta, y una vez que falta, tu mal podría causar un corte de tejido, ¿verdad Porque el dinero es muy importante, ¿verdad? Siguiente paso, entonces usemos el dinero. Dinero usemos bi decimal para dinero para representación. Entonces usemos número de lápices. Acerca de pen sel, justo sobre lápiz quiero un no negativo. Les voy a mostrar chicos que no sabía lo que esto significa. No negativo. Tiene que ser positivo. Es una boca para ello. Entonces moneda, ¿verdad? Moneda, voy a usar la moneda, Es esta moneda Java la que tenemos aquí. Y por último, solo usemos uno más. Solo agreguemos uno más. Simplemente llámelo creado el. Creado en el paso de fechas tiempo, que es un villano para mirar fecha y hora Bien, ¿esto funciona? Ah, también tengo curiosidad por averiguarlo. Entonces compilar NBN. Y veamos qué pasa. Oh, sí, tenemos esta gran dependencia. Bien, veamos qué pasa. Bien, eso es ser exitoso. Entonces chicos, también tengo curiosidad como ustedes. Tengo curiosidad. Vamos a saltar. Veamos los tipos, vamos a comprobar, muestra. Vamos a abrir esto. Fresco. Como puedes ver, Java time, mira fecha. Nuestra conversión funciona. Hurra. Entonces, si traigo esto solo para comparar, estamos viendo Mi dinero debería ser grande decimal. Como puede ver, el decimal grande va a los tapetes Java, decimal grande. Si revisas esto, vayamos a las entradas. Se Tapetes Java. La conversión funciona con éxito. Entonces la moneda va hacia ella en realidad va a la moneda Java util. Esto funciona. Esto es rápido o chicos, veloz o algunos tipos. Entonces el largo largo también va al Java Lang, largo, Java Lang, luego el largo. Esto es simplemente Impresionante. Chicos, así es como se llega a usarlo, ¿verdad? Entonces puedes ver ahora podemos entonces al crear nuestras entidades o probablemente nuestros DTOs, entonces podemos definir todos los tipos que necesitamos y luego definir todos los tipos cuando hagas la configuración por aquí Una vez que hayas hecho la configuración, crea tu escalar solo hay un recapitular, luego ven a la bomba, luego define a qué se debe traducir el escalar Una vez que hayas hecho eso, entonces puedes usarlo como nosotros. Muy bien, chicos. Los veré chicos en el siguiente video. 16. Tipo de consulta, parte 1: Hola a todos. Gracias por volver conmigo. Todo bien. Entonces queremos discutir tres tipos especiales en gráfica QL, tres tipos especiales en gráfica QL Y el primer paso que estamos discutiendo es una consulta, ¿verdad? Es una consulta, el primer paso estamos discutiendo una consulta, ¿ verdad? Y ¿qué es una consulta? Entonces voy a añadir algunos comentarios. Entonces dices que la consulta son todas las lecturas. Todas las lecturas, tú lo haces. Lo haces en HTTP, eso implicaría eso involucraría en una Multitud, esa es la R, la R en multitud. Sólo estoy tratando de dar tantos ejemplos como sea posible. Di que quieres obtener uno, quieres obtener uno, leer leer usuario, como cualquier video que estés haciendo, cualquier video que estés haciendo cae bajo tu tipo de consulta. Cualquier video que estés haciendo cae bajo el tipo de consulta, y ¿cómo construimos el tipo de consulta? Ahora, un tipo de consulta ahora alberga todos los puntos finales de codificación. Voy a usar esa palabra con cuidado, todos los extremos de codificación a los que vas a estar llamando Un ejemplo típico será que vas a tener que decir que quieres ir a buscar, quieres ir a buscar Digamos, tenemos una muestra aquí. Estaremos usando tipo de muestra. Quieres ir a buscar una muestra. Es una muestra de hechos, entonces hay que pasar, hay que pasar en el nombre de la variable. Entonces básicamente llámalo el ingreso de muestra fetch. Primera muestra imputa. Físicamente, no la sintaxis, imputa la primera muestra. Ahora bien, ¿por qué estoy usando imputes? Entonces, en realidad , entonces definamos fetch. Muestra, imputa. ¿Qué es esto? Yo. Entonces se pone como, Oh, esto se está volviendo más complejo. Bueno, en realidad, no lo es. Entonces obtenemos una respuesta y la respuesta nos dará una muestra. Ahora, ahora bajemos un poco. ¿Qué es una muestra? La forma en que funciona en la gráfica QL, cuando intentas consultar una gráfica QL, debes o bien pasar lo que llamamos un Java, lo que llamamos un primitivo nosotros, esos cinco tipos básicos, pasas en esos cinco tipos básicos, o pasas en tu o realmente pasas en el tipo escalar extendido, o pasas en Tenga en cuenta esto con mucho cuidado, pasa esta entrada. No te aceptará usando una clase. No aceptará usar una clase o un tipo. Si estás intentando realizar una consulta, debes pasar una entrada. Una entrada normalmente se vería así. Requiere una palabra clave, entrada. Bien, entonces podemos crear la imputa de muestra fetch. Entradas de la primera muestra. ¿Y por qué estamos consultando? Esto luego contiene los datos por los que nos consultan. Digamos que estamos consultados por el ID, y también estamos consultando por el nombre Tomaré esto con claridad. Voy a tomar esto muy despacio otra vez. Siempre que estés haciendo una consulta, siempre que estés haciendo una consulta, bien, debes pasar o bien debes pasar los cinco tipos básicos, o pasar los escalares estándar, o pasar en una entrada No aceptará el tipo. Probemos esto. Entonces digamos que en realidad quiero ir a buscar, vamos a dar otro ejemplo aquí Estoy diciendo buscar muestra también, y luego estoy tratando de pasar un objeto de muestra Yo sólo llamo a esta muestra. Después le paso una muestra. Esta muestra que realmente existe es un tipo veamos qué nos da. Devolver una muestra. ¿Puedes ver esto? Verá, el tipo sample no es un tipo de entrada, sino que se utilizó como tipo de entrada. Necesitaba entender esto. Para que puedas pasar un tipo regular, que es una clase. Si quieres, todo lo que necesitas hacer es crear un tipo de entrada, luego mover todos los campos ahí dentro, igual lo tenemos aquí. Entonces, por favor, tenga en cuenta que cuando intentas qu no acepta una clase, toma un tipo de entrada. Verás más cuando entremos en el proyecto principal con el que vas a estar tratando o con el que trabajarás en esto y por supuesto, pero en realidad necesitaba explicar vamos a repasarlo desde el principio. ¿Cómo funciona de nuevo? ¿Todo bien? Siempre que quieras hacer todas tus lecturas como un usuario get, el usuario gordo obtiene más como si estuvieras leyendo de una base de datos o estás leyendo puntos finales de corte que básicamente se usan para leer como la R en una multitud Ya sabes, la R es una lectura en crudo, ¿verdad? Tienes el create read o gets delete. R es la lectura. Si quieres hacer algo que sea una lectura, debes someterlo dentro de un tipo de consulta, ¿verdad? Dentro de un tipo de consulta, y eso es muy, muy importante. Entonces habiendo explicado esto, ten en cuenta, solo puedes recibir un tipo Impute, o si quiero hacer esto, entonces puedo seguir adelante y pasar una identificación Ves esto funciona, funciona porque puedo usar el Java puedo usar los tipos primitivos. Pero cual es la gráfica tipo básico que quiero decir. O en realidad podría decir que quiero pasar en un decimal grande. Se puede ver que también acepta un decimal grande. Así que voy a repasarlo otra vez como un resumen. Cuando intentas hacer una consulta, una consulta aceptará solo un tipo intut como parámetro Aceptará ya sea los tipos básicos de GraphQL o los tipos escalares extendidos, pero no aceptará un tipo de clase, ¿verdad Eso es muy, muy importante saberlo. Ahora bien, esto es solo te estoy presentando uno, Proyecto de estudio propiamente dicho, ves exactamente lo que es. Entonces con esto hecho, vamos a compilar rápidamente y ver esto va con éxito oh, sí, compilar y eso se está moviendo a través y luego, se somete con éxito Si tuviéramos que navegar rápidamente en esa carpeta en particular y ver cómo se ve, verías que no necesariamente tenemos una consulta aquí no hay consulta aquí. Pero si revisas tu constante de excavaciones, constantes excavaciones a menos que esté configurado para consulta, Y busca consulta, como puedes ver. Entonces esto es exactamente lo que creaste. En realidad es una clase en sí misma. Recuerda que mencioné, cada tipo es una clase. Pero esta vez, esto se utilizará para definir nuestros puntos finales cuando realmente lo estemos creando, ¿verdad? No quiero entrar en estos detalles porque cuando estás mirando te ves confuso, pero cuando todas las piezas empiezan a juntarse, a entender los conceptos básicos y cómo funcionan estas cosas y cómo encaja todo. Pero lo que debes saber por ahora es que cuando quieres crear un punto final para una lectura, sujeto dentro de un tipo de consulta, luego corta la definición que deseas, cortas la variable, lo que recibe, debe ser una entrada, ya sea de tipo básico o escalar que te den la respuesta Con eso, los veré chicos en el siguiente video. 17. Tipo de consulta, parte 2: Bien, chicos, muchas gracias por volver. Bien. Entonces, en el último video, realidad miramos el tipo Quervy, que es uno de los tipos especiales que se usa para leer, ¿verdad? Y también definimos también definimos la firma que se utiliza. Te pasa la consulta, te pasa realmente pasas en una variable que esta. Entonces alguien podría hacer la pregunta. ¿Puede tomar múltiples? Oh, sí, en realidad puede tomar múltiples. En realidad podría, podría decir entrada dos. Imputa dos, y también recibo otro argumento y de hecho podría decir que quiero que esto sea un gran decibal Esto también funciona. Puedes tener múltiples de la misma manera. Tienes de la misma manera que lo tienes para un tipo HTTP que pasas en varios argumentos. Esto también puede funcionar. Pero tenga en cuenta amablemente, prefiero sugerirle que siempre coloque todo dentro de un solo tipo de lámpara. Pero si necesitas más, simplemente haz clic en varios tipos de lmpu y de hecho pasarlo. Vamos a ver la sintaxis. Solo te estoy presentando cómo se ve la muestra cómo se ve básicamente la sintaxis. Entonces, introduje aquí algo muy clave, que es este corchete. ¿Qué es un corchete? Tenga en cuenta que un corchete significa simplemente una lista. Un corchete significa una lista. Ahora editar como comentario es corchetes. El corchete significa una lista. Entonces, cuando ves un cubo cuadrado, significa una lista. Ya definí antes que una vez que veas este símbolo, el símbolo básicamente es obligatorio. Entonces significando debes dar una muestra de respuesta. Ahora bien, esta es la respuesta en sí misma. En el momento en que tienes el nombre de los puntos finales que quieres usar, entonces dentro del dentro de los corchetes, en realidad estás colocando cuáles serán los tipos vacíos Después seguido de una columna, entonces en realidad tienes las manchas rojas. Y una vez que veas un corchete, significa una lista, ¿verdad? Espero que no estén confundidos, ¿verdad? Podrías intentar ver el video para poder obtener los conceptos con claridad. Pero puedo asegurar que usarás toneladas de ejemplos, estaremos usando toneladas de ejemplo una vez que entremos al curso mientras estamos cortando todos los puntos finales, y esto básicamente se hundiría Entonces, una vez que ves un corchete, en realidad significa una lista. Y este pack también significa obligatorio. Entonces, ¿alguien puede mirar esto? Cuando en realidad hago esto, ¿qué significa? Simplemente significa que estoy devolviendo una lista, es decir, estoy devolviendo obligatoriamente una Como señalar que soy obligatorio devolver una lista y el objeto que estoy devolviendo es de tipo muestra, y también es obligatorio. Esto significa que estoy devolviendo uno o dos de un objeto de muestra porque debo devolver una muestra. Pero sin embargo, no es obligatorio, me sale una lista. Podría conseguir un solo objeto, pero estoy seguro de uno o más. Eso es lo que significa. Pero por aquí, significa que estoy seguro de más de uno. Por eso la lista es obligatoria. Espero que este concepto realmente canta vaya a repasar algunos otros tipos y lleguemos a ver cómo se desarrolla realmente. Eso es impuso. Eso es impuso. Como diría más adelante, voy a comentar todo esto porque cuando estudiamos cuesta correctamente, seríamos el mismo proyecto, no me gustaría que el nombre realmente entre en conflicto. Eso es justo por el. Bien, eso se está diciendo, los veré chicos en el siguiente video, y en realidad empezaríamos a mirar el segundo tipo que es físicamente ver chicos en el siguiente video. 18. Tipo de mutación: Oigan, chicos, gracias por volver. Esto es Z. Muy bien. Hemos mirado con éxito el tipo quivy y la firma sobre cómo se ve, ¿verdad Ahora, ¿podemos tocar esto una vez más? Si lo piensas, en realidad podrías hacer un vio a cabo una discusión. ¿Es eso correcto? Oh, sí. Básicamente podría sacar esto. Vamos a llamar a esta muestra de traste tres y voy a quitar todo aquí dentro ¿Correcto? Me quitaré esto totalmente y puedo ver devolver una muestra. Esto también funciona, vi que mencionaste, esto funciona. Ahora el siguiente tipo que vamos a estar viendo es la mutación de tipo. Mutación tipo. Vaya, ¿qué significa mutación tipo? Ahora, recuerden que hemos estado mirando a la multitud. Ahora bien, si tuviera que copiar esto aquí, veces puedo ser perezoso. Pero para copiar esto, usted dice, los datos, todos los cambios de datos. A los cambios de datos. Todos los cambios de datos que haces, que es la C, que es la creación. La U, que es la actualización, y la D, que es la eliminación en multitud son todo tipo de mutación, es decir, estás cambiando algo. Esto es muy clave, estás cambiando algo. Siempre que estás cambiando algo, en realidad sometes todo dentro de tu mutación tipo. Sujetas dentro de la mutación tipo. Un ejemplo muy sencillo, para no hacer realmente esto muy complejo es solo podría decir crear muestra. Crear muestra, y probablemente usaremos las mismas imputas que tenemos Yo solo diré crear imputes, después recibiré las imputas de muestra fetch Entonces, ¿qué me deberías dar? Bien, solo podría decir, quiero devolver una identificación. Esto funciona, ¿verdad? ¿Recuerdas? Sólo así estoy tratando de ser muy flexible para que veas que no es del todo diferente de lo que haces cuando creas un juego de palabras final normal Sólo se puede decir que quería devolver una cuerda. Quiero devolver un objeto. Lo mismo, pero la idea es simplemente obtener la sintaxis, ¿verdad? Recuerda lo que hicimos aquí, este cubo cuadrado significa una lista. Entonces se podría decir que quiero la lista de algo y devolverla. Cuando estás creando, la mayoría de las veces probablemente solo devuelvas un objeto de muestra. Lo que haremos es conseguir otro tipo de entrada, y yo lo llamaré respuesta. Voy a llamarlo una respuesta de muestra. Vamos a llamarlo respuesta de muestra porque es para ser consistente. Lo llamaré entrada de respuesta de muestra. Derecha. Sólo voy a devolver una identificación. Lo haré obligatorio, luego devolveré un nombre. Lo haré que sea una cuerda, pero no es obligatorio. Podría decir que esto me daría una respuesta de muestra, ¿verdad? Esto en realidad básicamente me da perdón, quise decir, esto es lo que en realidad estaba apuntando. ¿Qué están tratando de hacer aquí? Estaba tratando de devolverle una respuesta. Lo siento, quería hacer un tipo. Una respuesta de tipo, un tipo, un tipo. Este era el objetivo era ser un tipo, ¿verdad? Se supone que es un tipo, no imputar. Yo quería conseguir un tipo, así que podríamos regresar solo puedes devolver esto y esto físicamente funciona, ¿verdad? Esto funciona hsally. Así que recuerda, para que uses una imputa, debe ser de tipo imputa, O podrías usar cualquier azúcar extendido si usas alguna extensión como esta y esto funciona, o podrías pasar pampsical solo la gráfica básica tipos A, y eso también funciona Así que sé creativo. Inmutación. Sin embargo, piensas que solo tienes que seguir, asegúrate de poder devolver un tipo de entrada. Un tipo de entrada entra como parámetro, y devuelves cualquier tipo de tu elección. Ya sea el tipo básico o el tipo escalar extendido o realmente devuelve un tipo de objeto personalizado Eso se trata de la inmutación. Vemos toneladas de ejemplos, pero solo quería presentarles esto. Esto físicamente funciona. Impresionante. Entonces veremos el último tipo en el siguiente video para que luego todo se junte. Os veo chicos en el siguiente video. 19. Tipo de suscripción: Todo bien. Esto es Z aquí. Gracias por regresar. Bien. Entonces ahora estamos viendo el tipo final que vamos a usar. Estos son los tres tipos especiales que existen, y este es tipo, suscripción, ¿verdad? Suscripción. Ahora bien, la forma más fácil de explicar esto es tu submodelo de pub submodelo Pub que es un editor y un suscriptor Entonces la forma en que funciona de la manera en que funciona es, tener un motor o tendríamos nuestra aplicación realmente produciendo actuando como el editor, para estar produciendo o emitiendo datos. Entonces habrá alguien por ahí o un grupo de prensa va a estar llamando al dput y estará consumiendo los datos que realmente liberamos Es tan simple como tienes una fábrica de refrescos que siempre está produciendo y que los consumidores siempre esperan tomar el refresco. Entonces esto es lo mismo que funciona aquí, ¿verdad? A diferencia de estos dos tipos en los que necesitan desencadenarse, ya sea la consulta o la mutación, cualquiera de los tipos necesita ser activado por el usuario, antes de que realmente vaya a base de datos o de donde sea que estemos obteniendo la fuente de datos, luego se vuelve a sintonizar o para la mutación, se activa. Pero en este tipo, no se dispara. Nosotros somos los unico ting. Un ejemplo típico podría ser que en realidad estás creando un conjunto de refrescos, ¿verdad? Y hay alguien simplemente siempre leyendo de ello. Un ejemplo del mundo real que puedes mirar es el hecho de que existe este reporte meteorológico, ¿verdad? No es necesario activar una API para que se creen los informes meteorológicos, ¿verdad? Esto ya está hecho. Por lo que se ha hecho análisis, se ha hecho algún análisis geográfico y se ha recabado el informe. Se acaba de publicar en el sitio web. Simplemente consumes la API. Una vez consuma la API, podría leerla en tiempo real y comenzar a recibir la actualización. Entonces eso es lo que pasó. Otro ejemplo es Forex una vez haciendo operaciones de Forex o una vez estructura o el comercio de divisas. Justo cuando llegas a la mayor parte de su plataforma, cambia con el tiempo. No tienes que hacer clic en una API. Simplemente notarás que solo está cambiando con el tiempo. Si realmente consumes su API, probablemente seas el suscriptor y ellos son el editor. Lo mismo que en realidad tenemos aquí, lo que vas a lograr en graph estás usando web socket, pasa por el mismo detalle. Te tengo cubierto, y esto va a ser muy, muy interesante. Un ejemplo típico podría simplemente llamarlo dejar de muestra. Notificación, auto notificación. No hace falta ningún argumento, entonces solo devuelve esto, solo devuelve esto, devuelve esto. Veremos otras varianzas una vez que realmente iniciemos la aplicación principal, verás exactamente cómo funciona Ahora, he podido lanzar esto juntos, teniendo que explicar qué es la suscripción. Así que volvamos, hagamos un retoque. La consulta son todas las lecturas que haces, leyendo leyendo desde una aplicación. La mutación es que estás haciendo cambios en los datos que existen dentro la aplicación o están haciendo cambios en los datos que existen en una base de datos o alguna fuente que existe que pasa por la aplicación. Entonces por último, tenemos una suscripción nos podemos ver con comentario, digamos, un submodelo de pub. Déjame usar la palabra completa, que es suscripción, modelo de suscripción de editor editor, suscripción. Entonces esto básicamente es lo que es. Ahora bien, habiendo explicado estos tipos, podremos ver que si quieres pasar en argumento, debes usar un tipo llamado IntutAsí usas los tipos escalares que se trajo con la biblioteca escalar extendida de Java, o pasamos en el tipo básico que existen, que es el ID o la cadena o el bolardo o el float, ¿verdad? tipos escalares que se trajo con la biblioteca escalar extendida de Java, o pasamos en el tipo básico que existen, que es el ID o la cadena o el bolardo o el En realidad podrías usar eso o realmente usar el int. Eso realmente funciona. Entonces para la mutación, también, básicamente funciona lo mismo. Recuerda, te mencioné que no puedes usar un tipo, no puedes pasar un tipo en la entrada. Una vez que pasas en un tipo en la entrada, lo marca y yo pude mostrártelo chicos. También podríamos ver si acabo de hacer esto ahora mismo. Verás, en realidad se queja. El tipo sample no es un tipo de entrada, sino que se utilizó como un tipo de entrada, que básicamente está bien . He podido pasar por todo. Todo esto es una introducción para que estés familiarizado con las cosas básicas con las que trabajaremos. Ahora, entonces estaremos profundizando más para poder luego ver cómo realmente se unen las cosas Los veré chicos en el siguiente video. 20. Entidades en Graphql, parte 1: Hola a todos. Gracias por volver conmigo. Habiendo mirado más bien los conceptos básicos, hemos podido ver cómo jugaban estas cosas juntas. Hemos podido ver el tipo básico. Ese es el tipo gráfico queer, el tipo gráfico básico. Hemos podido ver cuales son estos quiero decir, que es el ID, la cuerda, los ins, el flotador, y el lingote Luego seguimos adelante para verificar realmente nuestros escalares extendidos Vamos a ser capaces de extender realmente para usar todos los tipos de jaa Tocamos la interfaz. Tocamos cómo podemos implementar la interfaz. Te mostré en un par de videos cómo podríamos realmente vincular estas cosas juntas. También tocamos noms. Todo bien. Todas estas cosas además de la mutación de consulta y suscripción, que te dije serían tus endpoints con los que estarás interactuando como tu leer tus otras actividades de código, que básicamente es sección en mutación de consulta y suscripción como en el caso de la gráfica Q. momento, vamos a estar entrando en los contenidos de la causa principal. El contenido de la causa principal. Y luego para correr a través de esto para que tengamos un alimento húmedo, tenemos un buen entendimiento de cómo se dividen estas cosas. Ahora mismo, pasemos a lo siguiente. Impresionante. Bien, entonces en este video, lo que estamos apuntando a crear es nuestra entidad GraphQL DTOs Graph entity DTOs Bien, ahora quiero mostrarles algo muy, muy único. Cuando les mostré antes chicos, cuanto a donde podemos colocar nuestros guiones, mostré desde esta parte en particular cuando hicimos graficar la ubicación de QL, cuando intentamos buscar ubicaciones, vimos que es un gráfico clave slash starter minute, coincide tanto con este como con los subdirectorios Solo haz esto más limpio. Vamos a entrar aquí y crear TTO. Consigamos nuestros DTOs. Qué va a utilizar para este curso. Sigamos adelante y creamos sigamos adelante y creémoslo. Sólo le voy a dar un nombre genérico. Simplemente llámalo entidad. Podrías darle otra cosa, yo la llamaré entidad porque va a abarcar cosas como nuestros DTOs, nuestros insumos Todos y cada uno de los tipos serán creativos también tendrán su aporte específico. Yo sólo quiero agrupar todo junto. Entonces no nos mezclamos con esto que ya tenemos aquí, podría ser bastante diferente. Simplemente bastante diferente. O en realidad podrías seguir adelante, lo llamaré entidad GAF QL Cualquier cosa que prefieras solo hazlo. Solo estoy creando esto para llegue una mejor palabra a la cabeza para simplemente separar las cosas. Lo primero que voy a crear es uh Empresa. Empresa rápida GraphQL GraphQL. Company Graph QL, ¿qué contendrá realmente la compañía? Vamos a utilizar una empresa tipo DTO. Ahora, tal vez se esté preguntando por qué tuve que usar el detalle. Esto es muy específico porque cuando creamos nuestras entidades JPA, podríamos empezar a tener conflictos Ahora bien, los conflictos, no porque en realidad fueran los mismos, sino conflictos porque cuando ahora quieres ver cuál usar, es la compañía que es para la entidad JPA o es la compañía que es para el QLS de GAF, podrías empezar a tener Sin embargo, lo que he decidido hacer es seccionar las cosas. Entonces tienes entidades JPA que en realidad serán el nombre de la compañía, y este es el detalle que se utilizará como objeto de transferencia Estoy seguro de que realmente eres consciente de los patrones de diseño donde tienes tu lógica de datos realmente separada en DTs, eso realmente tiene más sentido O su objeto de transferencia de datos, quiero decir, ¿cuál sería el contenido? Tengo la intención de usar UUID como nuestro ID. Así que usa una U ID que es una cadena, tenga en cuenta que puede usar una larga. Ya hemos ido adelante, agrega un largo aquí. Puedes ser flexible para usar lo que pretendas. Yo solo prefiero solo usar un UUID? Porque en mi antiguo curso, creo que me quedé demasiado tiempo. En este curso, solo me sentí más flexible. Déjame usar otra cosa. Estoy tratando de usar los UID. El siguiente paso, vas a tener un nombre, nombre, ese es el nombre de la empresa, y lo siguiente va a ser obligatorio. Lo siguiente es el número RC. En mi país donde lo llamo número RC es el número de registro básicamente. ¿Qué pasa con el número de registro del curso de la compañía para que realmente me puedas decir que es lo mismo También es ser una cuerda. Cadena, entonces tenemos la oficina Add. Una oficina es más como la dirección donde se encuentra la dirección, ¿verdad? Entonces, ¿qué más estamos bien? Vamos a agregar país. Vamos a agregar un país, ¿verdad? País. País. El país también será una cadena. Entonces, por último, agreguemos algo genial. Digamos tipo de negocio. Tipo de negocio. Este es el tipo de negocio del país, y tomaremos un innum o tipo de negocio Tipo de negocio. Bastante genial. Bastante genial. Ahora, ¿qué es el tipo de negocio? Al parecer, tipo de negocio va a estar inmtaking tipo de negocio, copia esto Tipo de negocio, y vamos a tener cuatro negocios que tomaremos telecomunicaciones. Bancario. Entonces la educación, ¿verdad? Educación. Bastante genial. Bastante genial. Bastante genial. Desde aquí hemos hecho otra cosa. En realidad he podido definir este buen trabajo. Todo bien. A continuación, vamos a crear la siguiente entidad y sus detalles relacionados. Vamos a crear departamentos, ¿verdad? Departamento. Departamento departamento gráfico QLs. De hecho, departamento hace Gráfica QLS. Departamento o gráfica QS, y ¿qué contendría el departamento? Normalmente, algo cercano, tenemos departamento. Departamento DTO. Mantequilla DTO, tenemos un refrán UID. Entonces string, que va a ser una cadena, tenemos un nombre. Va a ser una cuerda. Va a ser una cuerda. Entonces tenemos número de departamento porque departamento debe tener números o alguna forma de identificadores. Número de departamento, que va a ser una cadena. También es importante. Entonces tenemos el nombre de la empresa. Al parecer, la compañía pertenece porque tenemos la intención de construir realmente un sistema que alberga múltiples componentes Digamos que tienes un portal como un HR, que en realidad distribuyó a varias empresas. De hecho, esta será una buena manera tenerlo una vez en el sistema, administrando a todos. Entonces RC número de la compañía, creo que también es genial lo tenemos bajo departamento. Entonces tenemos también es la cuerda. Entonces tenemos dirección. Domicilio. Ahora estamos pegando en alguna parte. Domicilio. Todas estas direcciones, solo vamos a llevarte dirección. Ahora bien, no sabemos dirigirlo. Dejémoslo por ahora. Volveremos. Entonces tenemos división, División. También tomaría división. La división es un um para nosotros, lo cual es importante y esa será una división numisi, división. La visión. Bien. Bien, entonces tenemos RRHH. Hagamos ventas. Hagamos tecnología. A menos que hagas atención al cliente. Creo que esto debería funcionar. Sí. A menos que tu atención al cliente. Bien, esto es genial. Esto es genial. Aún no hemos creado esto, así que volvamos. Entonces tratando de mantener el tiro, hemos podido llegar a un hito. Volvamos en el siguiente video y continuemos con la creación de un pozo clave GAF entidades Nos vemos en el siguiente video. 21. Entidades en Graphql, parte 2: Bien. Gracias, chicos. Nosotros regresamos. Así que hemos podido dejar la empresa. Hemos podido dejar el departamento, ¿verdad? Así que pasemos a las siguientes cosas. Pasemos al siguiente. Así que recuerda que todavía tenemos que hacer aquí, pero quiero que esto sea el último para que realidad no apresuremos las cosas, ¿verdad? Quiero que esto se haga realmente ordenado, para que puedan ver cómo se conecta todo entre sí Entonces el próximo mi creación es empleado empleado. Empleado. Entonces creador, un empleado. Empleado. Recuerda, esto no tiene que ser una letra mayúscula. Podrías simplemente definir lo que quieres. Sólo me estoy apegando a, podría simplemente seguir adelante. No crees que no tiene por qué serlo. Simplemente puedes pegarte a letras minúsculas y sigue funcionando igual. No tiene por qué serlo. No tiene por qué serlo. Simplemente me di cuenta de eso. Vamos a crear una gráfica de empleados QL empleado punto Gráfico QLs. ¿Y qué contendría ese empleado? Nuestro empleado va a contener algo más. Entonces lo que haría es crear un empleado. Ahora bien, el concepto que quiero introducir es que también estaríamos creando un empleado, pero al mismo tiempo también, estaremos creando un agente de subcontratación Entonces, ¿qué es un agente de subcontratación? Ya sabes, en cada organización, tienes cosas como el Viaje a ti tienes cosas como un jardinero Tienes cosas como un Gatesman. Tienes cosas como si tuvieras disculpas a la gente por usar la palabra cosas Tienes gente como Conserje. Tienes gente como el jardinero, como mencioné, tienes gente que es la tintorería, ¿verdad Probablemente algunos oficinistas que no son de personal completo. Entonces probablemente quieras hacerlos subcontratados, ¿verdad? En realidad son seres humanos. Entonces quieres hacerlos subcontratados. Ahora, ¿qué hacemos? Entonces estoy tratando de seccionar las cosas. De hecho, tendría un empleado que tenga pleno empleo y una persona subcontratada que también sea subcontratada Entonces seguiré adelante y crearé también un individuo subcontratado, lo llamaré subcontratado Entonces es GAF QL. Voy a buscar el GAF Q LS. Bien, entonces ahora tenemos eso porque en realidad se relacionaron. Son seres humanos. Tendrán básicamente las mismas cualidades juntos, las mismas cualidades. La mayoría de las cualidades serían las mismas. Voy a seguir adelante y crear una interfaz, ¿no? Bastante genial, ¿verdad? Bastante genial. Bastante genial. Así que crea una interfaz. Ahora ya ves cómo estamos uniendo todo, todo lo que hemos aprendido hasta ahora. Cree una interfaz de persona de interfaz, y ¿cómo se verá la interfaz de persona? Eso sería genial. Así que solo crea una interfaz. Una interfaz llamada per se la interfaz persona tendrá un UUID, que es una cadena, que es obligatoria, persona tendrá un nombre, aplicar todo el mundo tiene un nombre Entonces tenemos fecha de nacimiento, fecha de nacimiento, fecha de nacimiento. Bien, entonces esa será una fecha. Recuerda, si estás confundido de donde vinieron estas fechas, recuerda que ya creamos un escalar aquí, ¿verdad Por favor, no se olviden, chicos. Creamos un escalar Y lo que mencionaste es una fecha, una cita. Recuerda que mapeamos esta fecha a qué fechas locales. Entonces, si en realidad no estás seguro, corre rápidamente al XML de Pond. Recuerda cómo mapeamos esto para mapear la fecha a las fechas locales. Bien, así que procedamos, chicos. Entonces el siguiente, vamos a tener un salario aparte todos necesitan un salario, salario lo tomará como un gran decimal. Recuerda, también definimos esto ahí dentro. Entonces la persona será una dirección. La persona en realidad tendrá una dirección. Una dirección sería un empleado podría tener una o varias direcciones, así que voy a usar una dirección DeTao que aún no has especificado, justo en el mismo caso que departamento, luego siguiente parada, la de la persona, la edad de la persona Para la edad de la persona, usaré el int positivo. Modus los ins positivos porque nadie puede ser negativo, es un int positivo Creo que esto es una idea bonita aquí. Entonces tienes un teléfono. El número de teléfono de la persona, haz esta cadena. Haz de esto una cuerda. Entonces la empresa la persona trabaja para la empresa. Recuerda, este es un proyecto que tiene que ver con múltiples empresas que usan la misma app o que son administradas por la misma app. Entonces, ¿la persona está activa? Sí, la persona está activa. Ahora, el siguiente. La pregunta no sería aparentemente, necesitamos definir necesitamos definir necesitamos definir necesitamos más o menos definir el género de la persona, ¿verdad? ¿No lo creen, chicos? ¿ La persona es masculina o femenina? Yo puedo um, y voy a decir género género. Al parecer, tenemos macho y tenemos hembra, ¿verdad? Entonces tenemos masculino, tenemos femenino, cuanto al género. Entonces puedo entrar aquí. Vamos a ponerla antes del salario. Solo dices género, luego género o lo haces importante, ¿verdad? Bien, ahora ya hemos podido crear a la persona. Lo genial que puede pasar entonces es que luego vamos a empleado, nuestro empleado tipo será empleado, recuerda que estábamos usando un objeto DTO, DTO entonces implementaría persona Recuerda, como mencioné en los videos anteriores en video anterior mientras estaba introduciendo interfaz, cada vez que implementas interfaz, es obligatorio que traigas todos los campos aquí. Si no lo haces, obtienes un error. Y si ves esto, si miras el error, dice, debes definir uno o más campos, y está buscando todo lo que está dentro de la interfaz, que es el nombre del UID, dirección, fecha de nacimiento y todas las cosas así Tienes que traer todo. Tienes que llevarte todo esto. Todo esto y tráelo aquí, y tráelo aquí. Ahora, entonces agreguemos un par de cosas más. Cada empleado tendría una identificación. Tienes una identificación de empleado, genial. Las cosas se perfilan. Cosas para dar forma a los chicos. Entonces el número de departamento Número de departamento, ¿ verdad? Debe ser una cuerda. Fresco. Entonces también tenemos correo electrónico. Entonces necesitamos el correo electrónico del empleado y queremos conocer el rol del empleado. ¿Qué papel eres? ¿Qué papel? ¿Qué papel eres? W es no dejo que esa opción por ahora, pero al parecer debería ser obligatoria. ¿Cuál es el papel del empleado? Entonces el rol del empleado, empleado tiene un rol y es pasante o es supervisor, o es gerente o es el GND Dejémoslo así, ¿verdad? Fresco. Corremos rápidamente a la subcontratación y llevemos esto Entonces vamos a la externalización o simplemente decimos externalizar tipo externalizar tipo subcontratar externalizar DTO, luego traemos esto porque implementa persona, ¿ externalizar tipo externalizar tipo subcontratar externalizar DTO, luego traemos esto porque implementa persona, ¿ verdad? Y más o menos, déjame comprobar, ¿qué deberían persuadir detalles adicionales La persona también debe tener una identificación, ¿verdad? Entonces llamémoslo ID subcontratado, ¿cuál sería una cadena? Entonces deber, ¿verdad? Entonces tomemos el deber de la persona. ¿Qué hace la persona? ¿Qué hace esta persona? Entonces entremos en ellos y creemos un deber. Al parecer, digamos que tenemos un conserje en la organización. Tenemos una organización electricista, y tenemos una barredora Dejémoslo de esta manera, ¿ verdad? Tenemos prueba. Esto es bastante genial. Esto es bastante genial. Bien, chicos, siendo capaces definir a nuestro empleado, nuestra fuente. Creo que estoy tentado a hacer esto, y esto es muy crucial, ¿verdad Recuerden, chicos, siempre podrían ser consistentes con su comercio o no los usan. Lo estoy usando intercambiable dijo que estoy colocando algunos no estoy colocando para mostrarte realmente no tiene ningún efecto. Ya he dicho esta zona. Bien chicos. Te veré en el siguiente video. 22. Entidades en Graphql, parte 3: Todo bien. Bien, chicos, hemos podido crear todos nuestros DTOs Bueno, sin embargo, todavía nos falta algo. Seguro que ya lo has adivinado, el dirigido a ETO, que es algo que es común a todos Tengamos dirección DTL GraphQLSGQLS. Bastante genial. Bastante genial. Tenemos un tipo, dirigido ETO. DTL. Entonces tenemos un UUID. Una nota, chicos. Si te sientes cómodo conmigo escribiéndome haciendo esto manualmente, preferiría que en realidad lo pegara. Esto puede simplemente seguir adelante y saltar o debería decir avance rápido el video para que no se vuelva aburrido. Personalmente disfruto lo que estoy aprendiendo a través, estoy aprendiendo de mi individuo. Me gusta paso a paso y escribir a lo largo. Simplemente me hace más retentivo de esa manera. Por favor, haga lo que funcione para usted. Todo bien. Sigamos adelante. Después ID de entidad. ID de entidad, ¿verdad? Recuerde, el departamento tendrá una dirección, un empleado tendrá una dirección, y el estadio subcontratado tendrá una dirección, tendría una dirección, y cada uno de ellos tendrá sus identificaciones específicas ¿Cómo sabemos que un empleado subcontrata la dirección del departamento Esto en realidad está mapeado por su ID de entidad. El ID de entidad será la clave foránea. Se podría decir la clave foránea, usando el mapa a la dirección. Muy cool. Todo bien. Sigamos adelante. Entonces tenemos las calles. Tenemos la calle, calle, cada dirección tiene una calle. Entonces tenemos una ciudad tienes una ciudad ciudad ¿ perteneces o ciudad? ¿Eres Nigeria Legas US, estás en Canadá, en Canadá? ¿Estás en We country la ciudad más grande? Entonces cadena, que son los estados, el estado al que perteneces. Después el Zip cut Zip cut. Bien entonces el código postal, estoy tentado a querer usar un int positivo aquí, ¿verdad Pero me voy a quedar con lo básico que es solo una idea ver la razón más adelante. Bien, cuando empezamos a ser validaciones, si usas ints positivos, queremos hacer algunas validaciones Por eso me estoy apegando a esto. Todo bien. Vamos a revisar rápidamente nuestro departamento. Fresco. ¿No más error, empleado? Fresco. No más errores. Subcontratar. No más errores. Entonces estamos bien. Esto se supone que debe ser externalizado Curc subcontratado. Entonces este código. Tenemos todo esto definido correctamente y no tenemos ningún error. Hemos podido definir todos los datos, todos los la entidad, todos los detalles de Graph Kalent que realmente adquirimos El siguiente paso ahora es comenzar a buscar con atención los tipos de entrada que se tomarán para cada uno de estos Bien, chicos, los veré en el siguiente video. 23. Entrada de entidades en Graphql: Bien, gracias chicos por regresar. Bien, así que hemos hecho algo muy increíble. ¿Qué hemos hecho? Hemos sido capaces de crear las NCDTU GAF QL Ahora, estoy tratando de explicar nuevo para que también podamos atrapar esto. Recuerdo mencionar que este departamento, este departamento habría sido Departamento Departamento DT. Pero sin embargo cuando empezamos a crear los tipos de entidades JPA, ¿verdad? No queremos los nombres contradictorios, así que ahora tenemos que definirse el nombre completo para saber a qué se refiere Esto facilita las cosas fácilmente para nosotros. Crearemos entidad JPA. Por lo que ahora se utilizará dentro del proyecto para interactuar realmente con la base de datos. Mientras que para esto, estos serían nuestros objetos de transferencia de datos. Pensé que estaban separando las cosas. Sólo pensé que debería mencionarlo. Bien. Antes de continuar, creo que es genial que en realidad ejecutemos esto. A ver si algo funciona y no se rompe nada. MVN compilar. Entonces veamos, esto está pasando y veamos rápidamente, ¿tenemos algún error? A ver, no. Entonces no tenemos errores. Rápidamente echemos un vistazo a uno de ellos. Vamos a verificar la compañía, entonces podemos seguir adelante. Todo bien. Entonces, ¿cómo se ve nuestra empresa? Empresa DTL. Impresionante, como puedes ver. Tienes todo deletreado y nosotros tenemos nuestro m creado, que es este es código Este es código es código. Todo bien. Hemos sido capaces de hacer esto. Procedamos con todos los tipos de IP que adquirimos. Empecemos con la estrella de Cone con Coney y veamos el tipo de IP que realmente adquirimos Bien, entonces vamos a estar amasando para compañía, vamos a estar amasando insumos de la compañía La entrada de la compañía serán los datos que usaré para usar para obtener realmente los datos. Recuerda explicar esto con mucho cuidado chicos que no puedes usar tipo. No se puede usar un tipo graph quo dentro como entrada, se quejaría. Yo les mostré chicos antes en los videos, pueden consultar en los videos anteriores que estamos pasando por los datos o la sección de tipo de datos, estamos viendo la base, les mostré chicos cuando estamos viendo la consulta la mutación en la suscripción, los tipos básicos. Les mostré chicos, por favor tengan esto en cuenta que puedo usar un tipo de ahí necesitamos una entrada, que tiene que llevar esta entrada de palabra clave. Llámalo una empresa Imput. Empresa imputa. Cool Coty fresco. Prácticamente casi se necesita lo mismo. Yo sólo voy a copiar esto. Por favor, no hagas esto en casa. Tienes el nombre, número de RC, la oficina central, el país y el tipo de negocio. Esto es bastante genial. Esto es bastante genial. Ahora que hemos podido hacer esto, esto es genial. Esto es genial. Tenemos la Imputa Ahora, a continuación, revisemos por departamentos. ¿Qué requiere el ingreso para departamento? Es de la misma manera, solo puede tener insumos y departamentos. Imputa. Alguien podría decir, ¿por qué el separado en carpeta separada no coloca tu elección Se puede hacer eso y nada se rompería. Se puede separar. Sólo estoy tratando de agrupar las cosas juntas. Bien, ¿qué necesitarías aquí? Sí, creo que haríamos esto el nombre, número de departamento, nombre de la empresa, número de RC, dirección y división. Ahora, mira esto. Dice que el ajuste de tipo no es un tipo de entrada. Esto es bastante genial. Me encanta Graph QO. Son consistentes. Incluso si define un tipo de entrada, no debe usar un tipo dentro de él. El subcampo o nido también debe ser un tipo. Esto tiene que ser un imput que vamos a llamar a este imput. Adjustimput. Volveré a ello en un rato. Corramos, corramos rápidamente a empleado, empleado. Qué tipo de imput vamos a estar esperando que digas imputar empleado imputa Empleado imputa. Todo bien. Cody genial. Entonces necesitaría visitar todo. Necesitamos visti todo. Vamos a estar seguros. Recuerda esto también se quejan porque esto tiene que ser un puesto de direccionamiento. Solo arreglemos eso rápidamente y vayamos a construir eso una vez que estemos allí. ¿Verdad? Oh, se está quejando ¿Cuál es la dirección? Así que recuerden, chicos, este símbolo que uso, ya les dije cuando vean este símbolo, ya saben, es una lista. Entonces a qué me refiero, estoy diciendo que al menos debes pasar una dirección en puesto puede ser una o más. En el momento en que hago esto, significa que adquiero más de uno. Pero lo estoy restringiendo para decir, solo necesito una entrada pero si quieres pasar múltiples direcciones al mismo tiempo, oh, sí, puedes hacerlo Todo bien. Entonces esto es genial. A ver. Tienes un nombre, databd, género, salario, dirección, borde, el teléfono, el teléfono, entonces el nombre de la empresa es una persona activa Creo que podemos hacer esto por defecto. Puedes hacer esto activo. Activo puede ser por defecto, así que podemos sacar esto. ¿Qué pasa con el nombre de la empresa? No creo que necesitemos el nombre de la empresa porque vamos a estar sumando número de departamento. Del departamento, deberíamos ser capaces de inferir nombre. Creo que eso tiene sentido, ¿verdad? Bastante genial. Entonces tenemos el correo electrónico. ¿Verdad? Tenemos el correo electrónico y tenemos el rol. Podría simplemente seguir adelante y también quitar empresas para hacer las cosas un poco más simples, ¿verdad? Mientras estamos desarrollando si vemos el met y vemos el si definitivamente volvemos a ello. Bien, entonces definimos el tipo de imput. Quiero seguir adelante y agregar un tipo de imput más para empleado Digamos que queremos actualizar al empleado, ¿verdad? Empleado buscado. Por lo tanto, las entradas de actualizaciones de empleados te permiten actualizar la entrada. Yo querría usar digamos al parecer necesitamos la identificación para identificar al empleado. Digamos que queremos actualizar el salario. Digamos que queremos que haya un desajuste con la edad de una persona y necesitamos actualizar la edad. Bien. Y finalmente, persona consiguió un ascenso. Hurra. Agreguemos el papel. Entonces el rol, pbitra de intención a supervisor o lo que tienes Bien. Así que en realidad hemos sido capaces de hacer esto con éxito. Bien, esto es genial. Entonces vayamos a la subcontratación, ¿verdad? Vamos a subcontratar, ¿verdad? Para externalizar, prácticamente solo tenemos lo mismo. Voy a sólo figuys detalles en esta parte luego tipo. Ya lo he definido en otro lugar así que solo tráelo. Nuestro tercerizado imputa, comprobamos el nombre, la fecha de nacimiento, el género, el salario, la dirección, la edad, la forma De igual manera, no especificé el nombre de la empresa porque lo hacemos dinámicamente. Entonces no especificé que la persona está activa porque ésta estará activa por defecto. Entonces tenemos el subcontratado y el deber, el deber del empleado subcontratante. Ahora, no he definido esto. ¿Qué más necesitaríamos? Creo que después definimos otras cosas. Por último, estoy seguro que ustedes han estado con ganas de saber cómo se verán las entradas de dirección. Vamos a entrar ahí. Puedo entrar aquí, tipo de aplicación Entradas y entradas de dirección Esos tipos deberían estar felices ahora mismo, sólo vamos a tomar esas mismas aletas. Abordar putes. Ahora para los Putes de dirección, vamos a tomar el ID de entidad, calles, ciudad, estados, y el código postal, ¿verdad Creo que voy a necesitar UID también, ¿verdad? Porque si voy a dejar de fumar, no puedo crear una identificación. No puedo No puedo crear un UID, una dirección en aislamiento Bien, tomemos una identificación. Tomemos UID. Voy a ver cómo se desarrolla eso. Y eso también será una cuerda, pero lo haré obligatorio, ¿verdad? Voy a hacerlo obligatorio. Bien, entonces, chicos, en realidad hemos sido capaces de hacer esto. Ahora, vamos a confirmar rápidamente. Este tipo departamentos, este tipo no sonríe, no más error. Este tipo no sonríe, no más error. Este tipo no sonríe, no más error. Muy bien, los chicos deberían cojo para definir nuestros tipos básicos de computadora Te veré en el siguiente video. 24. Entidad Jpa de la empresa: Gracias por regresar, chicos. Alguien ya está preguntando. ¿Cuándo vamos a crear los tipos JPA? Estoy muy enamorada de JPA. Yo voy a hacer esto. Todo bien. Aquí está el momento. Vamos a crear los tipos de JPA. Llamemos a esta entidad. Llamar a esta entidad, llamar a esta entidad. Y básicamente comenzar con el primero. Yo lo llamaré la entidad de la compañía. Entidades de la empresa, llámela Empresa, ¿verdad? Todo bien. Pongamos toda la JPA Shenaniga Entonces quiero mi agata. Estoy usando Lombok. Quiero a mi setter Asta, setter Entonces quiero a mis entidades. Muy clave, mi entidad entit. Bien. Entonces quiero mi mesa t, verías Y en los pedacitos, ¿verdad? Entonces quiero darle también a esto un nombre a tablas el tema. Sí, entonces quiero mi nombre. Entonces quiero llamarlo empresa. Esto funciona. Entonces voy a estar definiendo algún conjunto de índices, ¿verdad? Mírelo brevemente. Bien, ¿qué contiene mi compañía? Justo lo mismo que hemos hecho por los demás. Entonces vamos a tener otros para la empresa DTU que quise decir en una gráfica asesinos Voy a tener UID. Entonces llámalo ID, UID. Tenemos UID, UU UURD. Entonces vamos a tener un nombre. Vamos a tener creo que el número RC sí. Vamos a comparar enseguida. Cadena privada, número RC. Voy a tener una oficina central o una oficina central ubicada en deliberada una cadena Va a ser una oficina central crítica. Entonces vamos a tener la recitación del país, es el país ¿Correcto? Vamos a tener el tipo de negocio, tipo de negocio privado. Recuerda, usando este negocio directamente desde el GAF KL ves lo que viene adentro, ¿verdad Tipos de negocios, no tengo que crear algo diferente voy a llamar a este tipo de negocio. Entonces voy a añadir dos detalles más. Digamos un privado. Pongámoslo marca de tiempo, ¿verdad? Una marca de tiempo, lo llamaré una la marca de tiempo debería ser Java SQL, voy a haber creado cuando se creó Esto va a ser por defecto. Podemos simplemente seguir adelante y hacer una nueva marca de tiempo y usar nuestro sistema de sistema quarnt Esto funciona. Entonces vamos a tener actualizado pero esto no tomaría nada. Así que no tomes nada. Ahora, estos tipos se quejan así que los arreglamos Primero que nada arreglemos si no hemos hecho nada malo, voy a abrir esto del lado derecho. Este es un UUID cool. Ahora estamos haciendo una conversión de ida y vuelta entre el UID a una cadena Esto está bien. Aquí hay una cadena, aquí hay un UID, así que está bien Entonces tenemos el nombre, tenemos el número RC, país de la oficina central. Tipo de negocio, y agregamos estos dos detalles adicionales. Bien, genial. Todo bien. Mira a este tipo quejándose, empiezas a cerrar en minutos Entonces este tipo, disculpe, eres compañía solo aguanta. Te vamos a arreglar. Hemos generado valor a valor generado a valor generado, entonces tenemos una estrategia. Cuál es la estrategia generar tipo, UID. Ves un esto empezará a caer o procedamos por el nombre. Quiero darle una columna, solo quiero decir nullable, volverse nullable Después el siguiente, quiero el número RC. Quiero la columna también, anulable primero, luego vamos a darle digamos número RC ¿Conozco longitud? Digamos que bien. Largo, sólo le doy 20. Ahora, veo que algunas personas siempre colocan cosas como NN aquí. Coloca un nN aquí y me dejas usar esto como ejemplo. Veo algunos individuos, van a entrar aquí. Incluso después de colocar esto, ahora harán algo como este nombre y pondrán esto como nombre. Esto no es necesario. El momento en que lo que estás definiendo aquí va a ser exactamente lo mismo que esto, no cuenta. La única vez que desea utilizar estos atributos name es para asegurarse de que lo que quiere guardar en base de datos es diferente de lo que tiene aquí. Me encanta de esta manera, así que esto va a funcionar. Ahora para esta parte, este va a ser un caso Snake. Esto se generará automáticamente. En realidad sería algo así como el número de SNC LCScoe, y este es exactamente el comportamiento Es decir, estoy agregando cualquier atributo aquí. Entonces esto está bien. Entonces la oficina central, la oficina central, solo voy a hacer lo mismo, no debería ser nulo. Entonces país solo hago lo mismo, país no debería ser conocido. Entonces probablemente solo dale porque busqué el país más largo del mundo. Descubrí que era bastante largo. Por eso estoy dando un 56. Probablemente estés viendo el video de esa compañía. Entonces para los crea Tsaps, no creo que tenga que hacer nada aquí Vamos a encargarnos de esto especialmente. Entonces para esto, tener unas fechas creadas en fechas de creación. Esto funciona para mí. Este en las últimas fechas modificadas. Bien, esto funciona. Ahora hay algo mal con mis getters y setters. ¿Bien? Creo que verás tener algunos errores. Entonces, ¿cuál es el error aquí? Diciendo atributo no permitido aquí. Al parecer debería haber algún tipo de error. A ver. A ver vamos a ver, veamos, ¿qué he hecho mal? Entonces, ¿tienes a mi creador eso? No, no voy a llegar a esta final. Bien. A ver. Entonces tenemos esto. Bien, déjame seguir adelante y ser definitiva. Atributos, entonces volveré. En index, voy a tener ese índice. Entonces el nombre al que quiero llamar lo llamaré índice de nombres porque recuerden, van a estar usando varias empresas. Entonces el nombre debe ser único. Entonces no quieres tener una empresa con dos diferentes con el mismo nombre. Entonces voy a hacer esto como nombre. Entonces quiero que sea único. Cierto. Cada nombre debe ser único. También podría entrar aquí y colocar aquí la figura única. También podrías hacer esto y colocar único por aquí, pero acabo de definir aquí. Entonces, o lo estás usando nivel de método o el nivel de clase es el mismo, lo estás usando aquí, entonces funciona igual. Entonces en segundo lugar, voy a entrar aquí, y voy a añadir como índice. También necesito otro índice. Ahora, coloco este RC en el número de puntaje. El número RC también quiere que sea muy único, muy único, luego lista de columnas, luego RC en el número de puntaje. Ahora, ya ves por qué estoy usando esto porque esto va a coincidir con lo que va a ser el nombre de la base de datos porque va a ser serpiente. Por eso lo estoy igualando aquí. Si no haces lo mismo aquí, vas a tener un error, y también quiero que sea único, claro. Descubrí mi error, no agregué el símbolo del arte aquí. Es por eso que todos nos estábamos quejando, coloque el comme quitarlo también. Todo básicamente sale bien. Pido definir detalles y esto es genial. Esto es genial. Sólo una nota final. Recuerda lo que uso índice. Los índices, aunque los índices ocupan más espacio, pero aumentan la legibilidad cuando estás leyendo desde la base de datos, ¿verdad Pero viene a un pequeño costo de gastos generales. Cuando seas creado, tu creación va a ser un poco más lenta, pero creo que eso es básicamente lo que es. Los veré chicos en el siguiente video. 25. Entidad Jpa, parte 2: Oigan, chicos, gracias por volver. Hemos sido capaces de crear la empresa. Ahora avancemos a los departamentos. Hagamos departamentos. Departamento. He podido cubrir la mayoría de lo básico. Simplemente sigamos adelante con esto. ¿Qué hice? Yo creo fier en lugar de, yo no era la intención. Clase Ijarro, ¿verdad? Departamentos, ¿verdad? Bien, entonces lo mismo. Entonces voy a seguir adelante y crear departamentos. Entonces departamento, al parecer, estoy seguro que básicamente voy a tener los mismos detalles, así que déjelo solo estresarme y solo traerlo, bien. Todos estos detalles serán muy importantes. Yo sólo lo traeré. Bien, entonces puede entonces crear los otros. Bien, por favor no copie y pegue. Los males de copiarlo y pegarlo podrían llevarte a problemas inesperados Bien, entonces tenemos esto, entonces también podríamos tener privado Cadena, luego número de departamento, número de departamento. Esto es genial. Ahora tenemos esto también hacerlo falso cognoscible porque aprendiz es muy, muy importante No debe conocerse. Entonces, ¿qué más? Déjame simplemente hacer mis datos rápidamente. Mi en el mar, mi entidad, luego una mesa. Al parecer va a nombrar algunos detalles, darle un nombre. Nosotros lo llamamos departamentos. Letras minúsculas, departamentos. Entonces también quiero mis índices. Después en el índice. Creo que uno solo serían dos aquí. Entonces solo di el nombre. Entonces estaría teniendo vamos a llamarlo profundidades en la partitura ven ya ves en el código que será el nombre de la empresa, luego el número RC y el número de departamento. Simplemente puedes darle algo único como raro funciona. Bien, ten esto. Entonces tenemos el nombre de la compañía nombre de la compañía. Recuerden que así fue como definimos esto. Voy a cred este momento compañía en el nombre clave s. Entonces tenemos el número RC. Esto es muy importante, chicos. Número RC. Entonces finalmente, tienes número de departamento. Departamentos en el número scud. Entonces va a ser único a través de. ¿Ves por qué se queja? no puede encontrar nada de eso. Hagámoslo funcionar. Ahora que hemos definido esto debería bajar, entonces creo que no quiero confundirme, solo entremos aquí y partamos a la derecha. Tenemos UUID, el nombre, el número de departamento, el la empresa, el nombre de la empresa Haz esto. El nombre de la empresa. Solo diré el nombre de la compañía de cadena privada? Fresco. El nombre de la empresa, creo que funciona lo mismo. Después el número RC, defina el número RC, luego la división, la división de división. División, habrá una división privada. División división, división de división para agregar esto. No, no necesita ninguna adición, pero podría darte la longitud. Estoy esperando la longitud. No quiero simplemente dejarla abierta. Voy a agregar una longitud de 20 nollable be force. Ahora, ¿qué estoy usando esto como 20? Ahora, mira esto. Si se cuenta esto, esto es uno, dos, tres, cuatro, cinco, seis, siete, ocho, nueve, diez, 11, 12, 13, 14, 15, 16. Este es el más alto que tenemos s para espaciar esto ahora hay una mejor manera que podrías haber hecho es reducir el número de caracteres. Echa un vistazo a mis otros costos, que es modult de primavera que en realidad define eso Para esto, creo que solo quieres que sea sencillo, así que tenemos esto y te voy a mostrar cómo navegar o casar la división para casar realmente un num directamente en base de datos, no tienes que colocar ninguna notación especial aquí, como enumerado y como no, no necesitamos que hagamos algo mejor Lo mismo también necesitamos esto quiero saber cuando se creó, quiero saber cuándo se modificó. Bien, así que básicamente funciona. ¿Por qué se quejan, chicos? Tenemos número de departamento que coincide con este, lo siento, esto no debería ser. Es una lista de columnas y todo debería ser solo una. No es una matriz de cadenas. Es sólo una cuerda. Si lo miras, es solo una cuerda. Todo debe estar en una parte en particular bien. Sí. Bien, así que somos capaces de crear esto. Vamos a avanzar rápidamente y crear un ¿Me falta algo? Sí, me falta algo. Esa debería ser una fecha de creación. Una fecha de creación. Eso funciona. Así que sigamos adelante y creamos a nuestro empleado empleado. ¿Eres el empleado del mes? Averígualo. Empleado, ¿verdad? Entonces tú eres el empleado. Entonces viendo que podría ser un poco demasiado aburrido, así que solo voy a seguir adelante y solo crear esto. Solo agregaré esto y les mostraré a ustedes lo que he hecho. Este pase tu paso y solo voy a hablar esto. Bien, así que comparemos. Bien, empleados, tenemos el UUID, tenemos el nombre. Tenemos la fecha de nacimiento. La fecha de nacimiento es la fecha local. Recuerda que eso es lo que en realidad lo casamos con fecha local. Entonces esto funciona. Entonces tenemos el género. Ahora bien, ¿por qué estoy usando el género como seis personajes? Si revisas el género, cuando creas un género, si saltas aquí, no puedes hacer clic. Verás, esto es seis. Si contamos uno, dos, tres, cuatro, cinco, seis, así es por eso que todavía tengo seis. Entonces, usar seis realmente tendría sentido. Ambig decimal es un salario, entonces tinta es la edad, luego el teléfono como supongo que solo estoy chequeando cos, luego el nombre de la empresa, luego activo lo están haciendo por defecto, ¿verdad? Es por eso que say no colocó nada en las entradas porque al parecer el activo va a ser verdadero por defecto. Entonces tenemos la identificación del empleado, el número de departamento, luego el correo electrónico, ¿verdad? Y por último, el papel. También para el rol, si se comprueba cuál es el rol máximo, el conteo es el más largo que tenemos si cuenta, tenemos uno, dos, tres, cuatro, cinco , seis, siete, ocho, nueve, diez, y por eso tenemos diez aquí, y luego coloco estos otros detalles en. Creo que eso funciona muy bien. Eso funciona muy bien. Entonces creo que también podemos hacer subcontratar rápidamente, ¿verdad? Externalizar. Subcontratar, ¿verdad? También necesito suspenderlo. Por último, mira el nombre de esta empresa que coincide con el nombre de la compañía. Recuerda el caso de huracato. Esta N mayúscula, vamos a subrayar la letra minúscula N. Entonces la identificación del empleado coincidirá con esta es una letra mayúscula para que coincida con el caso de adelanto, el número de departamento en realidad coincidiría con esto Vamos a subcontratar. Por lo mismo, ya he hecho esto también, solo trae esto y agrégalo aquí. Todo bien. Vamos a comparar las divisiones ¿verdad? Todo bien. Entonces, también vamos a traer esto. Bien. Todo bien. Entonces como pueden ver, el nombre UID nombre, fecha de bits, género, salario, edad, compañía telefónica es ID activa, el deber entonces creó ahora lo mismo aquí, se puede ver un comminum musical y yo estudio y también estudio caso serpiente porque aquí es mayúscula. Todo bien. Entonces esto es básicamente lo que necesitamos. Y finalmente, necesitamos nuestro chico el tipo que nos está dando errores también, incluso en el Grafeno que es la dirección, dirección es la dirección Dirección simplemente muy sencilla. Simplemente finalizamos esto y solo lo agregamos. Dirección tenemos una dirección aquí y quiero colocar algunas etiquetas aquí. Bien, bastante genial, muy genial. El índice, en realidad estoy diciendo que esta ID de entidad debe ser única. Lo siento, no es único. ser el indep porque vamos a buscar por él, ¿verdad? Recuerda, cuando creamos a nuestro empleado, empleado podría tener más de una dirección. Eso es que no estoy haciendo esto único, ¿verdad? Esto es bastante genial coincide. Esto en realidad coincide con esto. Si ve, también estoy diciendo que también estoy diciendo las calles. Entonces se puede decir que tiene dos direcciones, y la calle es la misma. No puede ser lo mismo. Es decir, te refieres a la misma casa, y por eso me la estoy enamorando aquí. Espero que esto realmente funcione, chicos. Así que voy a volver y voy a hacer alguna explicación extra en la calle. Los veré chicos en el siguiente video. 26. Por qué no usaremos relaciones de entidades en JPA: Oigan, chicos, gracias por volver. Todo bien. Quiero hacer alguna explicación en torno a esto y particularmente en torno entidad subcontratada patrona nossa Graph calzor Estoy usando una lista aquí, Una lista de entrada debería ser una lista. Una lista contiene uno o más. Entonces ahora Sasa, estoy usando una lista aquí. Pero si ves por aquí, no estoy usando nada como eso, ni siquiera estoy incluyendo la dirección del empleado en absoluto. Aquí mismo, nunca voy a presentar dirección en absoluto. Pero esta parte aquí, entonces tengo mi dirección separada. ¿Por qué es que no tengo una relación que podría haber hecho a la vez muchos años? A en muchos, y podría haber hecho muchos a uno, escribiendo relación en relación con las otras entidades. Entonces tienen ese tipo de relación. Bueno, la cocina básica es que si estás familiarizado con JPA, JPA tiene una sobrecarga cuando en realidad estás creando cuando tienes una entidad cuyo elemento hijo es ahora mucho Digamos que ahora estás tratando de recuperar una entidad y el elemento hijo probablemente sea como 50 o 100 o más El problema con eso es que corta una sobrecarga. Hay una sobrecarga, y es un rendimiento intensivo. Entonces empiezas a tener que pensar en usar cosas como tal vez buscar tamaño, bien, o tu lote 50 Entonces esa es una manera de truncar, ¿verdad? Entonces, lo que significa que no obtendrás todos los datos en alt. Entonces yo por otro lado, no creo que sea yo personalmente esto es personal esta es opinión personal no es ideal para todos, ¿verdad? Personalmente, me gusta manejar mi lógica yo mismo donde separo las cosas limpiamente. Entonces tengo alguna forma de relación entre cada entidad. Es por eso que ve este ID de empleado se traduce a ID de entidad aquí. El departamento para el departamento, se ve el número de departamento también se traduce al ID de entidad aquí. Lo mismo para la externalización, también estudio se traduce al ID de entidad aquí Entonces, lo que ese usuario literalmente hace por mí es que solo puedo llamar a entidad cuando la necesito. Puedo llamar a un empleado, me origen stor departamento cuando lo necesite. Entonces cuando necesito la dirección, puedo tirar perezosamente. Entonces de esa manera, no me carga al sistema. Yo sólo lo llamo a voluntad. Ahora, tómalo de la instancia de una interfaz de usuario. Digamos que en realidad estás llamando a una interfaz de usuario. Si realmente estás en una interfaz de usuario, no la llames si estás en una interfaz de usuario, ¿verdad? Y vas a buscar la lista de entidades. Ahora, es sólo idea que no devuelvas todo a la vez. Sólo regresa a Yentis solo. Entonces por cada cosa que hagas clic, se realiza otra llamada al back end para luego buscar la dirección. Hay varios diseños justo alrededor de esto. Pero esto es solo mi preferencia, y por eso lo estoy presentando a. De ninguna manera, utilizo todos los tipos de entidad relación, la de uno a uno demasiados, y funciona muy bien. Pero solo necesitaba hacerlo de esta manera para señalar algunas de las Hecas Entonces, si es algo y tu empresa quiere adoptar, es algo que quieres probar personalmente. Pero al menos, has visto que hay un camino en el que puedes usar la relación y funciona. Este tamaraam que te muestra otra forma en la que podrías simplemente conectarte y conectar manualmente estos detalles solo significa que tienes que hacer más trabajo Tienes que escribir más código de bajo nivel, pero te da un mejor control cuanto a cuándo buscar y cuándo no buscar Pensé que en realidad debería mencionar esto, Esto es muy clave en el futuro, así que en realidad no compruebas esto. Habrá lista año, ¿cómo es que estoy viendo? Ni siquiera lo encuentro en este año. Porque recuerden, en realidad estamos atando de hecho encuentro esto que esta clave aquí realmente entra aquí para ser las claves una clave foránea aquí necesitaría. Entonces los veré chicos en el siguiente video. 27. Convertidor de Enum: Oigan, chicos, gracias por volver, ¿verdad? Entonces me he metido en checar este Git upp. Recuerda que todo está disponible. Lo estoy registrando con problemas con temas. Entonces, si estás familiarizado con GitHub, el momento en que realmente termines tu trabajo, podrías atarlo a un problema, y el número de problema simplemente se cierra y realmente ves trabajo, ojalá, lo mostraré antes de que realmente terminemos esto. Todo bien. Ahora, en este video, queremos hablar específicamente del convertidor num. Tenemos alrededor de cuatro nums que hemos definido, ¿verdad? Entonces, si nos fijamos en los ums, tenemos un tipo de negocio. Tenemos división. Tenemos papel, y tenemos deber, ¿verdad? Tenemos deber. Y creo que también tenemos uno húmedo cinco, ¿verdad? Género. Entonces, ¿cómo hacen estos num? ¿Cómo se traducirían a la base de datos? Entonces no tenemos ningún problema como si estás usando cosas como un enumerador, tienes que empezar dependiendo los dns y los likes, que si agregas otro num tendrán problemas Entonces esa es una experiencia aquí. Entonces lo que vamos a hacer es muy sencillo. Entonces voy a crear un nuevo paquete llamado num converter. Voy a llamarlo vamos a llamarlo paquete, un paquete. Llámalo um convertidor. Entonces voy a recoger a todos y cada uno de ellos y mostrarles cómo se hace. El primero, hablemos del tipo de negocio, ¿no? Vamos a traer el convertidor de tipo de negocio. El convertidor de tipo de negocio. Ahora bien, una buena manera de hacerlo, nos ha proporcionado algo deliberadamente de la asistencia de Jacara, que es un convertidor de atributos, que es un convertidor de atributos, y esa es una forma de convertir tu num a la base de datos o base de datos de nuevo Entonces, ¿ implementarías lo implementarías? No, esto no. Estos no son para completar. Convertidor de atributos. Convertidor de atributos. Sí. Entonces queremos esto de los negocios. Esto es suma de lanza. Entonces simplemente implementamos el método. Y como puedes ver, lanzas convierten a columna de base de datos, convierten a entidad Por lo que estamos convirtiendo el tipo de negocio a una base de datos col va a convertir de nuevo. Entonces el para fluir, ¿cómo se manejaría? ¿Es lo que vamos a hacer? Entonces para evitar también usar cualquier otra anotación extra en nuestras entidades, tomemos, por ejemplo, para la empresa, donde necesitamos negocios, usarlo así simplemente funcionaría Tenemos que añadir esto. Tenemos que agregar esto en convertidor, Auto aplicar a través de. Cuando aplicamos automáticamente a través lo hacemos detrás de escena. ¿Qué queremos hacer? Si el tipo de negocio, ¿cómo queremos convertir a columna de base de datos? Es muy sencillo. Solo haz atributos, que es un nombre de punto. Recuerda, ya atienden, si miras esto claramente, ya atendido para el tipo de negocio, creo que me perdí algo muy clave aquí Me alegro de haberlo comprobado. Esto habría sido un problema. Quiero especificar la longitud máxima ¿Cuál es la longitud máxima? Este es el más largo de uno a tres, cuatro, cinco, seis, 789. No quiero dejarlo abierto. Si lo dejo abierto terminado, se verá como una cuerda, y voy a tomar una columna 256. Yo sólo voy a entrar aquí, cognoscible cae y sólo te daré la longitud de diez, verdad, que es lo que tenemos aquí Esto es diez. Dije nueve personajes. Diez es suficiente. Diez deberían cubrirlo todo. Esto funciona. Esto funciona. Todo bien. Con esto, siempre que realmente hagamos un guardado en la base de datos, se convertirá y comprobará el nombre. El nombre y usar este nombre exacto y guardarlo en la base de datos. El está regresando, ¿cómo debería convertir? Vas a definir. Lo que voy a hacer es, recuerda, en realidad vamos a llamar a esto está bien. D datos. Datos de base de datos, entonces podríamos hacer una cadena de puntos matrices, luego pasar en los valores de punto de tipo de negocio. Tipo de negocio el valor, ¿puedes ver que nos da una matriz Por el tipo de valor de los usuarios, entonces yo diría, vamos a filtrar. Vamos a filtrar. Dije este tipo, este tipo de negocio, este negocio este tipo de negocio puntos nombre, ¿verdad? Punto es igual a ignos case, lo que significa que es igual a estos datos DB Entonces, lo que viene de DB debe ser igual a esto. Si eso es así, encuentra la primera ocurrencia. Bien primero. O de lo contrario. O bien, vamos a lanzar un error. O bien, vamos a mostrar. Vamos a mostrar vamos a lanzar una excepción de argumento ilegal entonces yo, ¿verdad? Hagamos esto. Hagamos esto, ¿verdad? Hagamos esto. O bien cierto, perdón, se cierto. Claro. Pequeña palabra verdadera. Bien. Ahora, no se preocupe por manejo de excepciones o vuelva a él y elimine esto y use nuestras propias excepciones personalizadas cuando lleguemos a esa sección. Vamos a ver esto por ahora. Bien, entonces para la división, sigamos adelante por la división. división, tipo de división o división, convertidor de división. Seamos consistentes, convertidor de división. Entonces, lo mismo, en realidad pasamos por lo mismo. En esta ocasión, me parece que va adelante. Entonces solo para implementar actubt converter, entonces tenemos división División, es una cuerda. Queremos que sea una cuerda. Cuerda. Entonces en convertir para aplicar en conversos, auto apply a través de la lección implementa todo este método. Ahora bien, esto es muy sencillo elegir los atributos nombre del punto. Preferí nombre a la cadena, esta, lo mismo, justo lo mismo aquí, males de copiar y pegar Tengan mucho cuidado aquí, chicos, lo contrario tienen un error. Yo sólo copio y pegando. Entonces esta vez alrededor de esta división necesito aquí. Divisiones sólo lo llamo Div. Dev Aviation, esto funciona muy bien. Voy a quitar el cielo. Todo bien. D con eso. Pasemos al deber. Recuerde, el deber es para los agentes subcontratados. Convertidor de servicio, ¿verdad? Convertidor dt. ¿Por qué llamo a este tipo? Tipo de negocio tipo de negocio. Deber, luego implementa convertidor de atributos. Entonces tenemos el deber, luego una cadena. Luego convierte auto apply a través de luego implementar todos los métodos. Me encanta la primavera. Me encanta inteligente solo todo este auto, autof. Entonces lo mismo aquí, vamos a hacer lo mismo. Recuerda, males de copiar y pegar, haz lo mismo excepto que sabes lo que estás haciendo Entonces necesitamos deber aquí códigos deber. Deber deber, y nosotros lo hicimos. Nos movemos esta parte. Después, a continuación, vamos al convertidor de género. Convertidor de género, ¿qué deletreé? Esto no es correcto, Ezequiel. Convertidor género género, tener implementos convertidor de atributos. Convertidor de atributos, cadena de género, luego auto apply que entra. Entonces tenemos Auto aplicar true. Entonces lo mismo que hacemos aquí, esto será esto debería ser atributos el nombre del atributo name. Entonces esta parte de aquí, al parecer, vamos a copiar a este tipo. Males de copiar y pegar. Lo estoy haciendo y estoy diciendo males de copiar y pegar. Esto es género, solo llámalo Gen. Yo lo llamo gen, entonces tenga esto Esto funciona. Hemos podido convertir esto y finalmente, por fin, estos espectadores se hacen muy largos. Hagamos esto rápidamente. Convertidor de roles, implementa convertidor de atributos de atributos. Entonces tenemos el rollo, luego la cuerda. No necesito esto. Esto es w. esta mal. Aplicar esto serían entonces los atributos, el nombre. Entonces lo mismo por aquí. D traer esto. Recuerden, voy a cambiar la excepción más tarde cuando la mencioné antes. Voy a cambiar eso luego traer esto. Voy a necesitar el papel, el papel aquí. Yo lo llamo rol Roll and roll. Todo bien. Antes de terminar este video, vamos a explicar qué es esto. Tomando el nombre, es decir, sea cual sea el nombre que le pasemos, solo recibe el nombre. El nombre será la representación exacta de lo que tenemos aquí. Esta representación exacta, acabo de dar a la base de datos. Ya hemos atendido, si nos fijamos en esto para el papel, creo que el rol en realidad se encuentra en empleado ya atendido para el cual es diez, que es el máximo que en realidad llaman, que es el máximo aquí Si miras a los personajes, los personajes son diez. Todo bien. Eso básicamente funciona. Lo que estamos haciendo en esta última parte es que estamos pasando por la matriz. Y si lo estás leyendo de nuevo que estamos dando, estás obteniendo la columna y convirtiéndola de nuevo a la entidad. Así que elige verificar a través del rol como una matriz. Después filtramos a través Wever role matches this remember the name is in as it is Si coincidía, bastante genial, todo lo que tenemos que hacer es encontrar el primero. Si no se encuentra, muestran en el argumento legal excepción. Bien, chicos, habiendo hecho esto, veré en el siguiente video 28. Cierre del problema en GitHub del convertidor Enum: Hola, chicos. Gracias por volver conmigo. Bien, mencioné que quería mostrarte una vez que crees esto, cómo vas a empujar en un tema. Creo que solo mostrarles una vez va a estar muy bien, así que no tengo que seguir haciéndolo. Ya he conectado esto a Git've inicializar esto está conectado a mi GiturPositU para este curso, que voy a compartir el enlace. Ahora di esto. Lo que va a pasar es que he creado un problema, así que vas a temas, puedes crear un problema He estado cerrando todo con un tema, como pueden ver, todo se ha cerrado con un problema. ¿Correcto? Estoy cerrando todo. Entonces, ¿cómo lo cierras? Gil hub tiene esta característica especial. Una vez que hayas creado un problema, solo digo que he creado aquí, que llamo convertidor tipo num. Podría copiar esto tal como es, luego comprometerlo con ese mensaje. Ahora el nombre, este nombre no importa. Se podría decir que tipo o simplemente vamos a hacer ese convertidor de tipo implementado. El nombre de la redacción no tiene que ser sincrónico. Sin embargo, el ID, este ID es muy clave. Tienes que usar esta idea, usar la palabra clave cerrar o cerrar. Cierra la identificación. Sólo cuando haces de esa única manera yo hago eso se cerrará esto? Vamos a probar eso rápidamente. Estoy cerrando así que eso limpiaría todo esto. Entonces tenemos todo colocado en una marca de puesta en escena, lo cual es genial. Entonces vamos a empujar. Y veamos esto. Entonces esto se ha ido automáticamente, esto está cerrado. Todo esto es una característica bastante impresionante. Pensé que les mostraba chicos. Así que no quiero aburrirlos chicos con esto así que me estoy saltando esto pero al menos ahora lo he demostrado para que puedan saber exactamente cómo estoy comprobando las cosas ¿Cuál es una de las bellezas? Una de las bellezas es que luego puedes ir más tarde a los temas. Una vez que verifiques los números, podrás ver tus números cercanos. Si quieres ver las carreteras de código que en realidad están en contra de alguno de los temas, puedes simplemente abrirlas. Una vez que abres siempre hay este commit, que es tu sha o tu hash. Una vez que lo abres, como puedes ver, ves todos los cambios que hiciste. Esta es una característica bastante impresionante para que pueda verificar cuándo y dónde realizó sus cambios. Bien, chicos, espero que esto haya sido muy informativo. Los veré chicos en el siguiente video. 29. Crea repositorios Jpa: Hola, chicos. Gracias por volver conmigo. De hecho, pude mostrarte cómo convertir realmente tu um a columna de base de datos, ¿verdad? Ni siquiera necesitamos molestarnos por ello, solo te sientas y lo creas automáticamente para nosotros. Puede que no mencione esto, pero automáticamente te das cuenta en el momento en que realmente comienzas a crear entidades o los datos, simplemente se crea automáticamente. Todo bien. Bien, entonces en este video, vamos a crear reposit reposit Entonces voy a entrar y crear un paquete. Yo lo llamo reposie, ¿verdad? Voy a llamar a lo contrario. Empecemos. Voy a partir de mi empresa sentarse debería ser una empresa de interfaz postular, C tres Entonces voy a implementar extender, perdón, extenderé el JPA, el reposito GP Esto tomará compañía y estamos usando una identificación usu aquí. UID. Eso funciona. Identificación de la UE. Ahora, yo también estaría extendiendo. También estaría extendiendo y usando el ejecutor de especificación JPA porque usaremos alguna especificación JPA Ahora, lo genial de la especificación JP es que podríamos filtrar y filtrar dinámicamente o recuperar dinámicamente algo en la base de datos, y realmente va a ser bastante increíble agregarlo a este costo Entonces por eso en realidad agrego un poco, ¿verdad? Así que esto es genial, ¿verdad? Entonces esto es muy necesario, y una de las consultas que necesitaremos es que estamos tratando de buscar a la compañía bien por su nombre Sí. Bueno, esto estuvo muy bien. Pude averiguarlo bien por su nombre. Entonces esto es muy importante. Vamos a estar usando a estos tipos. Entonces dejo esto adentro. Podrías seguir adelante y agregar ese repositorio aquí o no lo agregas. Se marchitan agregan o no lo agregan, funciona, ¿verdad? Esto se alimenta automáticamente para ti, ¿verdad? Así que publica solo consistente y solo agrégalo. Creo que lo dejaré así. Entonces podrías o no podrías. Esto lo anotamos, chicos, podrías o no podías. Entonces vayamos a departamentos, Departamentos. Un repositorio de socios. Posit se extendería o es una interfaz, es una interfaz o una clase Permítanme seguir adelante y agregar ese Reposit para que sea consistente Ellos sumarán la JPA. Miembro del departamento del repositorio JP usando UUID, UUID. Entonces lo mismo también será será el ejecutor de JP, utilizando el ejecutor JP Esto es chicos muy muy importantes. Lo que necesitaría algunos detalles que es que voy a estar tratando de buscar la lista de departamentos Sí, está bien, pero encontraremos departamentos por nombre de compañía. Creo que vamos a necesitar esto. Encuentra departamento por nombre de empresa. Esto es muy clave. Encuentra departamento por nombre de empresa. Recuerda esto, estoy seguro si estás familiarizado con JPA. En el momento en que haces esto, esto crea automáticamente una consulta detrás de escena. Lo que esto hará es hacer algo como seleccionar estrella del departamento donde el nombre de la compañía es igual al pase la llamada. Entonces esa es la consulta que me van a generar. Entonces, lo que haría, creo que ya lo he hecho aquí. Ya he habilitado la consulta de show. Cada vez que hagas una llamada, verás que la consulta se emite. Entonces por eso habilité esto. Entonces ves la consulta. Entonces, cuando no estés seguro del tipo de queri que voy a generar, podrías usar esto para aprender la consulta que realmente obtendrías Bien, así que vayamos a empleado. Creo que me estoy volviendo perezoso. Pero, hombre, no quiero ser perezoso. No quiero cometer ningún error aquí. Entonces va a ser una interfaz. Empleado el puesto Estoy jugando YPostT ser un Yaposti. Al parecer, esto debería extender JPA. Proceder a empleado y este será un UID. UID. Entonces de la misma manera usando JPA como acto o suscripción como una Q que realmente funciona Creo que podría estar necesitando dos detalles a partir de aquí. Necesitamos dos detalles. Necesitamos que el empleado opcional encuentre por ID de empleado. Gracias. Gracias, JPA Gracias, JPA. básicamente nos daría que no hay una cadena. Recuerda que el ID del empleado es una cadena. Si no estás convencido de que vamos, ID de empleado es una cadena, entonces es una cadena que necesitamos aquí. Entonces también, necesitamos una lista de empleados. Entonces ya conoce la lista de empleados, entonces sí encontramos todos por empleado en. Podrías hacer esto. Ahora, esto genera una consulta. Se trata de queri quien genera. Entonces para hacer esto, hacer algo como seleccionar estrella de empleado, por lo que será de empleado donde la identificación en, luego pasas en una lista de identificaciones. Digamos, digamos, ese es el ID uno, hice dos, hice tres, hice cuatro. Esta es la cotización que vas a utilizar. Seleccionas el ID de desgaste del empleado en, ves generador. Ahora, estoy haciendo esto porque paso una lista de identificaciones para poder obtener todo el empleado que vas a necesitar estos datos en la cancha. Yo sólo pensé definirlo ahora mismo. Esto es bastante genial. Definamos un subcontratar. Externalizar reptoct un repositorio de origen vamos a Interfaz de interfaz. JPA, reposita, entonces tenemos el subcontratar y tenemos ¿Vamos a estar necesitando algo? ¿Vamos a necesitar algo aquí? Sí, estamos en estos. Creo que el mismo detalle que este, ¿verdad? Sí, me olvido, también estaremos extendiendo el JP como ter. Gracias. Entonces la llave también. Entonces también necesitamos un hallazgo opcional por, necesito por hallazgo por ID subcontratada externalizada SoCd. Creo que esto se llama, ¿verdad? Multa por. Externalizar ID codificarlo. Confirmemos tercerizar Externalizar ID de subcontratación. Tan bien por subcontratar ID. Entonces lo conseguirá correctamente para estar feliz de saber. Bien. Esto está bien y va a estar tomando una cadena de cadena de subcontratar ID Empleado, ¿es lo mismo? Sí, que así sean ellos. Entonces nosotros básicamente, también estaremos necesitando una lista. Una lista. No lo subcontraten Entonces obtenemos un hallazgo hallazgo yo fuente en es bastante informativo. Pude hacerlo pero quiero usar. Encuentra por esto y por lo que funciona. Entonces, finalmente, vamos a crear una dirección. Address, que implementamos o extendemos más bien. Esta es la interfaz, entonces extendería la interfaz miembro extiende la interfaz, luego JPA, la publicación JPA, luego la dirección, entonces esto sería UID UUID. Es repositorio, consistente, entonces esto realmente tendría Esto es exactamente lo que necesitamos. ¿Necesitamos algo de MAD? Sí, creo que necesitamos dos cosas. Necesitamos dos detalles. Número uno, necesitamos una lista de por lista de direcciones, encontrar por ID de entidad. Necesitamos ID de entidad. Debe ser ID de entidad. DNI. Entonces también necesitamos una dirección opcional. Dirección opcional. Bien por creo que hemos estado necesitando dos cosas aquí. Así que hemos estado necesitando multa por NTT ID y UUID. Y ves la razón por la que luego ¿verdad? Entonces necesito esto. Voy a necesitar un UUID y UUID Todo bien. Bien, entonces estos son los detalles básicos que necesitamos. Uh, esto es muy clave. He podido definir todos nuestros detalles. Tenemos una postura en cada uno? Sí. Hemos sido capaces de definir esto en el ejecutor de suscripción JPA JPA all extend Esto ya se está convirtiendo en un video largo. Vuelve a explicar realmente un detalle más aquí, que es muy, muy clave. Los veré chicos en el siguiente video. 30. Implemente solo el repositorio que necesita: Hola, chicos. Z aquí. Bien, esta es información muy importante muy importante Necesito que ustedes presten atención. Ahora, veo un error común que cometen los desarrolladores. Cada vez que implementan o usan JPA, siempre antes solo extienden la postura de GPA, pero no tiene que ser ¿Eres consciente de que JPA extiende internamente multitud, también extiende cosas como la paginación, que es la paginación de un determinado repositorio La regla es implementar lo que necesites, implementar lo que necesites. Ahora, por razón de justificación, la razón por la que estoy usando un ejecutor de suscripción de JPA es porque un ejecutor de assocption de JP escribe Esto escribe en él. Esa es la razón por la que en realidad estoy creando necesitando la especificación. Voy a necesitar cosas como pagables. Si tuvieras que checar dentro de este tipo, te darías cuenta básicamente notarás que estos son los detalles que básicamente nosotros. Entonces es muy importante, ¿ verdad? Es muy importante. Conoces estas diferencias, ¿verdad? No uses el depósito JP si no lo necesitas. Si todo lo que estás haciendo es solo una identificación, crea una actualización, eres mucho mejor simplemente implementando el depósito crod Así que tenga en cuenta que hay diferentes tipos. Por favor use solo el depósito Crod, ¿verdad? Si ahora estás diciendo que quieres una lista, elegirás una lista Depositry de código ¿Cuál es la diferencia? Demos un paso a paso. Ahora mira a la Multitud. El código te da básicamente todo lo que necesitas. Puedes hacer un guardado, puedes hacer guardar pasando múltiples. Podrías hacerlo bien por existir. Todo viene a ti por defecto. Tienes todo esto. También tienes cuenta. Ahora, ahora estamos diciendo, Bien, quiero poder obtener una lista de esto. Entonces considere usar una lista llamada depositario. Esto se acaba de agregar en algún momento reciente. Entonces no está ahí desde el principio. Ahora bien, ¿qué te da esto? Esto le da el aspecto de guardar múltiples entidades y guardar múltiples A diferencia de la multitud, te dan guardar todo pero obtienes un comedable Pero en esta parte, puedes guardar todos y obtener la lista, ¿verdad? Una caridad o una lista. Elige cuál quieres, iterable o una lista, ¿verdad? Antes de eso solo tienes que usar un comedable. Entonces cuando obtienes el netb entonces tienes que convertirlo probablemente en una lista y los likes, aunque ambos sean parte de la colección y biblioteca Bien, lo mismo también, si ahora miras a JPA, si ahora quieres hacer cosas como paginación, paginación, entonces quieres usar cosas llamadas la biblioteca de paginación y picadura Esa es la epstura de paginación y picadura que quise decir. Esta es la parte que te da el aspecto de pagable donde obtienes una página y comienzas a desplazarte Recuerda el concepto de paginación, es como si estuvieras desplazándote por Esto es muy importante, chicos. Solo implementa lo que necesites. Cuando vas a entrar, puedes, antes que nada, entrar en Paging y a JPopositre entrar al repositorio JP así, hacer clic de Control o entrar, ver si esto hacer clic de Control o entrar, ver si Si esto es demasiado, ir a la multitud e ir a la multitud y decir que esto contiene lo que necesitas, usa esto solo. Si la lista contiene todo lo que necesitas, usa esto solo. Espero que el concepto sea claro chicos para que no tengan que empezar a preocuparse por todo esto. Ahora, también veo algunas personas también alguna escuela diferente de decir, deberías usar bien por debería usar Geb Ambos son aceptables. Podrías usar Fine By y podrías usar Geb. Esto no va a romper nada. También podría entrar y decir, se las arregla. Esto es lo mismo. Esto se traduce exactamente en esta misma cosa. Solo sé consistente. Si estás usando find, usa find todo el camino. Si estás usando get, usa get hasta el final. Espero que eso quede muy claro, chicos. Sólo pensé que debería mencionárselos eso a ustedes. Al mismo tiempo, si te das cuenta, vamos a perforar en Crowd, también hay un concepto de ejemplo. Déjenme mostrarles eso chicos. También es un concepto de ejemplo, que ustedes deben estar al tanto, ¿verdad? Entonces también podrías usar el ejemplo por estas cosas son solo formas diferentes de lograr lo mismo, ¿verdad? Así que elige lo que uh, creo que lo he visto. Consulta por ejemplo. Entonces ves ejemplo, ejemplo, ejemplo, ejemplo, ejemplo. Todo se envolverá alrededor de este tipo de ejemplo. Lo cual básicamente es hacer casi lo mismo. Solo usa lo que te resulte cómodo. Si quieres usar una G, usa un get si quieres usar un find, usa un find y solo implementa lo que necesites. Me estoy tomando el tiempo para explicar esto para que para cuando estés empacando, para cuando estés empacando, vamos a estar usando salsa y esto que estemos quitando las cosas que no necesitamos Si tan solo implementamos una codificación se va a quitar todas las demás cosas que no necesitamos, y eso hará que nuestro artefacto de construcción sea más pequeño Esto es muy importante para que sepas exactamente cómo navegar por el repositorio JPA Con ese set de construcción, revisaré a este tipo y los veré en el siguiente video. 31. Consulta inicial en Graphql: Oigan, chicos, gracias por volver conmigo. Es genial tenerlos aquí, chicos. Bien, procedamos. Vamos a proceder. Lo que vamos a lograr en este video es que queremos empezar a dar vida a todos los puntos finales a utilizar en este curso de Gap Kell, Entonces, el primer paso para poder lograr eso es crear el punto final G va a ser necesario, ¿verdad? Entonces los puntos finales se conectarán por lo que necesitamos definirlos realmente en términos de Bquery y mutación Recuerda que mencioné, cuando en realidad estás tratando con consulta, igual que para los tipos de auditor. Entonces estás lidiando con consulta, consulta básicamente significa todo lo que estás leyendo, toda la lectura en tu cuajada, ¿verdad Que es todo lo que dices que estás haciendo un HTTP. Entonces la mutación es cualquier cambio, crea actualizaciones eliminar, ¿verdad? Así que vamos a estar haciendo a estos dos. De hecho tocamos esto en la sección posterior porque en realidad se requiere cierta atención especial. Así que en realidad estamos haciendo esto. Todo lo que necesitamos en el Quervy y la mutación, vamos a meternos enseguida en ello. Muy bien, genial, genial, genial. Entonces lo primero que voy a estar creando es ya que tenemos el concepto de que tenemos entidades aquí, así que simplemente voy a seguir adelante y crear un archivo unificado llamado query. Yo solo lo llamaré puntos de consulta Graph QLs. Consulta Gp QLs y Quit Graph QLS, esperamos que luego tome tipo, aparentemente asociado tipo query ¿Cuáles son las cosas que quieres hacer Recuerda, estamos tratando con empresa, departamento, empleado y subcontratados Empecemos a verlo paso a paso Lo primero que creo que deberíamos hacer sería entonces ir a buscar toda la compañía. Vamos a buscar a nuestra compañía Una vez que hayamos creado toda nuestra empresa, queremos buscar todo, buscar toda Quiero darle una respuesta llamada, como pueden ver, aquí no estoy pasando ningún parámetro. Miembro, chicos, si van a comparar con los tipos de auditor, en realidad podrían pasar parámetros. Podrías pasar en parámetros. Pero alli company, al parecer porque al igual que digamos, dos o tres compañia, no queremos muchos, no queremos ningún parámetro. Le voy a dar algo llamado respuesta de toda la compañía. Todo esto es diferente. Esto es definido por mí. Una respuesta de la empresa. ¿Y cómo será la respuesta de toda la compañía? Volveremos en un minuto, solo continúa. Al siguiente vamos a buscar todos los departamentos. Al parecer, todos los departamentos dentro de una empresa, todos los departamentos por nombre de empresa, por nombre de empresa. Recuerda que por eso hicimos que el nombre de la empresa fuera único. Si revisas nuestra entidad, mira la empresa, mira el nombre. Estamos diciendo que el nombre debe ser único. Podrías haberlo definido aquí o podrías haberlo definido aquí. Espero que estés siguiendo a chicos, increíble. Quieren buscar todo el nombre de la compañía, al parecer esto ahora tomará impute, decimos compañía, nombre y nombre común es lo que cadena Cadena lo hago importante diciendo que queremos que esto sea importante y vamos a estar obteniendo la respuesta de departamentos Departamentos. respuesta del departamento es realmente importante. Después el siguiente. Ahora, queremos ir a buscar a todos los empleados. Hagamos una búsqueda básica todos los empleados empleados que estén disponibles en todo el sistema. Nosotros solo decimos búsqueda de empleados. Búsqueda de empleados. Ahora, recuerden, como mencioné en el último video, en el último video, o es el último video de un par de videos. Pero cuando mencioné que creamos una interfaz llamada presionar, ¿verdad? Y el prensado en realidad es implementado por empleado, y también implementado por el subcontratar Así también implementado por sur. Básicamente podríamos decir, si realmente sintonizas una búsqueda de empleados, deberías poder devolver ya sea el subcontratar o el empleado principal Entonces en ese sentido, lugar de regresar a cualquiera de los dos, estoy tratando de ver cómo se une, aquí es donde entra la interfaz que creamos, que es bastante dulce. Así que esta vez voy a decir, ¿es esto un subcontratar Entonces, hazlo importante. ¿Se subcontrata o no, si no lo es, o si es persona de retorno? Espero que esto tenga sentido, chicos. Ahora en realidad estoy regresando en persona, así que no tengo que preocuparme, digamos, ¿es esto un empleado o es esto un subcontratar Cualquiera que sea el que regresemos en realidad nos daría los detalles que necesitamos Y les voy a mostrar chicos cómo va a funcionar esto porque ahora hay esta cosa común que vamos a hacer de una manera que vamos a extraer y obtener los otros detalles si es para empleado y otros detalles si es para subcontratar Más cosas buenas por venir, chicos. Más cosas buenas por venir. Bien, así que vamos a suplir rápidamente este detalle Vamos a resolver este detalle, que es toda la respuesta de la empresa. Ahora, al igual que todas las respuestas que tienen la mayoría de las aplicaciones, vamos a darnos una respuesta base para trabajar, ¿verdad? Démonos una respuesta base con la que trabajar. Y con eso, voy a crear voy a crear un Graph QLs llamado response gpqlsrspons do Graph QLS va Haré tu respuesta, ¿verdad? Ahora, lo genial de esto es que voy a decir que ella acaba de devolver el éxito es el éxito, que va a ser un lingote Entonces también debes devolver un mensaje. También devuelve un mensaje para que sea cadena, ¿verdad? Al parecer, estoy haciendo esto importante por alguna razón y esto no es importante. Podríamos tenerlo o no podríamos tenerlo. Ahora, teniendo esto, recuerden a lo que nos dirigimos son los compañeros y la respuesta del departamento. Lo que voy a hacer, entonces voy a entrar en la empresa. Voy a entrar en el detalle de la compañía que voy a crear lo que necesito, y ese entonces será un tipo un tipo de crédito con el mismo nombre por aquí, el mismo nombre. Va a ser una respuesta de la empresa entonces para implementar la respuesta. Entonces obtienes un éxito. Recuerda, cuando implementas, debes traer todo . Eso es un cero. Si no traes todo, se va a quejar. Así que yo solo voy adelante y solo traigo todo. Entonces este tipo ya no se quejará. Fresco. Y voy a añadir otra cosa que van a ser las empresas, las empresas, que va a ser una empresa, DTL va a ser importante Estoy diciendo que podría conseguir una o más compañías. Una empresa obligatoria y si es más de una va a ser una lista. Seguro que consigo uno, pero no estoy seguro de ser más de uno. Por eso no estoy haciendo importante esta lista. Espero que sea claro chicos. Sigamos saltando a departamentos. Departamento también tenemos lo mismo. Sólo tenemos que conseguir ¿cuál es el departamento abajo? Qué es una consulta una consulta acaba de obtener esto, solo obtenga la respuesta del departamento. Entonces solo entra aquí y haz lo mismo en el tipo de crédito, e implementaría respuesta. Al mismo tiempo, así que recuerda que tienes que traer todo. Estoy trayendo todo. Y lo genial es que ahora tenemos que traer también todos los demás detalles que queremos para lo que es departamentos, ¿verdad? Y este tipo va a tomar adivina ya. Seguro que ya lo adivinaste. Tengo que llevarme te voy a departamentos de término, DTO, obligatorio y el menos opcional Bien. Bien. Creo que esta es una buena jugada. De hecho, hicimos algo genial. Así que vamos a repasar rápidamente lo que hicimos. Entonces lo que hice ahora queremos empezar a consultar. Recuerda te dije que tenemos tres tipos y graph qu query, una mutación o una suscripción. Aquí estamos tratando con la consulta donde queremos realmente ahora comenzar a interactuar, más como estamos usando para conectarnos a nuestras APIs o endpoint, por así decirlo De hecho estoy cuating tres Gita, que es la compañía que es la empresa fetual que me das respuesta de tu empresa que me das respuesta de tu Un departamento Fatual por nombre de empresa. Recuerda, estaremos demostrando tres o arrancando tres empresas y una búsqueda de empleados , ¿verdad? Una búsqueda de empleados. Y aquí le expliqué que no tenemos que decir específicamente quiere devolver empleado o externalizado Esto es que ambos implementan esta interfaz de persona Lo mejor es devolver una interfaz de persona. El show conseguirá una persona, ¿verdad? Y también podría ser más de una venia regresando y te mostré cómo se construyó toda la respuesta de la compañía, lo cual es bastante sencillo. Simplemente implementamos la respuesta, y la respuesta básicamente tenemos estos dos detalles, el éxito y el mensaje. Entonces solo agregando este detalle extra para buscar el detalle de la compañía De igual manera, para departamentos, estamos haciendo lo mismo y solo regresando departamentos, y tenemos un DTO departamental, ¿verdad Bien, chicos, esto es genial, chicos. Te veré en el siguiente video. 32. Consulta inicial en Graphql 2: Oigan, chicos, gracias por volver. Todo bien. Entonces creo que podemos proceder desde donde empezamos. Antes de verificar esto, solo estaba pensando, creo que sería genial crear realmente uno más así que realmente crear un tipo de consulta más. Ya que estás buscando, creo que será genial crear algo llamado empleados Búsqueda de empleados por ID de personal. Básicamente podemos pasar una identificación de personal. Recuerda que es un UUID. En este caso, se pasa un personal lo siento, la identificación patronal. Me refiero a la identificación del empleador y su identificación de origen, identificación de empleado y su identificación de origen. De hecho, podrías encontrar empleado establecido por ID de personal. De esa manera, podríamos decir que esta es la identificación del personal. ID del personal, y quiero que sea una cadena. Al parecer, va a ser una cuerda. Entonces estaremos regresando a una persona, sólo una entidad así que devuélveme a una persona. Pero creo que esto es genial, chicos. Tenemos que devolver esto. Voy a hacer que no sea obligatorio. ¿Y si no encontramos que el empleado realmente podría dar la excepción adecuada Bien, entonces traeré esto. Todo bien. Grace, creo que con esto hecho, en realidad puedo verificar el código. Básicamente puedo verificar el código para que podamos ver cómo se desarrolla eso. Voy a crear un problema voy a crear un problema mostrarles chicos. Al parecer, de la misma manera, por sólo reforzar un aprendizaje. Creo que traje el equivocado para reforzar un aprendizaje. Entonces llamaré a esta consulta inicial, consulta inicial. Por lo que llamo a esta consulta inicial. Sí, llamemos a la consulta inicial gráfica gráfica consulta QL. Al parecer, empiezas lo que mezclo, consulta gráfica inicial. Entonces copio esto, recuerden, tengo que copiar. Entonces saco esto, entonces recuerda que tienes que apegarte a la palabra clave. Esa palabra clave es bastante importante chicos y se compromete y luego hay que usar esta palabra clave cierra. Coloco esto en. Eso era cierto, entonces yo haría un empujón de Gets. Me van a empujar, pero esperamos que esto realmente me comprometa. Esto cerrará de inmediato. Impresionante, increíble, increíble, chicos. Pensé que es solo agregar que una pieza más de información. Va a llenar esta consulta con muchos detalles. Hay algunas cosas extras que iban a hacer. Vamos a tocar la paginación. Vamos a tocar algunas cosas de socket web o los gustos. Son algunos detalles más por venir chicos. Todo bien. Entonces esto está bien por ahora, saltemos al siguiente video mientras analizamos la mutación, alguna de las mutaciones básicas con las que quiero comenzar. Bien chicos. Te veré en el siguiente video. 33. Mutación inicial en Graphql: Oigan, chicos, es bastante increíble tenerlos de vuelta. Todo bien. Procedamos de donde paramos. En el último video, en realidad agregamos una consulta más. Agregamos un detalle más a la consulta. Entonces para poder buscar por ID de empleado. Ahora veamos alguna mutación, ¿verdad? Entonces la mutación iba a hacer. la misma manera, solo voy a repasar y simplemente crear un archivo llamado mutación. Punto de mutación DAFQLS. Gráfica QL, ¿verdad? Recuerda, eso tiene que ser gráfico QLs. Todo bien. Así que vamos a crear algunos detalles y eso va a ser bastante impresionante, así que sigamos adelante. Entonces, si lo piensan, chicos, voy a decir tipo. Mutación, al parecer, tiene que ser M. La mutación es muy clave. Entonces se puede decir que crea compañía. Eso es bastante correcto. Tienes que ser capaz de crear empresa, ¿verdad? Buena compañía. Entonces lo llamaré empresa imputa Eso es lo que vamos a conseguir, bien, los detalles que necesitamos. Recuerden, ya creamos algo para compañía, chicos. Si nos fijamos en estas piezas, ya tenemos imputes de empresa, que contiene todos los detalles básicos necesitamos para crear nuestra empresa Así que simplemente voy a hacer clic en esto, y eso es lo que voy a estar usando aquí. Entonces voy a estar tomando un aporte de la compañía, y esto es obligatorio. Entonces voy a estar devolviendo algo llamado respuesta de creación. Respuesta de creación. Esto lo vamos a definir. Bien, a continuación, vamos a crear departamento de departamentos. Entonces en crear departamentos, tomamos un departamento insumos. Departamento imputa, ¿verdad? Entonces ya lo has adivinado. Entonces lo tomo departamento imputa, ¿verdad? Y también va en respuesta de creación. Recuerda en API estándar, no quieres revelar demasiada información. Solo quieres decirle a tus usuarios si estás creado o no. Entonces lo mismo no va estar revelando demasiada información. Bien, siguiente, hagámoslo, déjeme darle un poco de espacio, crea empleado. Empleado de seguridad, seguro que ya lo has adivinado. Entonces voy a tener algo llamado empleado empleado subcontratado, ¿verdad Y te diré que estés en un minuto. Empleado subcontratado Y voy a estar recibiendo el detalle llamado empleado subcontratado. Imputa. Y esto debería estar regresando también devolviendo una creación, una respuesta de creación. Bien, vamos a tratar rápidamente con los detalles que hemos creado hasta ahora. Impresionante. Impresionante. Bien, así que vamos a saltar. Si miras esta parte, si miras esta respuesta de creación, ¿cómo deberían ser? Pasemos a esta respuesta que creamos antes. Voy a crear un tipo. Al parecer, va a ser un tipo al que estás devolviendo un tipo llamado creación. Respuesta de creación, luego implementa esta respuesta. Si lo implementa, ¿qué significa? Significa que en realidad tenemos que traer esto también. Entonces todo lo que voy a escribir es solo UUID, solo el ID, ID de creación El ID en el que se creó eso , eso es todo lo que voy a estar regresando. Entonces esto estará sonriendo. Todo esto sonríe. Eso está escrito. No quiero revelar demasiada información. Trate de seguir fiestas estándar, pesar de que vamos a romper gran parte de su externalización reza subcontratada ¿Por qué crees que quiero crear esto abajo? La razón por la que quiero crear esto es recordar que tenemos dos secciones de empleado o ambos son empleados, que es el empleado principal y tú subcontrataste Es justo cuando en realidad lo que hago. ¿Bien? Es justo cuando lo estamos creando, podemos recibir la entrada de una vez. Una vez que recibimos el insumo a la vez, estamos cortando a un empleado, lo usamos para el empleado y estamos seguros que el de externalizar no es necesario los parámetros por lo que los campos o los atributos no se necesitan los campos o los atributos o el subcontratar Y estamos cortando una externalización, estamos seguros de que el parámetro o el campo para el empleado no es necesario Sigamos a la derecha y creémoslo. Entonces no encaja en esto, no encaja en esto. Lo que voy a hacer, lo que voy a hacer es simplemente voy a crear algo que se llama solo vamos a llamarlo, solo quiero algo, algo, algo que no así que quiero separarlo. Vamos a llamarlo yo solo lo llamaré genérico compuse genérico Una impusa genérica. ¿Yo pienso qué? Genérico comp GAF QLs. Recuerde, aprovechando el hecho de que en realidad podríamos escribir tantos archivos, y esto en realidad sería escaneado y todo estaría listo. Bien, entonces lo que queremos crear, como mencioné, Ea, es este tipo. Entonces que al parecer va a ser un impus. Recuerda, cuando en realidad estás haciendo usando una entrada, tiene que ser un impus, ¿verdad Entonces ahora, recuerden, ya tenemos una persona realmente tenemos una persona. Creo que puedo seguir adelante y simplemente copiar todo esto, luego mirar lo que necesitamos. Veamos esto. No necesitamos el UUID, este se creará automáticamente para nosotros. Necesitamos un nombre, fecha de nacimiento, género, no necesito un salario. Necesitamos un salario. Necesitamos la dirección. Necesitamos la edad. W necesitamos un número de teléfono cuando la empresa. Recuerda, esto tiene que ser direcciónponer dirección imputar. Hay que pasar en la dirección impute. Entonces estamos explicando que en realidad cuando creamos eso para empleado, ¿recuerdas esto? Sí, seguro que lo recuerdas. Ahora solo estoy creando algo que es único para ambos. Sólo estoy uniendo a ambos . En lugar de tener dos puntos finales separados, uno para crear empleado y otro quiere crear un subcontratar Podríamos haber hecho eso, pero solo deberíamos unirlo. Probablemente apuesto perezoso de todos modos. También es una manera de ver cómo podemos usar tanto la composición. Esto es muy clave. Podemos usar la composición, y la forma en que funciona es obtener algún campo y otros campos que no necesitamos. Entonces, los detalles para empleado que necesitamos son prueba, estos son los detalles que necesitamos para el empleado. Pero esto es sólo para el empleado, así que voy a agregarlo. Entonces en la identificación del empleado, el número de departamento, el rol de correo electrónico. Al parecer ya que esto no voy a ser ya que podríamos estar cortando nuestra fuente, no necesitamos que sea obligatoria, ¿verdad? Estoy seguro que lo entienden, chicos. Esto es obligatorio. Esto es obligatorio, esto es obligatorio. Pero para este tipo, no es obligatorio. No es obligatorio. Entonces también para el subcontratar, ¿qué necesitas para el subcontratar Comprobamos la externalización. Esto es tan detalle que en realidad hablan con el subcontratante o habla del subcontratar Traer esto en parte pronto será obligatorio. Ya sabes la razón por qué porque es opcional. Podríamos estar cortando empleado, esta sería opción esto no va a ser necesario. Podríamos estar cortando externalización, esto no va a ser necesario. Aclarar las cosas, chicos. Entonces, si vuelves aquí, esto se ha creado con éxito. Esto ha sido creado con éxito. Bien, chicos, creo que este video se está haciendo muy largo. Volvamos en el siguiente video y agreguemos algunos detalles más a una mutación. Bien, chicos, los veré en el siguiente video. 34. Mutación inicial en Graphql 2: Hola ahí. Es bueno tenerte de vuelta. Bien. Entonces, lo que vamos a hacer, como mencioné en el último video, vamos a estar agregando algunos detalles más a esta mutación. Bien, vamos a meternos en ello. Bien, entonces voy a seguir adelante y agregar en la actualización. Digamos que queremos actualizar una dirección de empleados existente, ¿ verdad? Deberíamos ser capaces de hacer eso. Oye, acabo de mudarme a me acabo de mudar a otra parte del país o me mudé a otro Debería seguir siendo tu empleado, deberías poder actualizar mi dirección. Fresco. Diré actualización empleado. Domicilio del empleado. Entonces estás actualizando la dirección del empleado, deberías estar tomando la dirección imputa. Toma tu entrada de dirección y solo traeré la dirección Imputs, ¿verdad? Y debe ser obligatorio. Entonces sólo voy a devolver la respuesta de creación, también, ¿verdad? Eso debería estar bien. Entonces al mismo tiempo, también, digamos que queremos actualizar los datos de los empleados. Actualizar los datos de los empleados. Esto también es muy clave actualizar los detalles de los empleados. Ahora, ya hemos ido adelante para crear algo antes de ahora, así que solo haciendo uso de eso, llámalo actualizaciones de empleados. Ahora llámalo actualizaciones de empleados Imputs. Os voy a mostrar chicos en un minuto. Eso lo hicimos y vamos a estar necesitando esto. Entonces la respuesta de la creación, ¿verdad? Así que vamos a verlo. Y estas son las actualizaciones de los empleados, ¿verdad? Entonces, una vez que se actualiza una vez que dices la identificación del empleado , el salario, la edad y el rol, probablemente podrías agregar el subcontratar tú mismo, ¿verdad Solo quiero enfocarme en empleado cuando estés actualizando la IP del empleado, es bastante impresionante, ¿verdad? Entonces quiero aburrirlos chicos con repetitivos o hacer lo mismo Bien. Bien, chicos, hemos sido capaces de crear esto. Uh creo que es bastante impresionante agregar estas cosas en. Entonces en este momento, creo que entonces estamos en condiciones para luego empezar pasar a lo siguiente para luego ver cómo empezar a implementar. Si lo piensas, el primero que debería implementar no debería ser consulta, Porque no hay datos, hay datos, piénsalo si no hay datos, qué estoy leyendo. El primer punto final de QL Q que debería estar implementando es para la mutación Y al parecer entonces luego vamos después a la consulta. Estoy seguro que me están haciendo chicos. Compañía de crédito, departamentos, el empleado, luego empezamos a ver cómo funcionan las cosas realmente. Con esto dicho, los veré chicos en el siguiente video. 35. Una consulta, una mutación: Oigan a todos, y agradecidos tenerlos de vuelta conmigo. Todo bien. Lo que vamos a hacer en este video, vamos a estar implementando los controladores para la mutación. Recuerda, como mencioné en el video anterior, mencioné por qué tendrías una identificación sin tener algunos datos en la base de datos, solo es ideal. De hecho, comenzamos con el aspecto de la mutación. Cortar algunos controladores para ello y ver luego proceder de ahí. Antes entonces arrancamos tentadores para las consultas. Todo bien. Pero antes de continuar, en realidad quiero mostrarles algo, ¿verdad Si sigues adelante, solo golpeo esto y solo hago v y compilo para compilar todo lo que realmente hemos hecho hasta ahora. Si realmente haces esto, vas a ver quién recibe un error. Y eso realmente deletrearía algo muy clave. Verás, estamos recibiendo este error. ¿De dónde viene este error? Esto es muy claro. Es decir, si miras esto, está diciendo que ya hemos definido esto. decir, ya tenemos una consulta, ya tenemos una mutación y ¿por qué es eso? Si recuerdas en nuestros datos, por qué en realidad tratamos de arrancar esto es quejarnos de que, oye, estás cortando una consulta de tipo aquí y estás cortando una mutación de tipo aquí por aquí, también estamos cortando mutación Webster creando consulta. Sólo se puede tener una mutación y sólo se puede tener una consulta. No puedes tener ambos. Tener a ambos en realidad entraría en conflicto. No sé cuál usar como tu punto de entrada, lo que vas a hacer o lo que vamos a hacer es entrar aquí y renombrar esto. Vamos a seguir adelante y renombrar esto. Como nos hemos apegado a la muestra de palabras clave, llamemos a esta consulta de muestra, consulta de muestra. Entonces llamemos a esta mutación de muestra. Esto es muy importante, chicos, necesitan saber que solo pueden tener una mutación querer, y por eso dicen que creé solo un archivo para manejar todas nuestras consultas, y creé otro archivo, que es un archivo GAF QL para manejar realmente una mutación y esto básicamente debería hacer el trabajo Si vas ahora mismo y claro y haces una compilación de VN, y veamos cómo resulta esto. Entonces ahora estás haciendo la compilación, ¿obtenemos el mismo error? No, no obtenemos el mismo error. Espero que esto sea claro chicos. Sólo se puede tener una consulta. Sólo se puede tener una mutación. Todo bien. Este es un video muy relativamente corto para que solo pueda mostrarles esto debería ser solo un independiente para que podamos entender este hecho. Cuando volvamos en el siguiente video, volveremos para implementar nuestra mutación y comenzar a cortar los controladores. Entonces los veré chicos en el siguiente video. 36. Traducción de verbos Http en Graphql: Hola, chicos. Gracias por volver conmigo. Es genial tenerte de vuelta. Todo bien. Ahora podemos entrar entonces en implementar la mutación. Esta vez va a ser chicos muy, muy divertidos. Realmente me encantaría que ustedes solo prestaran atención y esto va a ser muy muy clave. Lo que vamos a hacer, Lo que vas a hacer es muy sencillo. Entonces solo seguimos el mismo paradigma de NVC, ¿verdad? Controlador de vista de modelo. De una manera más como te estás separando, no tenemos un front end, derecho. Pero sin embargo, voy a separar cosa. Así que en esta ocasión, voy a crear un paquete donde almacenemos todo nuestro controlador. Entonces cada uno de nuestros puntos finales los que el sistema va a ser gravado, o los forasteros van a estar interactuando, lo llamaré API Entonces voy a crear un paquete, y lo llamaré API. Entonces lo primero que vas a crear nuestro país lo siento, nuestro controlador de la compañía, un controlador de la empresa. Debe ser una empresa. Contralor de la empresa. Todo bien. Ahora, quiero que ustedes vean algo muy impresionante. Dividamos esto. Voy a dividir la pantalla aquí para que podamos tocar esto aquí mismo. Voy a rastrear esto aquí, bien. Ahora bien, esta es la belleza. Desarrollar, desarrollar GraphQL con resorte no te saca de tu zona normal o donde se supone que debes estar Sigues en ese mismo lugar, o debería decir, sigues usando el mismo concepto de controladores, el mismo concepto que usarías para inyectar realmente. Todo sigue funcionando igual. Esa es la belleza de usar la primavera para la gráfica QO. Vamos a entrar. En realidad vamos a definir controlador. En el controlador. No, eso debería ser un controlador. Eso debería ser en el controlador. Entonces entraré en el controlador. Bien, así que esto es genial. Después siguiente parada. A continuación, en realidad somos particulares sobre esto. Esto crea controlador de la empresa. Se trata de chicos muy, muy claves. Esto es muy muy clave. Ahora, cuatro gráficas QL, a diferencia de nuestro HTTP bs regulares, tenemos el G, tenemos el post, tenemos el put, tenemos el parche y los likes Para HTTP, solo voy a seguir adelante aquí y solo teclearlo. HTTP web, HTP web, entonces tenemos el post, que es el post mapping, post mapping, tenemos el mapeo G Tenemos el get mapping. Esto es muy crítico, chicos. Tienes el get mapping. Tenemos el mapping de puts. Entonces tenemos un mapeo de eliminación. Eliminar mapeo. Bien, así que lo dejaré así. Sabes que los otros son en realidad viene a la par. Ahora, cuatro, si realmente vamos a dividir esto, podríamos decir para las lecturas para lecturas, básicamente solo tenemos que tener mapeo Gets, que estás usando para HTTP, Get mapping. Estoy agregando esto como contenido para que podamos usar realmente. Voy a comprometer esto para que siempre puedas comprobar para ver cómo puedes realmente subirlos juntos, para ver la diferencia. Entonces para nuestras actualizaciones, o debería decir, cambios. Vamos a llamarlo cambios, ¿verdad? Pero los cambios, al parecer, un post mapping es un cambio porque estás creando algo nuevo. Un mapeo de puts es un cambio porque estás actualizando un mapeo de eliminación es un cambio porque en realidad estás sacando algo de la base de datos. De la misma manera para GraphQL, ¿verdad? la misma manera para GraphQL, para GAF QL, esto también es Ahora para Gf QL, también es de la misma manera. Entonces podríamos tener Gf QL básicamente tener tres tipos, que son los tres tipos, que es muy simple, que ya hemos mirado Ahora bien, ¿cómo se define en términos de para Gf QL, es bastante sencillo, verdad Es bastante sencillo chicos, y realmente no hay nada que decir. Entonces también tenemos mapeo de consultas, tenemos mapeo de mutaciones, y tenemos mapeo de suscripción. Voy a mostrarles cómo funciona esto. Voy a tomarme mi tiempo para explicar esto para que podamos ver realmente cómo funciona, ¿verdad? Ahora, vamos a tener una mutación. Tenemos un mapeo de consultas, un mapeo de consultas. Tenemos un mapeo de mutaciones. El mapeo de mutaciones. Entonces tenemos un mapeo de suscripción. Recuerda que hablé de suscripciones que te conté de hace algunos videos que voy a estar viendo como sockets web. Aquí va a pasar lo mismo, ¿verdad? Así que tenemos que mantener eso en realidad. Tenemos un mapeo de suscripción. Todo bien. Entonces mutación. Hay una consulta mapea un mapeo de mutaciones y hay un mapeo de suscripción. No obstante, hay algo a lo que quiero que ustedes paguen muy importante, muy buena atención. De la misma manera, esto se puede traducir. Se podría traducir una asignación de solicitud. Podrías traducir a estos tipos. Esto también es lo mismo que el mapeo de solicitudes. Solicitar mapeo. Entonces tienes algo así como un método y el método será HTTP obtiene, método HTTP, creo que se pone. Espero que haya llegado ahí lo estoy consiguiendo correctamente. No consigue, ¿verdad? Bien. Mismo tenemos este concepto. Creo que este es un método de solicitud, método de solicitud, ¿verdad? Ahora bien, este mapeo get puede ser lo mismo que este. Voy a tratar de estructurar y colocar en el archivo Widne del contenido de este curso para que siempre puedas referirte para ver exactamente cómo se mapean esto porque esto es bastante importante, ¿verdad Es posible que te confundas fácilmente aquí, pero si realmente puedes obtener esta parte, verás que realmente no difiere de lo que ya estás acostumbrado. Solo necesitas conocer el concepto. Lo que haría, me llevaré todo esto. Llevémoslo a un archivo Red M, entonces eso tendría más sentido. Consigamos el archivo ReadMe con este proyecto. Nosotros me archivo, lo llamamos WidmND. Nadar punto md, llegar a MND. Es MD. Bien me leí ese ND. Entonces lo que voy a hacer, voy a entrar aquí, solo llámalo gráfico Ko cos. Yo sólo voy a hacer una gráfica Ko cours graph QL curso. Ahora. Digamos, vamos a hacer algo vamos a hacer algo así como una comparación, y luego vamos a manejar el bit. Bien, chicos, voy a dividir las cosas, así se vuelve más así es más comprensible. Entonces tenemos el HTTP. Al tener HTTP, voy a dividir esto de esta manera. Entonces tenemos el post mapping. Post mapping, y al mismo tiempo, tienes el post mapping, que se puede traducir también se puede traducir a esto un mapeo de misiones. ¿Correcto? Entonces este es un post de la misma manera, ¿no? Así que haz la publicación HDP. Así que de esta manera somos capaces de distinguir realmente luego el post HDB De la misma manera digo cambios. Déjenme decir cambios. Cambios, cambios de datos de HDP. Entonces los datos de HP cambian. Entonces tenemos el post. Si duplico prueba, también tenemos los puts. Esto eventualmente se pondrá. Entonces también tenemos el delete. También tenemos las eliminaciones y traducimos a eliminaciones. Entonces de la misma manera, esto entonces, ¿verdad? Para la gráfica QL, pongamos esto aquí. Yo sólo quiero darle un poco más de espacio. Para la gráfica QL, la traducción. La traducción sería mapeo de mutación de mutaciones. Mapeo de mutaciones, derecho, que también se puede traducir a mapeo de esquemas. Mapeo de esquemas. Entonces tenemos lo que llamamos type name type name. Y el nombre del tipo puede entonces ser mutación, que siempre es una cadena. Mutación, ¿verdad? Este video es en realidad se está haciendo muy largo. Volveré en el siguiente video para tener realmente todos estos detalles deletreados. Bien entonces, te veré en el siguiente video. 37. Traducción de verbos Http en Graphql, parte 2: Oigan, chicos, gracias por volver conmigo. Es genial tenerte de vuelta. Todo bien. Esto es lo que me adelanté a hacer. Con el fin de ahorrarle toda la mecanografía y semi tipo todo, voy adelante para establecer realmente todo. Simplemente voy a repasarlo en este video para que veas exactamente cómo funciona. Entonces cuando tienes cambios como el mapeo put, el post mapping, el delete mapping, también podría ser que también podrías tenerlo de esta manera. También podrías tenerlo de esta manera. Y esta parte, podría simplemente gustarle un valor, y tienes cosas como libros. Déjame tomar todo esto y solo agregarlo aquí. Tienes libros, lo mismo puede tener aquí. Piensa esto por último. Podrías hacer algo como esto. Al parecer, tal vez quieras agregar quizás una variable de ruta aquí. Desea agregar la variable de piezas en cuanto al número que desea eliminar o desea eliminar todas. Pero el punto no es realmente revelar ni hablar de HbB Es sólo para mostrarte la comparación. Ahora bien, esto podría traducirse a esto. Podrías tener solo un post mapping, que es un alias para la asignación de solicitudes, luego valor, el pasar el método que es un post. El mapping pone tiene esta traducción, justo en el mapeo de eliminación, ¿cómo funciona para la gráfica Q? Lo mismo para la gráfica Q así que para la gráfica QL, se podría decir, Oye, quiero hacer una mutación Entonces la mutación es lo que maneja cualquier tipo de cambio. Yo lo borro crea un delete o cualquier cambio que quieras hacer con tus endpoints, ¿verdad Entonces esto es lo que tienes se llama mutación. Entonces la mutación es de la palabra para mutar para cambiar, ¿verdad? la misma manera, ya que esto tiene un como que realmente corresponde a esto, también tenemos otro alias. Entonces esto es mapeo de esquemas. Después en su lugar el nombre tipo como mutación. Después unos días libro. Entonces esto se traduce en esto. Ellos son exactamente la misma representación. Entonces podrías ver si probablemente estás revisando la documentación, podrías ver que esto se usa, y podrías ver que esto se usa. Entonces es lo mismo. Sólo tienes que encontrar tu preferencia y apegarte a ella. la misma manera si estás haciendo alguna lectura, al parecer, sabemos que va a ser un get mapping y un get mapping, déjame ser consistente. Escojamos esto aquí, solo déjalo caer aquí. Esto también se traduce en esto. Este mapeo de Gets es un alias para el mapeo de misiones, entonces tienes el método get. la misma manera olvídate en GAF QL, tenemos mapeo cuavy Se llama mapeo cuavy. Mapeo de consultas, de la misma manera que lo tienes es un alias para decir, Oye, quiero que el tapping sea de ty querry y el pez debe ser libro Así se traduce. Espero que esto sea muy claro chicos. Esa es la razón por la que he seguido adelante. Cómo mostrar esto la comparación para que no te confundas. Entonces, por favor, apégate a uno. Si te sientes cómodo con este corto, increíble. Si te sientes cómodo con esto, increíble. En el siguiente ejemplo, siguiente video, lo que estoy creando para el controlador de la compañía, usaré ambos y comentaré uno, luego me apegaré a uno a lo largo del video. Quiero que ustedes realmente lo noten. De la misma manera también para el mapeo de consultas, esto. Dicho esto y habiéndoos mostrado chicos, hablemos del último, que es el mapeo de suscripciones porque vas a hacer algo así como es un editor, cosa del suscriptor del editor, lo que vas a hacer. También tiene esta traducción, la suscripción y los libros de campo de la misma manera para chicos. Dicho esto, te veré en el siguiente video. 38. Chasis del controlador de la empresa: Bien. Gracias, Gary. Al volver, es genial tenerte aquí. Todo bien. Entonces podemos proceder a luego crear lo que realmente nos aventuramos antes de tener que digredir un poco para explicar todos Solo necesito hacer que la conversación fluya para que podamos lograr esto de verdad. Ahora, volviendo a un controlador de empresa, lo que vamos a hacer es muy sencillo, sigue con lo mismo que hicimos aquí. Si vamos a sacar esto a colación, léeme hace falta una lectura yo probablemente solo ponlo a esto. Si realmente tienes un léeme, ¿cómo o a qué se traduciría? Tú eliges uno, voy a usar ambos aquí, comenta uno fuera, así que utilizo un mapeo de esquemas. Para el mapeo de esquemas, entonces voy a elegir el nombre del tipo y como ustedes saben, el nombre de tipo se va a crear para este primero que estás apuntando, el typename va a ser crea el typename va a ser mutación, necesito Va a ser de tipo mutación. La mutación y el campo. ¿Cuál es el campo? Entonces el campo básicamente tiene que corresponder. Ahora bien, debes mantener esto en él tiene que corresponder exactamente a esta misma cosa que tienes aquí. Campo tiene que corresponder exactamente a esta misma cosa porque esa es la manera de anotar. Entonces A esto ser ¿cuál es el campo, y esto será qué? Crear empresa. Entonces esto no se ha hecho. A mí me gusta espaciarlo así con más claridad, cis hace que me parezca más legible, ¿verdad? Entonces esta es la preferencia personal. Podrías mantenerlo en una sola línea. Entonces tienes público. Público, entonces ¿cuál es la respuesta a esperar? Estamos esperando una respuesta de creación, una respuesta de creación o una respuesta de creación. Entonces el nombre es crear empresa. Tienes que importarlo. Recuerda, es de los tipos. Ya lo hicimos ya. Ahora bien, ¿cuál es el argumento que esperan los insumos de la compañía? Ahora, alguien podría estar preguntando, ¿qué vamos a usar exactamente? Tenemos cosas como solicitar programas, o ¿tenemos cosas aquí? No, no lo hacemos, lo que nos hace volver a leer mi archivo para que podamos actualizar. Ahora bien, para cosas como a petición cuerpo solo decimos anotación. Yo solo lo llamo comparación de anotaciones, Comparación anotaciones. Entonces esto es lo que vamos a hacer. Ahora para cosas como a petición cuerpo, yo busco cuerpo, que se supone que es cuando realmente estás creando o cuando estás pasando un objeto. Para la gráfica Q, usamos en argumento. Usamos un argumento y todo lo demás sigue adelante. Voy a seguir actualizando esto para que sigamos siguiéndolo. Todo bien. Voy a recoger esto, ven aquí. Tienes un argumento de at. Entonces, ya ves, viene de la gráfica QL. Si compruebas esto sí, viene del método de datos gráficos y la notación. Entonces el valor. ¿Cuál es el valor? El valor tiene que corresponder a cualquier variable que estés usando aquí, ¿verdad? Porque necesito repasar este video otra vez, chicos para poder ver realmente cómo se mapea esto, ¿verdad? Entonces voy a añadir aquí. Fresco. Entonces, ¿cuál es el objeto? El objeto que realmente estás recibiendo es de tipo empresa Impute Empresa Impute entonces podría simplemente llamarlo imputar menos entrada esto desde un código Dgs JD Todo Entonces tienes esto. Seguro que te has dado cuenta de que algo único sucedió de inmediato. En el momento en que pudiste igualar esta firma, automáticamente, Gavke pudo decir, Oye, reconozco estos mapas con esto ¿Puedes ver este símbolo automáticamente? Entonces si lo hago, si hago clic en esto, salta aquí. Si hago clic en esto, salta en él salta a esta lista. Se puede ver. Podría usar eso para verificar. Instalar el plugin graph queer hace una cosa por ti. Te permite saber si escribiste la firma correctamente. Pero la firma debe ser correcta antes de poder mapear. Entonces de esta parte, si hago clic, entra aquí. Si lo coloco ahí si hago clic en esto, viene aquí. Demuestra que, oye, estos mapas en realidad corresponde. Y al mismo tiempo, también, si haces clic en esto, también navega a esta parte, que es lo mismo, ¿verdad Todo bien. Estoy seguro que esto es muy claro, chicos. Entonces a partir de aquí, solo voy a convertirme en un no por ahora. Voy a volver a esto. Vamos a repasarlo rápidamente. Podría usar una asignación de esquema. O usar un mapa de mutaciones debido a una mutación apretada. Entonces podrías usar cualquiera de los dos, ¿verdad? Ahora, debes asegurarte de que tu firma es correcta. Primero, el nombre, el nombre crea empresa. Aunque puedes hacer de este nombre otra cosa, ¿verdad? Hasta el momento, la otra firma en realidad Tally. Pero te recomiendo solo mantener las cosas simples y hacer que todo solo cuente. Entonces tus entradas, antes demostré que no usas en equest body, usas en argumento. Se utiliza en la discusión. Puedes encontrar en el Wi me ya lo actualicé en el Wd me, ¿verdad? Después se da seguimiento con lo que es objeto en los insumos de la empresa. Entonces puedes llamar a esto como quieras. Ahora, podría decidir decir, ¿sabes qué? No creo que no quiera colocar nada aquí. No coloques nada aquí, significa que tengo que llamar obligatoriamente a esta empresa ¿Se puede ver también mapas? la misma manera tenemos cuerpo atiqus que colocas tienes cuerpo atQust Entonces dentro de esto pones un valor para poder igualar lo que lo estás enviando del cartero o del mundo exterior Aquí también funciona lo mismo. Podrías usar con o sin los argumentos. Pero si estás colocando esto aquí, si no estás poniendo nada aquí, Spring seguirá adelante y coincidirá con tu nombre de variable. Tu nombre de variable debe ser correspondiente a lo que es este. Pero si ya estás agregando esto en Freddie agregó esto en, no necesitas esto Puedes usar el aporte de la compañía o podrías decidir no hacerlo. Chicos, yo recomendaría que realmente reproduciran este video para que realmente pudieran entender lo que acabo de mencionar, finalmente, podría decir, ¿ Sabes qué? No quiero usar esto. Podría comenzar esto y usar un mapeado de mutaciones en el mapeo de mutaciones Al parecer solo necesito tener algo así como valor y el valor será ¿qué? El valor se crea empresa, ¿verdad? Ves que coincide automáticamente. Coincidencia automática. Entonces usa tu preferencia, ¿verdad? Usa tu preferencia. A lo largo de este curso, me voy a apegar a esto porque por alguna razón, simplemente me conecto a él, pero utilizo alguna de sus preferencias, ¿verdad? Espero que esto quede claro, chicos. Cuando vuelva el siguiente video, voy a hacer una explicación más sobre esto porque realmente quiero que se si, entonces podemos continuar y hacer las cosas. Bien, entonces, te veré en el siguiente video. 39. Chasis del controlador de departamento y constantes generadas: Oye, ahí. Gracias por venir chicos. Es realmente genial tenerte de vuelta. Todo bien. En el último video, seguí adelante a decir, podría usar el mapeo de schemer o el mapeo de mutaciones, que ya explicaste, firma tiene que ser la misma Si en realidad estás usando la asignación de esquemas, tienes que colocar el nombre del tipo que es mutación de valor y un nombre de campo. Y si estás usando mapeo de mutaciones, solo tienes que usar esto directamente, entonces tu firma tiene que coincidir con lo que tienes aquí. Este nombre no necesariamente tiene que ser el mismo, pero tus argumentos deben coincidir. También mencioné que podrías decidir omitir esto. Si omite esto, significa que su nombre de variable tiene que corresponder exactamente a esta misma convención de nomenclatura. Mostrar esto en el último video, podría volver a ver realmente cómo funciona. De hecho, hemos podido hacer esto y esto funciona muy bien. Recuerda, no usamos nuestro cuerpo de solicitud, lo usamos en argumento. La mejor sección hablamos de encabezados, hablamos de encabezados y cosas como solicitar Prim para ver cómo se traduce aquí Desafortunadamente, te sorprenderá saber que también usamos argumento Creo que simplemente hay cinco cosas, pero esto realmente funciona muy bien. Bien, con esto para, sigamos adelante. No voy a implementar esto ahora. No voy a implementar esto. Lo que voy a hacer es seguir adelante rápidamente y crear una firma para el departamento. Voy a crear controlador de departamento, nuestro controlador de departamento. Consigamos un controlador, no una firma. Contralor de departamento. Yo sólo entraría y solo sellaría esto. Yo sólo entré y solo sellaré esto. Al parecer, al parecer, cansarse de mecanografiar. Nosotros tenemos esto. Entonces vamos a hacer coincidir esta descripción. Quiero separar las cosas. Coincidamos con esta descripción. Estoy seguro de que ustedes ya tienen una mano de ello. Estoy usando el mapeo de esquemas. Entonces si usas mapeo de esquemas, al parecer ese es el nombre del tipo y el nombre del tipo sea qué mutación, mutación. Entonces el siguiente es que tienes que colocar tu campo y ¿cuál es el campo? Recuerda que el campo es lo que crea departamento, crea departamento. Entonces ves público. No es que escojas la respuesta, la respuesta, apres departamentos Entonces, a continuación, vamos a importar esto. Entonces recuerda en la discusión. El argumento es lo que usamos. Entonces ya que estás usando argumento, ¿cuál es el argumento imput Recuerda que te mencioné, en realidad tienes que especificar esto. Si no estás usando esto, entonces esto tiene que corresponder. Esto corresponde y en realidad estamos consiguiendo esto imputes vamos a traerlo Este partido ya lo es. Ya coincide ya. Entonces esta es una variación. También tienes la otra variación. Sólo estoy especificando esto. Elige con cuál te sientes más cómodo. Prefiero usar colocando esto aquí. Colocar un valor aquí, luego colocar esta firma, por lo que en realidad coincide con precisión. Yo hago esto. Simplemente simplifico esto tiene que ser algo así como imputas. Entonces esto es preferencia personal, ¿verdad? Esto es preferencia personal. Entonces sólo voy a devolver nulo por ahora. Entonces tenemos esto cubierto. Todo bien. Antes de continuar, estoy seguro de que ustedes podrían estar preguntándose. ¿No hay alternativa para simplemente escribir el nombre? Esto funciona. Podrías dejar esto como está. Pero recuerda, no tenemos que seguir haciendo esto. Podrías seguir adelante y usar esta mutación mappi y todo. Pero si quieren atenerse a esto, quiero mostrarles algo más genial, algo más genial. Lo genial es que te han dado lo que generaste cuando generaste este tipo, hay un conjunto de constantes que te han sido proporcionadas por defecto No sé si te has dado cuenta, vamos a comprobarlo. El conjunto de constante. Mira esta constante, muchos de ellos. Si verificas, ya hay un tipo de suscripción para ti llamado suscripción. Podrías simplemente llamar a DGs tipo de suscripción constante y obtienes suscripción Si además revisas correctamente, yo escribo esto, busco mutación. Mutación. Mutación. Entonces este es el viejo que creamos, ¿verdad? Este es el viejo que creamos. Te alegrará saber que también hay una mutación creada para ti. No es sólo este tipo. Tienes esto creado para ti. Además, la razón por la que no lo estamos obteniendo ahora mismo es porque no hemos construido. Creo que no lo hemos hecho pero sigamos adelante y construimos. Entonces vamos a hacer compilamos. Y una compilación. Eso nos da esos detalles extra. No necesariamente tengo que hacer esto. Sólo me vendría bien lo que ya pasó dentro de mi constante. Exploremos esto de nuevo. Exploremos esto. Si bajo, si voy abajo y solo busco a este tipo. Entonces tenemos una suscripción. Esto lo he demostrado. ¿Por qué no estoy recibiendo? Se supone que tengo una mutación. Se supone que tengo una mutación. Entonces DGS, vamos a hacer se supone que va a crear una mutación, ¿verdad Una mutación, solo mutación constante. Esto en realidad no está entrando. Bien, gracias chicos. Tuve que pasar rápidamente el video. Tuve que quitar la carpeta de destino porque noté que el plugin DG no era ping nada Tuve que eliminarlo y hacemos una compilación. Tuve que hacer una compilación volví a hacer esto y se adelantó. Esta una constante habría sido creada para ti y la mutación C. Otra cosa que podríamos hacer, entonces podríamos decir en lugar de crear esto directamente, entonces podemos decir en departamento, se podría decir DG constante, luego obtenemos un tipo de mutación Un tipo de mutación pero si se comprueba el tipo de mutación, es mutación. El tipo de mutación es mutación, o simplemente se podría decir mutación. Dots escriba el nombre, el que funcione para ti, ¿verdad? Se lo voy a mostrar otra vez. Te vendría bien esto. Esto se traduciría automáticamente en mutación como puedes ver, o simplemente podrías decir tipo de mutación. Cualquiera que funcione para ustedes, chicos. Solo les estoy mostrando chicos hay varias variantes que podrían usar. Me cegaría a usar mutación, luego puntos typename. Voy a ceñirme a usar esto. Entonces para el departamento de dejar de fumar, lo genial es que tenemos esto también. Ya que se trata de una mutación, nos sorprenderá saber bajo mutación, la tenemos también. Cuando hacemos esto, Dots, luego creamos departamento, puedes ver crea departamento. Debido a que especificas los scripts, una vez que realmente construyas, te los da. Te ayuda a crear Constance que en realidad coincido con todas las firmas Como resultado, ya no tengo que codificar nada duro. No tengo que codificar nada. Estoy seguro de que esto es genial chicos, y estoy seguro de que en realidad lo encuentras muy interesante. Esto básicamente funciona. De la misma manera, si voy a mi empresa, esta parte, en realidad podría sacar esto y decir DGS Mutación constante de puntos. Podrías usar el tipo de mutación directamente, pero yo uso mutación, puntos. Nombre del tipo. Entonces lo mismo, yo haría la mutación DGs, mutación, luego crearía compañía. Alguien se pregunta. ¿Qué pasa con esto? Muy sencillo. Todo lo que tienes que hacer es sacar esto, solo traer esto, y esto correspondería aquí. Esto es todo lo que solo necesitas tener. Esto funciona. Bien chicos, estoy seguro de que de hecho he podido aclarar. Por favor, intenta no saltarte ningún video. Es muy importante porque podría estar cayendo en algún concepto clave ahí que podría ser muy, muy útil para ti. Yo sólo voy a seguir adelante y comentar esto y ahora el patrón creó una empresa voy a tomar esto. Bien, podría dejar esto. una empresa, usted tiene un departamento. Entonces en el siguiente video, en realidad creas las otras mutaciones. Entonces en realidad podríamos proceder. Nos vemos de nuevo chicos siguiente video. 40. Chasis del controlador de empleados: Oigan, chicos, es bueno tenerlos de vuelta. Esto se está interesando más. Lo hemos tomado desde la perspectiva en la que podríamos usar Schemer para el mapeo de mutaciones o mutaciones directamente Antes teníamos codificación de los valores. Ahora en realidad hemos hecho la transición a usar el nombre del tipo Pasamos a usar la constante de excavaciones que me generaron Al principio, estaba teniendo problemas que no iban a entrar. Si tienes S elimina tu carpeta de destino elimina tu carpeta Pero si usas Gdo ¿verdad? Carpeta pequeña beaut, ¿ luego reconstruir? Simplemente haz MBN compilar o hacer un Gudo. Si no es Gdo solo toma el equivalente el equivalente y detalles Eso es Grado Pero solo el Gou Pero, y en realidad podrás conseguir que esto funcione de la manera que yo lo tengo. Entonces solo estoy definiendo las firmas que coinciden. W muestra que esto es exacto. Entonces si estoy poniendo esto en esto es muy exacto porque este símbolo me está mostrando eso, Oye, esto mapea a esto, así que solo podría hacer esto, como le he mostrado a Eller hacer esto, y ya ves que en realidad está entrando aquí. Así que vamos a crear este final chicos. Entonces voy a entrar y llamarlo empleado Contralor. Contralor de empleados, ¿verdad? Bien, genial, genial, genial. Entonces lo traeremos aquí. Entonces a la comparación también, recuerden, chicos, estamos siguiendo estamos siguiendo esa parte donde nuestra firma debe coincidir con lo que hay aquí. Entonces veamos cómo hacemos esto. Seguro que ustedes ya tienen una buena idea. Entonces esto es el mapeo de esquemas, derecho, que te muestro paradero, typename y nuestro nombre tipo será Esto es mutación dice mutación. Recuerde que mencioné, use el tipo de mutación o simplemente use mutación, que es el nombre alternativo del tipo de punto. Entonces el siguiente, el campo, y el campo deben coincidir con lo que debe coincidir con esta firma. Pero una constante ya está disponible para nosotros. Vamos a usar también nuestras constantes dgs constantes mutación más bien mutacionar Impresionante. Entonces hago un público. Cuál es el tipo de respuesta, si traigo esto en el uso la respuesta de creación para todo. Respuesta de creación, tenemos un empleado creador, entonces nuestra firma debe coincidir. Esto no es correcto. Recuerda, en lugar de un cuerpo de solicitud, ¿ usar qué? A la discusión. Entonces en el argumento, entonces siempre disfruto asegurarme de que esto realmente coincida. Esta variable coincide con lo que estoy pasando aquí. Es opcional, pero significa que en realidad significa que el nombre de la variable que está pasando en este punto debe coincidir. Así que elige cuáles son tus preferencias, sean cuales sean tus preferencias. Entonces esto sería de este tipo de este tipo y yo lo llamo entrada. Ves que coincide automáticamente. Vamos a cablear esto. Fresco. Vamos a cablear esto. Fresco. Habiendo hecho esto, ves que esto coincide correctamente. Coincide correctamente. Esto es opcional. Si no estás agregando esto entonces significa que este nombre debe ser igual a DigiOple el mismo nombre aquí Antes esto realmente coincidirá, lo contrario, no lo encontrará. También lo he explicado en un par de videos, pero no lo sabemos, por ahora mismo, no se sabe. Pasemos al otro Ooh. Para el otro, que está en esto, chicos, me estoy cansando de Creta solo duplica Por favor, no hagas esto en casa. Está mal. En realidad se duplica. Auto duplicado. Como Eso es bastante gracioso. Entonces coloqué esta firma y el nombre debe coincidir. Coloco esto en. Esa es una parte. Ya ves, pesar de que no he cambiado la cosa, te dije que esto es opcional. Al cambiar esto, todavía no cambia. Al parecer, todavía estoy mapeando a esto. Hagamos esto co. Agreguemos esto en. Ahora ya no es coincidente, entonces agrego en esto. Al parecer, esto es lo que necesito aquí, que son las imputas. Vamos a hacer ping a esto. Vamos a hacer ping a esto. Fresco. Entonces finalmente, el nombre es lo que actualiza o llama actualizaciones actualiza la dirección existente del empleado. Y ves que esto coincide automáticamente. Impresionante. Esto funciona. Y por último, vamos a traer a este último tipo, y tenemos las actualizaciones, actualicemos los detalles del empleado. Yo también una respuesta de creación. Esto se llamaría entonces actualizar los detalles del empleado. No, no, no, esto actualiza los detalles del empleado, ¿verdad? Fresco. Entonces la firma necesita coincidir. Entonces coloco esto aquí. Yo elijo esta escoge esto y agrego esto aquí. Vamos a meter esto bien y ya puedes ver estos partidos. De hecho, hemos podido especificar toda la entrada por o toda la mutación que hemos creado por ahora. Esto realmente, realmente funciona, chicos. Esto realmente, realmente funciona, ¿verdad? Creo que con esto, ahora podemos seguir adelante e implementar algunas modificaciones. Ahora tenemos todas nuestras firmas listas. Así que ahora podríamos entrar y empezar a crear algunos bits extra que necesitemos. Muy bien, chicos. Nos vemos en el siguiente video. 41. MaperUtil, parte 1: Oigan, chicos, gracias por volver conmigo, agradezco que regresen. Todo bien. En este video, vamos a estar viendo Sé que aún tenemos que implementar todos los esqueletos que se crearon, Pero necesitábamos algún conjunto de algunas conversiones DTO. Centrémonos en crear. Prácticamente todas las conversiones DTO que necesitamos en este video, crean un Mapper YouTube Lo que voy a hacer, en realidad entraré y crearé un Mapper YouTube Un mapa YouTube. Voy a llamar a esto YouTube. Y voy a crear un mapert Maple T. Básicamente, todo esto sería mapa Imputen entidad para imputar que solo tenemos todos esos detalles Voy a convertirlo en un componente, ¿verdad? Voy a convertirlo en un componente. Bien, lo primero que quiero cuidar de los islotes mapa. Vamos a mapear una compañía imputa entidad entidad llamando mapa a la entidad de la compañía, la entidad entidad de la compañía Esto toma una empresa final imputa y toma una empresa imputa Si sólo le llamas a esto imputa o simplemente campy impute. Llamemos a esto imputa. Genial. Vamos a cablear esto. Vamos a crear una empresa. Vamos a crear una empresa empresa no tenemos una empresa que establezca obtener eh. Esto es genial. Después el número RC. El número RC. ¿Verdad? Bien, genial. En realidad vamos por la oficina central, la oficina central S. Bien, genial. Entonces en realidad vamos por el país. Bien, genial. Entonces en realidad establecemos el negocio, ¿verdad? Nosotros establecemos el negocio. Bien, genial. Entonces solo devolvemos esto. Así que devuélveme la compañía. Bien, entonces tenemos empresa Mm Mis entidad de la empresa. Por lo que la entrada tiene un mapa a la entidad de la empresa. Bien, genial. Entonces bien. Creo que tenemos que ir al revés también porque en realidad podríamos estar necesitando detalles dónde tenemos que ir de empresa en compañía y DTO, ¿verdad? Viniendo a la empresa DTO. Recuerda, entrada es lo que realmente estás obteniendo aquí. Así que volvamos a correr rápidamente, chicos para que no nos confundamos. Bien, entonces si estás en compañía Loar, entonces estos son los insumos, y este es el DTO Esto es lo que en realidad estaría enviando a los usuarios para que ellos realmente vean qué devolver realmente como Jason de la gráfica Que, derecho. Entonces esto es lo que realmente obtenemos de las entradas. Esta es esta parte. Todo esto entra en los datos, ¿verdad? Así que recuerda, entidad es lo que realmente guarda la base de datos. Entonces está a la derecha. Tenemos de la entrada a la empresa, nos guarda la base de datos, luego leeremos de la base de datos y la enviaremos al usuario, así que sea empresa a empresa DTO Entonces eso es lo que vamos a hacer ahora mismo. Entonces esta va a ser empresa DTO. Sí, empresa DTO, así que mapa a la empresa DTO. Llámalo mapa a la empresa DTO. Bien, esto es genial. Bien, así que repasemos rápidamente los escalones. Aquí va a pasar lo mismo de verdad. Entonces vamos a hacer una compañía que diga esta vez, estamos seguros de que vamos a tener un UUID, ¿verdad Asegúrate de que vamos a tener un UUID. Entonces compañía de mapas, obtendrán el UID. Bien, eso es genial. Eso es bueno, chicos. Después el siguiente. Creo que debería ser compañía para? Sí. Bien. Entonces esto espera una cadena, esto viene UID, solo di puntos UUID, Creo que esto es genial. Sí. la misma manera, vamos a estar necesitando todos estos otros detalles. Sólo voy a sellar todos estos detalles. Selle todos estos detalles, colóquelo aquí, cambie todo esto a empresa a empresa A, luego cambie todos los insumos a empresa. Todo bien. Bien, genial. No devuelvas la empresa DTO. Entonces quieres su UID, el nombre, el número RC, el país de la oficina central y el tipo de negocio Bien. Bien, así que esto es genial Ahora, hagamos lo mismo con los departamentos, ¿verdad? Hagamos lo mismo con los departamentos. ¿Bien? Entonces voy a entrar y sólo decir departamentos públicos públicos. Departamentos Departamentos. Sé que hay una pregunta en la mente de alguien. ¿Por qué no estamos usando una biblioteca para hacer esto, verdad? Sé que esa es la pregunta. ¿Por qué no estamos usando una biblioteca para hacer esto? Voy a responder esa pregunta en 8 minutos. ¿Bien? Vamos a escribir esto rápidamente. Yo sólo lo entiendo como un aumento. Bien. Entonces tenemos departamentos departamentales, cool. Entonces Departamento establece nombre C Departamento sí establece el número RC. Departamento Departamento establece el número de departamento. Fresco. Bien, entonces iremos ahí. Nombre de la compañía del conjunto de departamentos. Establecer el nombre de la empresa. Bien, genial. Entonces hemos hecho el número RC. Después división, Departamento de división de conjunto. Departamento sí establece división. Sin número de departamento, hecho esta División. ¿Estamos agotados toda la entidad? Déjame confirmarlo. Pongamos a los derechos. Entonces lo que el campo me refiero a decir. Si lo miras, nombra el número de departamento, entonces solo puedo arreglarlo correctamente. Nombre número de departamento, nombre de la empresa, división de números RC. Genial, genial. Cuando quiero establecer esto, sólo regresamos departamento. Bien. El conjunto que queremos establecer de departamento a departamento DTL Todo bien. Entonces lo mismo chicos que nosotros hicimos para la compañía. Vamos a repasar esto también. Sí, el socio DTL. Esta vez, UID, eh, esto funciona. Ponemos el nombre, establecemos el número de departamento, establecemos el nombre de la compañía, luego establecemos el número C, luego la división, y eso funciona, y eso funciona, luego giramos departamento. Entonces todo UID, nombre, uh, el número de socio, número RC, número C. Nombre de la empresa. El número C debe venir antes. Nombre de la empresa, número C, división. Entonces hackeamos esto. Todo bien. Entonces antes de que terminemos esto. La pregunta que creo que alguien se está haciendo es, ¿por qué no estamos usando la biblioteca? Sé que tenemos bibliotecas, ¿verdad? Sé que tenemos bibliotecas como J Mapper. ¿Tienes bibliotecas como J Mapper? Tenemos bibliotecas como biblioteca como J Mapper, tenemos Model Mapper Tenemos modem Mapper, tenemos planos de mapa, y todas estas son grandes bibliotecas También tenemos creo que hay uno que se llama Dozer. Creo que Dozer Mapper, si no me equivoco. También tenemos creo que desde la primavera tenemos siendo Copy piensa ser Copy UTs, si me equivoco, creo que siendo copy Utils, pero no demasiado. Creo que está siendo Copy Utils. Yo uso a todos estos tipos, o uso la mayor parte. He usado Model Mapper, he usado ser Copy UTS. También he usado otros tipos, ¿verdad? Pero esto es lo que quiero que ustedes sepan. Cada uno de todos estos chicos internamente utilizará la reflexión para poder determinar el nombre del campo, ¿verdad? En realidad es usar la reflexión para determinar el nombre del campo para la mayor parte, ¿verdad? O debería decir la mayoría de estas bibliotecas, y hay un costo de rendimiento para ello. Entonces deberías usar biblioteca, ¿verdad? Esta es totalmente mi opinión. La programación es un conjunto de compensación. Hay que determinar si es lo que es esa actuación. Ahora bien, esto es lo que hago. Si tengo campos que van más allá de diez, 15, eso va a ser muy difícil de manejar. Entonces puedo confiar en una de estas bibliotecas. ¿Por qué? Porque estoy dispuesto a soportar realmente los costos de rendimiento, o los pocos gastos generales que realmente se suman a la aplicación. Así que mantén esto como regla general. Si tiene muy pocos datos o muy pocos campos, por favor no cargue la aplicación mediante el uso de bibliotecas. No se pueden usar totalmente las bibliotecas. Trabajan grados. Si ya tienes la dependencia en y la usas digamos para uno de tu clase o DTOs, puedes simplemente usarla sobre rodar todo el sistema Tienes muy poco, muy pocos campos, en todo el sistema. No borden la aplicación usando la biblioteca porque vamos a usar una biblioteca, solo tenga en cuenta, habrá un pequeño costo general Si puedes vivir con eso, entonces eso funciona. Chicos, los veré en el siguiente video. 42. MapperUtil, parte 2: Bien chicos, gracias por volver. Es genial tenerte de vuelta, ¿verdad? Entonces expliqué por qué en realidad comenté esto por qué deberías usar bibliotecas, por qué no deberías usar bibliotecas. Es totalmente obstinado. Bueno, tengo mi opinión. Quizá tengas tu opinión. Estas bibliotecas son muy buenas, han sido mejor probadas. Pero también recuerda, tiene un poco de sobrecarga. Vamos a continuar. En este curso, no voy a usar ninguna de esta biblioteca porque los campos son muy pequeños y de hecho podemos manejar las cosas por aquí. Adelante rápidamente y luego agreguemos algunas transformaciones DTO más Todo bien. Así que hemos podido hacer departamentos de la compañía. Así que en esta ocasión, pasemos a esta época, pasemos a abordar, ¿verdad? Creo que podemos hacer dirección ahora mismo. ¿Bien? Entonces hay dos direcciones. Bien, entonces tenemos público una dirección pública, dirección, luego mapa a dirección entidad. Sí, así que toma esa entrada. Tomar dirección dirección, luego conjunto de direcciones Ciudad que funciona, conjunto de direcciones CLK, conjuntos de direcciones ID de entidad, ID de entidad Bueno. ¿Quieres llevar esto a la cima? Entonces dirección do set código postal conjuntos código postal, Imputs código postal Creo que me falta algo. ¿Eso es todo? ¿NTT? Sólo vamos a confirmar. Traeré a este tipo aquí. Vamos a revisar. Entonces tenemos ID de entidad, ciudad, calle, me faltan las calles, ¿verdad? Entonces me falta la dirección de la calle, las calles establecidas Calle. Entonces entidad ID, calles, ciudad estados código postal. Estas palabras. De hecho, he podido completar esto, volvamos. Todo bien. Recuerden, chicos, si han olvidado el ID de entidad, es decir para empleado, el ID del empleado o el ID de origen o básicamente el número de departamento porque todos estos tipos toman la dirección, ¿de acuerdo? Bien así que queremos mapear el K. Gracias. Quiero mapa desde dirección a DTL, dirección DT. Vamos a empezar con UUID. Creo que UID tendría más sentido. Lo voy a poner aquí, dirección establecida UID, UID, no UD Simplemente tome esta dirección que obtenga UID. Sitios está bien, dirección TO porque sabía que necesitaba usarlo para encadenar. Después puntos a cadena. Al solo puedo copiar todo esto porque al parecer, solo voy a usar esta dirección, dirección, dirección a ellos. A favor pero copiar llamados males de copiar y pegar podría llevar a algunos errores graves Entonces sólo voy a devolver mi dirección DTO. He podido llenar esto. Genial. Vamos a citarte una vez más UID, HTID, las calles, la ciudad, el estado, el código postal Todo bien. Déjeme darme más espacio. Muy bien, genial. Público, ahora pasemos a, hemos podido mapear poder mapear las entradas de dirección de dirección a la dirección la dirección. Entonces creo que entonces podemos seguir adelante. Todo bien. Estoy pensando en ir a necesitar dirección DTA para abordar, pero creo que podemos seguir adelante si se vuelve importante entrar Así que ahora vamos a movernos así que vamos a hacer es que realmente vamos a conseguir que los empleados subcontraten al empleado DTO, Déjame dividirlo. que eso haría que unos empleados DTO, el Mapa dos, Empleado Empleado DTL De veras no quiero aburrirlos chicos. Seguro que esto es bastante aburrido tener que hacer esto. Déjame pasar por tus espacios, y volveré. Yo habría hecho esto batalmente, ¿de acuerdo? Todo bien. Bien, chicos, en realidad voy a agregar esto. Entonces, si lo miras, si revisas la entidad, esa es la entidad del empleado. Entonces tenemos el nombre, fecha de nacimiento género. Así que solo colocas todo esto adentro, ¿verdad? Entonces todo funciona en edad, edad, nombre de la compañía telefónica, departamento de identificación de empleado, número, correo electrónico y rollo. Entonces tenemos esto. Y también lo hice por el OutsourcTo e hice lo mismo Así que en realidad todo funciona muy bien. No obstante, hice un simple cambio. Yo estaba usando aquí tenemos ID de subcontratación. Contamos con ID de subcontratación. Sin embargo, estaba usando subcontratados como si hubiera una D ahí Entonces simplemente cambiamos. Entonces, si revisas esto, era una D la cual cambié. Después reduje el proyecto. Y luego construimos el proyecto y eso fue eso muy vital. Pensé que debería mencionarlo en la tele. Ahora, por favor, tenga en cuenta una cosa que realmente podría encontrar. Vas a estar usando de la misma manera que en realidad hice esto. Si no quieres pasar la cadena aquí, recuerda que te mencioné que podrías usar string y simplemente pasar una mutación aquí. Yo pasando el nombre del campo que expliqué en los videos anteriores realidad estaban desarrollando esto. Si vas a estar usando la constante DGs, cuando intentas compilar, tienes errores Déjame mostrarte. ¿Verdad? Este es un error al que probablemente te enfrentas, diciéndote eso, oye, no puedo encontrar esto. ¿Por qué? Si en realidad encuentras este error, es muy sencillo. Todo lo que necesitas hacer es comentarlo, eliminar la carpeta de destino. Después revisó. Entonces eso es básicamente todo lo que necesitas hacer. Entonces, una vez que reconstruyas, eso realmente se sincronizará. No sé si es un bicho, no puedo decirlo, pero en realidad simplemente funciona. Una vez que lo hayas hecho, así que todo acaba de regresar. Entonces, si vienes aquí y solo traes esto abierto, ves que todo funciona como deberías, ¿verdad? Entonces esa es una cosa común que notarás, ¿verdad? Entonces es una elección. Quieres realmente usar un patrón de fuerza o quieres realmente d GS dolor constante, lo que realmente funcione, ¿verdad ¿Bien? Cualquiera que funcione Es solo que tu elección. Todo bien. Así que en realidad hemos podido traer a este tipo. Entonces creo que también necesitamos todavía tenemos sobre creo que cuatro detalles más por ir. Se supone que tenemos que mapear empleado DeTo a empleado. Así que voy a pausar rápidamente este video de nuevo. Entonces también voy a mapear el empleado a detalle de empleado, y en realidad voy a mapear el subsourcitu para subcontratar y mapearé el subcontratar a nuestro Socito Entonces voy a hacer eso rápidamente en esto hagamos una pausa rápida y volveré. Bien chicos, aquí lo tenemos. Tenemos el empleado DTO a empleado. Yo sólo sigo esta misma cosa, el mismo patrón. Tenemos el nombre, la fecha de nacimiento, el género, el salario, la edad, el teléfono, el nombre de la empresa, genial. Tenemos a los empleados. Tienes el número de departamento de identificación del empleado, correo electrónico y rollo que solo estoy comparando esto. Y lo mismo para el empleado quejoso al área de empleado pase UID y en realidad tenemos esto, Y eso realmente funciona muy bien. Lo mismo para subcontratar para que puedas demostrar que esto realmente funciona Ahora bien, lo que entonces puedes hacer es que puedas empezar a factorizar? Porque al parecer hay varias repeticiones, me perdí todas estas cosas Entonces cuando lo tienes, si has decidido no ir por la ruta de las bibliotecas, lo cual mencioné, si quieres seguir esto mientras estás codificando, y asegúrate de factorizar esto realmente, puedes refactorizar esto porque aquí hay varias similitudes, ¿verdad Con esto, entonces podemos pasar al siguiente video. 43. Servicio para mutaciones, parte 1: Hola, chicos. Es genial tenerte de vuelta. Todo bien. Entonces vamos a continuar desde este video para luego implementar nuestros servicios. Como notas, solo tenemos los esqueletos para todos estos endpoints o endpoints gráficos Esta vez, vamos a crear estos servicios. Seguimos siguiendo el modelo, que separaba las cosas en paquetes. Simplemente entramos y creamos un servicio. Creamos servicio. Muy bien, genial. Lo primero que vas a crear, vamos a crear los servidores de nuestra empresa. Servicio de la empresa. Y una parte hacemos de esto un servicio, y también traemos el constructor us requerido para que no tengamos que declinar explícitamente una inyección de constructor Entonces vamos a traer el repositorio de la compañía, y eso realmente nos ayudará a poder cablear las cosas. Bien. Bien. Entonces al mismo tiempo también, como ustedes saben, en realidad hicimos un poco de trabajo en MPA Util Aquí es donde realmente va a entrar o será útil, ¿verdad? Mapeador Util. Mapa T. Muy bien, genial. Sólo vamos a crear un público. Solo escojamos nuestra firma. Simplemente tenemos todo justo aquí. Devolvemos una respuesta, tenemos una respuesta de creación pública, respuesta de creación. El crear empresa, entonces recibimos una empresa imputes recibir una empresa imputa empresa imputa imputa , solo puede llamar a los Imputes llamar a los imputes Entonces lo siguiente que creamos entonces entonces lo persistimos. Simplemente persistimos. Ahorro de la empresa. Después te traeremos el mapeador, luego mapearemos a entidad de la empresa, pasamos en nuestras imputas, luego podremos recibir de vuelta los detalles Ya ves cómo colocamos a nuestros chicos, ¿verdad? Todo bien. Así que compañía. Bien, somos capaces de usarlo. Esto para convertir nuestra empresa en empresa, la entidad de la empresa putter de la empresa, entonces en realidad la guardamos y la guardamos de nuevo Entonces podemos devolver nuestra respuesta. Podemos simplemente decir el constructor de la creación, entonces tenemos esto. Recuerden, chicos, mencioné antes que cada vez que realmente generas un tipo E, ¿verdad? Y estás usando Graph QLS, automáticamente tienes un constructor, ¿verdad Eso lo mencioné en uno de los videos anteriores. Entonces, si solo pudieras entrar, eso debería estar en las fuentes generadas que tenemos esto. Vamos a comprobar nuestra creación, ¿verdad? Esta creación principios, podemos ver va a existir constructor un constructor dentro de ella, ¿verdad? Comprobaremos departamento DTO. Si bajas, también existirá dentro él un constructor Siempre hay un constructor para cada uno de ellos. Lo cual es una gran adición para el Cogen. Gracias, chicos. Gracias Cogen. Todo bien. Entonces puedes entrar aquí. Recuerda devolver si revisas su firma, firma es solo mensaje de éxito y UID No queremos darte demasiada información, así que solo tienes el UUID, eso será seguro Creo que solo lo llamamos Cty persistente. Persister Cty. Cotini sap company, luego TUID, obtener UID, luego Bien, genial. Entonces mensaje, después éxito. El éxito es cierto. Sé que tienes éxito. Entonces tenemos una empresa, solo dale algunas cosas geniales. Empresa con nombre, ¿verdad? Uh, eh, creado con éxito. Todo bien. Esto es todo lo que necesitamos hacer chicos. Entonces podemos escoger que hemos podido hacer esto. Así que entremos rápidamente y conectemos un servicio de departamento, o vamos a crear el servicio departamental. Ir en departamentos deben ser departamentos, departamentos, ¿verdad? Servicio departamental, solo vamos con el mismo flujo al servicio al servicio, luego ata trimestres constructor. Después traemos el depósito privado del departamento final. También necesitamos un Mapper YouTube, Mapper YouTube, Paz Todo bien. Entonces pienso extra especial para que no creamos. Entonces, ¿cómo creamos Muy simple. Solo tenemos la misma metodología pública, luego creamos respuesta al paciente, respuesta al paciente mascotas departamentos con Departamento imputa Departamento imputa, entonces puedes llamar a estas imputas, ¿verdad? Bien, genial. Entonces entrando aquí, entrando aquí, entonces podemos tener. Entonces vas a tener guardado el trámite departamental. Entonces tenemos el mapeador que le dices, departamento a entidad pasando las entradas, luego lo recibiremos Pero si te estás preguntando el comando que uso para hacer esto, una vez que estás usando un Control sV, creo que debería ser un comando Os B en la marca. Control OT V te dará la variable directamente. Voy a llamar a este departamento persistido. Tienes profundidades procesadas, ¿verdad? Sí. Bien. Entonces, entonces tenemos esto. Recuerden, chicos, aquí también hay algo único. Si nos fijamos en el Departamento Impute, ¿verdad? Departamento impute también toma dirección impute. Entonces, por favor, no se olvide de eso. Se necesita dirección imputa. Entonces, ¿qué haces cuando estamos mapeando? Recuerda, no mapeamos nada llamado dirección, ¿verdad? No mapeamos nada ni corres solo ignoramos porque el objetivo era complicarlo aquí. Entonces puedes entrar aquí y decir Mapper UT punto a la entidad de dirección Entidad de dirección, van a pasar entrada que obtiene dirección, ¿verdad? Sí, esto nos da la entrada de dirección y tenemos lo que necesitamos, y esto básicamente crearía la dirección, usaría Gali crear la dirección Entonces podemos entrar aquí para luego guardar la dirección. Sólo vamos a saltarnos eso por ahora. Entonces antes de guardar, recuerda que necesitamos crear el IDD Necesitamos realmente guardar el ID de entidad. Recuerda dirección tiene algo llamado ID de entidad que usamos para identificar si viste el departamento, el empleado o el asociado voy a decir dirección. Entidad de Cert de puntos, ID de entidad y elijo el número morado del departamento persistido Entonces voy a hacer un servicio de dirección, que aún no tenemos. Address service dot save pasándole la dirección, eso básicamente creará una dirección. Simplemente puedes seguir adelante y luego devolver una respuesta de creación aquí. Entonces solo devolvemos el UUID. Entonces, sí, esto será pert Departamento punto Obtiene UID, UID ¿Por qué el UUID automático apunta a la cadena? Entonces el departamento de mensajes creó. Diré departamento con nombre nombre, persistió luego creado con éxito Entonces pasamos el éxito punto éxito thensu ahora tenemos básicamente lo que necesitamos Volvamos en el siguiente video para continuar. Los veré chicos en el siguiente video. 44. Servicio para mutaciones, parte 2: Bien, gracias por regresar, chicos. Es bueno tenerte de vuelta. Sigamos desde donde paramos. Hemos creado un servicio de empresa, y yo he creado un departamento. Ahora una cosa departamento requiere dirección y no hemos podido hacer esto. Vamos a entrar y luego mapearlo. Ahora elegimos entradas para obtener la dirección luego la mapeamos a la entidad de dirección que podemos hacer aquí y esto realmente resuelve estos detalles, lo cual es bastante genial Ahora, como notarás la entrada en este momento, si realmente estás pasando la entrada, entrada básicamente entonces aquí, para la entrada será nula, así que luego podremos entrar y luego proceder. De hecho, podrías haber hecho esto de dos maneras. De hecho, podríamos haber establecido nuestra entrada solo para ingresar get address, establecer ID de entidad, luego establecer este firststival luego antes de hacer esto de cualquier manera que funcione Podría haber sido algo así, podría haber hecho PID set entity ID. Establecemos ID de entidad, por lo que tenemos el ID de entidad de antemano. ¿Correcto? Podemos simplemente elegir esto y colocarlo aquí, luego antes de que realmente nos fijemos. Sea cual sea la forma que funcione o simplemente entres y pongas. Pero de cualquier manera funciona, así que solo voy a comentar esto. Yo solo real para compartirles sobre que vamos a hacer esto. Lleguemos tarde y luego solo proceda el empleado, ¿no? Entonces voy a llamar a esto. Porque vamos a estar haciendo todo lo relacionado con los empleados, lo llamaré empleado Servicio de Outsource Externalizar empleados. Voy a abastecer el servicio. Fresco. Entonces lo tendré como servicio y requiero X constructor. Entonces traemos un par de cosas, un depósito privado, final empleado, uno privado, el depósito final de Asurce Entonces también necesitamos nuestro Mapper UT, final, el Maper UT Upper YouTube, Creo que eso es básicamente lo que necesitamos por ahora. Todo bien. Vamos a entrar y empezar las cosas. En primer lugar, vamos a crear a nuestro empleado. Voy a convertirlo en un privado, uno privado, verás la razón por la que la respuesta de creación, luego crear crear empleado. Esto tomará en el empleado voy a fuente Impute. Recuerde, empleado subcontratar imputa imputa. Recuerda, si realmente vamos a la firma, bien, simplemente salta aquí. Eso es lo que estamos esperando. Así que en realidad esperando al empleado que los fuente les puse a estos tipos recordar. Así que eso es con lo que realmente vamos. Todo bien. Entonces, ¿cómo sería esto? Ahora, queremos cortar solo al empleado solo. Esto es bastante sencillo. Tenemos que hacer algunas comprobaciones para asegurarnos de que las cosas están bien. Entonces decimos si F, entonces las colas de cuerda. Corbatas de cuerda del marco de resorte. También tienes uno de Apache Apache común entonces nosotros hacemos el texto HAS. Un texto no imputa un nombre. No necesito un nombre. Impute obtiene empleado de entidad empleado Necesito ID de empleado. Necesitamos que esto esté disponible y OCO Bien. Después cadena TSS. Ustedes exactamente lo que estoy tratando de lograr en un minuto, chicos. Cadena TSS, luego texto de punto, texto H luego obtiene Departamento Tiene punto de texto Impute obtiene el número de departamento. ¿Bien? Entonces tomemos una más o cadena que uses tiene texto. Entonces diga imputa que recibe correo electrónico recibe correo electrónico, o Impute obtiene fila igual a Entonces lo que haremos es que vas a mostrar una nueva excepción de tiempo de ejecución. ¿Por qué es esto? Esa será la identificación del empleado. ID de empleado juntos. identificación de empleado, número de departamento requiere identificación de empleado, número de departamento, número de pieza, correo electrónico. Estamos tratando de crear el empleado. ¿Cuál es la distinción? Entonces si realmente revisas nuestra entidad y traes aquí al empleado. Si miras al empleado, al parecer, así es como distinguimos entre empleado y el externalizado estos detalles son los mismos Recuerden, teníamos un concepto llamado interfaz de persona en la gráfica Q, menor creó a la persona solo para refrescar nuestra memoria, ¿verdad? Y tuvimos que el empleado hereda esto, hereda a la persona, y esto es lo que realmente distingue al empleado del subcontratar Y si nos fijamos en externalizar también lo mismo, ¿no? Son estos detalles a continuación los que realmente distingue lo resentido por esto Entonces lo que estamos diciendo aquí es si estas cosas no existen, si este patrón no tengo texto, por eso en realidad se niega aquí Si esto no tiene texto, es por eso que número de departamento. Y si el correo electrónico no tiene pruebas, ¿verdad? El correo electrónico no el correo electrónico no tiene derecho de texto, y la entrada es no. Al parecer, si algo de esto es cierto, al parecer están diciendo que se requieren estos detalles , así que por favor proporcione eso. No obstante, si esto no es nulo y se proporcionan estos datos, significa que tenemos todo lo que necesitamos para crear a nuestro empleado. Lo que vamos a hacer es que en realidad es un cambio. De hecho vamos a intercambiar nuestras imputas. Imputa. Podríamos hacer nuestras inclinaciones Mapper, vamos a hacer a empleado a empleado No tenemos imputas directas. No tenemos imputes directos, ¿qué podemos hacer? Bien. Entonces hicimos algo. De hecho, podríamos usar la PC de los empleados. Tenemos el empleado MPO que es este que se convierte en un DTO luego podemos tomar del DTO y podemos mapear desde el DTO a la entidad del Entonces ese sería el gran yo, ¿verdad? Para que seamos capaces de lograr realmente. Ahora la razón por la que tenemos este problema es porque no es un problema porque decidimos que en realidad vamos a mapear tanto al empleado también deberían venir de un único punto final que encajando a otro punto final. Entonces creo que eso está claro, chicos, ¿verdad? Así que podrías simplemente volver a lo que acabo decir para que en realidad tenga más sentido Por lo que estamos pasando al empleado y la externalización se le imponen detalles dentro Entonces es por eso que los estoy separando, creando un detalle de empleado desde aquí, para que puedas tomar el DTO empleado y trasladarlo a la entidad de empleados Lo mismo que vas a hacer por el subcontratar. Hagámoslo de inmediato. Entonces tienes el Mapper T eso es mapa. Entonces empleado DTO, entonces esto toma las imputs. Solo tomas entradas, ¿verdad? Solo toma entradas y en realidad obtenemos el código DTO del empleado Entonces desde el empleado DT podemos entonces decir empleado posit Employee posit puede luego guardar El autocompletar es en realidad un desastre entonces podemos ahorrar. Bueno. Ahorro. Entonces toma el mapeador te dos puntos, entonces ahora estamos convirtiendo a entidad de empleado y pasando el empleado DTU que funciona y persistimos conseguir un empleado persistido, empleado persistido Todo bien. Genial. Entonces tenemos eso realmente salado. Bueno, déjame darme un poco de espacio. Entonces eso en realidad salado. Entonces otra cosa. Recuerda, en este pa en particular, también tomamos la lista de direcciones porque podrías pasar una lista de direcciones, ¿verdad? Podrías pasar una lista de direcciones. Así que voy a entrar y simplemente wutly cablear eso. Entonces vamos a tener los insumos. No sé cómo los imputes obtienen dirección. Si no obtienes la dirección de la corriente de transmisión, entonces podemos mapearla, el mapa, crear el mapa, luego elegir un mapa en YouTube, luego hacemos referencia al mapa para ajustarlo a ti, genial, y hacer referencia al mapa para ajustarlo a ti. Y después de hacer eso, ahí podemos tener yo luego mapa otra vez, luego escojo el detalle que luego estamos obteniendo detalle ahora tenemos un detalle, entonces podemos crear algunos detalles podemos decir el mapeador decir que para mapear dirección entidad Tenemos el mapa en esta entidad, el obtener el detalle. Al parecer, entonces en realidad tienes la dirección. Entonces desde la dirección, entonces puedes decir, Oye, dirección, quiero que pongas el ID de entidad. Establecer el NCI luego elegirá el ID de empleado persistido. Eso realmente llenaría en detalle luego devolverá la dirección. Después de devolver la dirección, entonces entonces podemos decir, Oye, quiero que esto se enumere a la lista. Al parecer, esto en realidad no está claro. Aquí hay un error que van a arreglar en el siguiente video 45. Servicio para mutaciones, parte 3: Oh, genial. Gracias por regresar, chicos, y un placer tenerlos aquí. La razón por la que tenemos este error es porque estamos especificando la dirección B que esta Voy a necesitar inp podríamos simplemente mapear un aumento directamente a una dirección. Creo que eso es lo que necesitamos. Simplemente mapeamos P duramente a la dirección. Al parecer, aún no tenemos el UID porque no se equipara, Entonces eso es exactamente lo que vamos a hacer. Simplemente entramos y lo hemos hecho. Vamos a hacer en vez de mapear esto, ya no necesitaría esto. Así que normalmente puedo quitarme esto. Voy a quitar esto. Entonces voy a decir esto para imputar ¿Debería ser imputes? Imputar o debo simplemente llamarlo dirección imputes? Domicilio imputa. Entonces pasaré en la dirección imputa. Ahora bien, esto no dará ningún error. Tengo que devolverle esto para que podamos devolver una lista de direcciones para devolverlo Control sV o Comando O V en su caso. Voy a tener lista de direcciones. Genial. Ahora tenemos esto. Entonces podemos seguir adelante para decir que queremos nuestro servicio de dirección, que aún no hemos creado. Entonces queremos salvar a todos. Al parecer se puede llevar todo pasando la lista de direcciones y eso va a ser agradable. Entonces, al mismo tiempo, puedes devolver nuestra creación con nuestro constructor de respuesta de creación, luego esto, que sería esto. Al bajar, queremos el UUID, que realmente persistió, este sería UID, ese ID Queremos el UUID aquí. Obtiene UID autocompletado UID. Después puntos para encordar. Genial. Entonces ese es el mensaje, luego puntea el éxito, lo cual es cierto. Entonces por aquí no teníamos los mismos formatos que hemos estado usando. Empleado empleado con nombre. Con nombre, entonces tienes esto creado con éxito. Todo bien. Esto es genial, chicos. Esto es genial. Ahora hemos sido capaces de resolver esto en realidad. Así que sigamos adelante y luego creemos para subcontratar. Lo que hicimos lo pasé rápidamente, lo que hicimos, estamos tratando de verificar. Hicimos una comparación. Estos son los principales detalles que necesitamos que distinguen al empleado del subcontratar para dividir el subcontratar a la Si nos fijamos en esto, eso es lo que los distingue porque todos estos detalles son iguales Entonces estamos comprobando si esto no es nulo, esto no es nulo, todo esto disponible. Entonces si alguno de ellos no está disponible, al parecer, esa persona no es un empleado. Por eso hacemos zoom aquí y en realidad mostramos una excepción. No nos preocupamos por la excepción. Vamos a manejar la excepción en este curso, y en realidad tomamos esa sección separada. Entonces la siguiente parada, luego creamos la entidad o la entidad de empleados después de crearla y ¿cómo lo hicimos? Recuerde, esto en realidad está abarcando tanto al empleado al insumo subcontratado ahora lo estamos separando pasándolo y obteniendo el DTO del empleado, entonces el empleado DTU luego está obteniendo la entidad del empleado luego la guardando, obteniendo la entidad persistida No teníamos esto, y luego montamos detalles. Pero me perdí esto. Ahora que tenemos al empleado persistido, no necesitábamos esto para mapear realmente a la dirección y la dirección muy probablemente sea una lista Damos la oportunidad ver realmente más de una dirección. Así que estamos haciendo es simplemente streaming a través de streaming a través de la dirección impute después de transmitir a través de la dirección imputa, entonces estamos mapeando la dirección impute a la entidad de dirección Entonces estamos configurando o más bien actualizando el ID de entidad, para poder conectar a este empleado a la dirección. Entonces estamos devolviendo la dirección y obtenemos una lista completa. Entonces esto lo están guardando. Esto realmente va a proporcionar implementación. Pero estoy seguro de que se trata de chicos muy regulares. Después siguiente, vamos a buscar otro método privado. Mencioné que esto es privado. Esto también será privado, y os voy a mostrar chicos en un rato. Entonces esto también seguirá nuestra respuesta de creación Formax. Por lo que el sistema de respuesta de creación se creará externalizado para crear externalizado Crear externalizar y también toma en las mismas imputas. Ahora, hacemos el mismo conjunto de validación, ¿verdad? Aquí va a pasar el mismo conjunto de validación porque si lo pensamos, no está disponible. Sólo estoy pensando en uno. Probablemente, básicamente podríamos saltarnos esta validación. Si esto está disponible, entonces es un empleado. Si no está disponible, podemos asumir que es un subcontratar, aunque en realidad podríamos hacer más validación, pero creo que podemos trabajar con esa suposición por ahora Pero lo correcto hubiera sido, entonces podemos comprobar si esto también es un subcontratar No es un subcontratar, entonces también podemos lanzar una excepción Significa que los detalles, no se pasaron los detalles propios, o esto es pase o esto se pasa. Vamos a seguir adelante y simplemente configurarlo a justo si Si esto tiene imputs pero en esta ocasión, vas a ver si esto no tiene texto, que sale tan ordenado, que sale tan ordenado, lado no tiene texto o el deber es nulo, o imput obtiene deber es igual a Igual a nulo, ¿verdad? Entonces puedes mostrar otra excepción. Sí, esto se requiere, ¿verdad? Se requiere de estos dos. Justo lo mismo que en realidad hiciste aquí. Entonces si esto se requiere, entonces esto también se requiere, para el subcontratar, entonces puedes seguir adelante y luego crear nuestros detalles Entonces seguimos adelante y decimos, ¿es esto correcto? Impulso, entonces Oh, genial, genial, genial. Esto es gracias a completar. Y teniendo esto en, entonces puedes decir externalizar repositorio, punto guardar, luego mapeamos esto a la entidad, y esto realmente crea para nosotros. Entonces podemos hacer código esto persistió. Dejar tercerizar. Para que no se subcontraten. Esto es genial. Déjame cerrar esta para darnos un imbécil Muy bien, tan genial. Entonces tenemos esto. Al mismo tiempo, así que guardamos una lista, ¿no? Nosotros guardando una lista. Entonces solo va a ser el mismo formato, ¿verdad? El mismo formato con el que realmente trabajamos por aquí. Sólo voy a copiar todo esto, o simplemente plasmarlo aquí, ¿verdad? En esta ocasión, no tenemos nada copia hermana, así que necesitamos los persistidos no subcontraten, saquen el ID de origen Entonces eso es básicamente lo que necesitamos aquí, ¿verdad? Básicamente solo necesitamos esto y hemos podido lograrlo. Entonces al parecer estamos ahí vamos a salvar. Vamos a guardar toda esta lista de direcciones. Voy a salvar esto. Después el regreso nuestros datos. Esto también seguirá el mismo formato. No hay cambios a excepción de las redacciones. Luego traemos al subcontratar persistido. Sí, esto funciona en, esto entra, supone que debe ser subcontratado, subcontratado Obtuve con nombre, creado con éxito. Creo que en realidad he podido completar esto para el empleado. También tenemos algunos otros detalles porque si realmente recuerdas mira nuestra mutación, aún así lo hemos hecho, fueron los empleados de crear. Necesitamos actualizar la dirección del empleado existente y actualizar los detalles de los empleados. Dicho esto, te veré en el siguiente video. 46. Servicio para mutaciones, parte 4: Oigan, chicos, genial tenerlos de vuelta. Todo bien. Recuerda, creamos esto como un método privado y este es un método privado. Ahora vamos a ver la razón por la que hicimos eso y es porque queremos que todo tenga puntos de entrada. Entonces decimos respuesta de creación pública y solo decimos crear empleado subcontratado Esto se encargará de ambos. Cuando entonces tengamos esto externalizado, entonces estaremos tomando en el imput que es empleado subcontratado Nosotros lo llamamos imputa. Ahora bien, como distinguimos return tenemos nuestra cadena que pruebes tiene texto. Así que luego pasando imputes punto obtener nuestra fuente TD. Entonces así es como voy a distinguir. Entonces si esto no tiene nuestra fuente TD, eh eh e imputa que obtener deber es igual a nulo Esto es nulo, entonces voy a volver crear empleado para crear empleado. Si no, entonces creamos externalizar. Se puede crear externalización Todo bien. Así que recuerda, esta es la misma lógica que hicimos aquí. Creo que entonces puedes seguir adelante y quitar esto, ¿verdad? Así que podemos quitar esto porque nunca va a venir no va a entrar aquí, ¿verdad? Si en realidad no lo tenemos. Entonces estás diciendo si esto está disponible, si esto no está disponible, estamos asumiendo que queremos crear el empleado, y si es empleado, esperamos estos detalles que proporcionamos de lo contrario intentamos una excepción. Pero si no lo es, aprendiz y subcontratar crearán, así que podremos lograrlo de hecho así que luego tenemos algunos dos detalles adicionales necesitamos comparar, necesitamos crear realmente y revisemos rápidamente esas firmas y de hecho procederemos con ¿Cuáles son las firmas? Si verifica bajo la mutación, necesitamos actualizar realmente la dirección existente, cuál actualizará una dirección que ya está disponible y los detalles de un empleado que ya están disponibles. Bien, entremos y luego hagamos eso. En primer lugar, al parecer, Asus recorriendo la respuesta de la ecuación. Respuesta de creación, yo diría actualizar actualiza la dirección del empleado existente. Para que eso satisfaga eso y vamos a estar recibiendo las entradas de dirección. Así que recibiendo entradas de dirección y fresco Imput. Bien, eso funciona. Ahora bien, si queremos hacer eso, recuerda, si quieres actualizar la dirección de un empleado, significa que el ajuste debe existir antes y ese ajuste debe haber sido mapeado a la entidad. ¿A qué me refiero? Si realmente compruebas la dirección, la dirección ya está conectada. Conectamos la dirección a cada una de las entidades utilizando este ID de entidad. Por lo que significa que el ID de entidad proporcionado debe ser el mismo para ese empleado. Y si miras la dirección misma cola que estás recibiendo aquí, tiene el ID de entidad del empleado. Entonces necesitamos estar seguros de que este ID de entidad ya existe, y lo suficientemente bueno, si revisas el repositorio para entidad de dirección, ya hemos creado una opción ahora para buscar por entidad, ID y UUID Entonces estos dos tienen que ser los mismos porque este UID es como si estuvieras usando un derecho largo que realmente existe Por lo que tenemos que asegurar que tanto el ID de entidad el valor largo estén existentes. Ahora bien, podría preguntarse, ¿por qué estoy usando ID de entidad o ID? ¿Esto no sería suficiente? No, no debería ser suficiente. Y la razón es que recuerden que estamos guardando una lista. Si verificamos nuestra implementación, estamos guardando una lista. Entonces, si esta persona realmente proporcionó dos direcciones, lo que significaría es que tenemos dos registros en la tabla de direcciones, y tenemos dos registros en la tabla de direcciones, estarán vinculados con el mismo ID de entidad. Por lo que el factor distintivo es el ID habitual. Demuestran que esta arcilla, chicos, es la UID. Dicho esto, entonces entremos e implementemos esto. Chicos, si no lo entendieron, siempre pueden hacer una pausa rebobinado para escuchar la declaración que acabo hacer para entender bastante el motivo en el que estoy codificando de esta manera Ahora, estaremos recibiendo un detalle, que es la entidad de dirección, servicio de dirección. Aquí de nuevo, necesitamos el servicio de dirección, ¿no? Y ciertamente está incrementando algunas cosas. Estoy tratando de asegurar que esto es lo último que creamos. Entonces necesitamos un servicio de dirección. Crearemos esto finalmente, y esto luego estaría exponiendo la dirección por entidad, entidad e ID habitual. Esto estará exponiendo que al parecer, entonces el servicio no estaría interactuando con el Costitu El servicio debe ser con lo que debe interactuar en lugar de hablar directamente con RPO situ Creo que eso tiene tanto más sentido. Luego seleccionamos la entrada que obtenemos ID de entidad, luego recibiremos nuestro UUID de cadena Otro pasamos en la entrada get UUID, que es una cadena. Eso básicamente nos daría estamos esperando que nos dé una opcional. Este estilo particular de codificación chicos es lo mismo que haces cuando realmente estás creando la prueba. De hecho, creas la prueba que falla, luego escribes un código contra esa prueba en particular para asegurarte de que esto realmente funcione. Eso es justo lo que estoy haciendo. Solo estoy creando algo que debería fallar, entonces para cuando estés implementando el servicio de direcciones, todo simplemente coincidirá. Entonces esperamos que opcional porque puede existir y puede no existir, puede existir o puede no existir y esperamos una dirección DTU Yo no estaría esperando a la entidad sino a la DTU. Después llamaré a esta dirección opcional Dirección opcional DTO. Sí. Entonces quieres esto, que será el Java tu T. Bien. Entonces tenemos esto, lo cual es genial. Ahora, siguiente parada. Queremos comprobarlo. Si este tipo no existe, queremos realmente lanzar una excepción no existe. Entonces, lo que podemos hacer o cómo podemos lograr eso en realidad es bastante sencillo. Entonces, si quieres hacer eso, todo lo que tenemos que hacer es si muestras esa excepción etnica, muestra esa opción étnica ahora Entonces lo genial es des que podemos hacer esto directamente, o dejarme bajar esto. ¿Correcto? Bueno, déjame dividirlo de aquí. Bien, entonces creo que esto es mejor. En realidad podrías hacer esto o si quieres abordar los detalles directamente, podrías simplemente decir punto solo podemos decir o de lo contrario, puntos o bien elegir o cierto, en realidad elegir. Entonces en realidad mostramos el pase en este tipo, la clase anónima, que debería ser pase en realidad mostrar una excepción no encontrada por ahora solo hacemos una excepción en tiempo de ejecución. Yo diría dirección dirección para empleado. Empleado con identificación, no encontrado. Es identificación, no encontrada. Entonces con ID, concatenemos esto. Say imputes obtiene ID de entidad, luego no se encuentra. No se encontró. Sólo cita esto. Todo lo que acabamos de reservar como debiera. Este video ya se está haciendo muy largo porque tenemos que explicar en detalle. Entonces vamos a volver en el siguiente video para luego proceder de donde paramos. Bien, chicos, los veré en el siguiente video 47. Servicio para mutaciones, parte 5: Muy bien, genial. Gracias por venir chicos. Me ha encantado tenerte de vuelta. Todo bien. Hemos podido ver si la dirección realmente contiene la dirección no existe, entonces yo diría que no existe, ¿verdad? Diciendo si estás intentando buscar por el TID y UID y te explico el último video por el cual un NTT ID y UID vamos a implementar todo tiene pedir que ver con Quiere hacerse, antes que nada con el empleado. Recuerdo también que también tenemos este camino que debemos implementar para que la dirección realmente se haga pronto. Bien, así que lógicamente, ¿cómo crees que vamos a proceder? Y así es como pienso. Si estás tratando de comparar realmente, recuerda, quieres actualizar una dirección existente que ya está en la base de datos, ¿verdad? Si el usuario o quien realmente viene desde el front-end es en el front-end es realidad los datos que se pasan directamente desde la API. Está dando exactamente los mismos detalles que tenemos en la base de datos de direcciones. Al parecer, deberíamos intentar una excepción. Entonces significa que necesitamos igualar realmente cada uno de los campos para estar seguros de que son, no son lo mismo. Si son iguales, queremos lanzar una excepción. Entonces eso podría ser un poco largo, así que por eso simplemente ya lo implementé. Yo solo lo copiaré y solo les mostraré chicos y solo lo tiraré. Entonces esto es lo que tenemos. Bien. Bien, entonces ahora mismo, recuerda que hemos podido usar Ostro esta opción Ya no vamos a necesitar este opcional. Simplemente puede llamar a esta dirección encontrada, se encuentra la dirección. Bien. Entonces, ¿cómo lo hacemos? Si lo piensas, así que hagamos la comparación. Vamos a estar seguros de que el ID de entidad si el ID de entidad es igual al ID de entidad, y el UUID también es el mismo que UID y las calles, ciudad, estado y código postal son los mismos. Creo que esto es un int? Sí, esto es un int. Un int es igual a, creo que esto funciona. Los lugares deberían usar Esto funciona porque integer es un int, pero un entero porque en realidad es recomendable que uses equals porque en realidad estás usando el wrapper en lugar de lo permisivo, pero esto también funciona Si vas a estar haciendo esto, vamos a demostrar que si todo este partido, entonces realmente queremos lanzar una excepción. Esta vez intentamos otra excepción de tiempo de ejecución. Lanzo excepción de tiempo de ejecución, muestra que ya existe realmente. Entonces si no tenemos esto, entonces procedemos a crear lo que realmente necesitamos. Tenemos el mapador til, después para mapear mapa a abordar. Mapas dirección DTO, ajustar CTO, que toma en una entrada Creo que evité crear esto, pero eventualmente creo que necesitamos crearlo. Eso tomaría en una entrada convertir una entrada. Entonces una dirección, una entrada, convertimos en dirección o más bien que hacer esto, por qué no solo conviertes el Impus Porque no creo que básicamente necesitemos una imput en direccionarlo Entonces podemos hacerlo. Voy a hacer un mapa MPT para dirigirme a entidad Entonces voy a tomar en las entradas. Esto acepta una imputa. Es bueno. Entonces en realidad recibimos la dirección. Entonces eso realmente funciona para nosotros. Esta vez, entonces necesitamos actualizar realmente otro detalle porque no actualizas. Porque no actualizo, tenemos que hacer, llamemos a esta nueva dirección. Digamos nueva dirección. Nueva dirección. Entonces tenemos que hacer la nueva dirección. Dot set no, no estoy configurando esto. Quiero establecer las actualizaciones de conjuntos de tiempo , actualizadas. ¿Qué son las actualizaciones? ¿Por qué me estás haciendo esto ? Una vez que hagas esto, entonces di nueva marca de tiempo, los molinos actuales del sistema Quería algo de habilidad Java, ¿verdad? Deberíamos en realidad de esto. Si miras esto, recuerda, tenemos este concepto de fechas auto creadas. Será esta última modificación de fechas, ¿verdad? Esta última modificación ocurriría en las actualizaciones, y eso es lo que realmente logramos aquí. Con esto hecho, entonces podremos ahorrar. Tenemos el servicio de dirección, que aún no tenemos. Estoy seguro espero que ustedes no sean nosotros ya como lo consiguieron. No estamos implementando el servicio de dirección. Set se unirá entonces guardamos luego guardamos la nueva dirección. Y cuando hagamos eso, vamos a estar teniendo un persistido junto con tener una dirección persistida. Creo que si creo que eso funcionaría. Tendrán una dirección persistida. Entonces dirección universitaria este código que hemos persistido dirección, persistió, a. dirección tan persistida. tan persistida Y entonces podemos devolverle esto. Podemos devolver nuestra respuesta de piación. Devolver esto, ¿verdad? Todo bien. Entonces decimos pasar el UUID. Aquí podemos devolver esto. Después pasando el mensaje, digamos dirección del empleado actualizado con éxito. Creo que acabo de decir dirección de empleado actualizada con éxito. Gracias son para completar pero ya no necesito este. Dirección actualizada con éxito. En realidad usarán puntos, entonces el éxito será cierto. Esto se ha actualizado con éxito. Es así como vamos a estar actualizando la dirección existente. Pasemos rápidamente por ustedes chicos para que podamos saber lo que hicimos. Lo que hicimos es en el servicio de direcciones, vas a exponer el método con el que vas a estar hablando la postura, vas a estar encontrando por el ID de entidad de dirección y UUID Esto no existe, dirías que deberías regresar no encontrado, ¿verdad? Estoy usando los conceptos porque en realidad estoy usando este concepto porque una vez que realmente mapeas, también podrías usar los tros OL, ¿verdad? Entonces por eso no necesitamos devolver el opcional porque el opcional nos da ese detalle. Entonces, si realmente miras opcional, mira opcional en Java para. Mira lo opcional en Java t, ¿verdad? Esto en realidad contiene bastante método. Entonces buscamos el str o bien espectáculos. Entonces tu stro, así que si lo miras, tu stro, es decir si un valor está presente, si tuvieras que obtener un valor, de lo contrario, realmente muestra en la excepción que no existe tal elemento. Entonces eso es exactamente lo que estamos tratando de aprovechar aquí lo que vas a crear en el servicio de direcciones. Entonces la pregunta entonces la pregunta entonces plantea la pregunta Cómo sabemos que los datos que se pasan para la nueva dirección no son los mismos que tenemos en la base de datos. Muy sencillo. Tenemos que comparar cada uno de los campos. Si alguno de ellos no tiene ninguna discrepancia, significa que solo están pasando los mismos datos para que podamos regresar a ellos. Oye, no estás actualizando nada, solo estás devolviendo exactamente la misma dirección que ya está en la base de datos. Eso funciona. No obstante, si no es así pueden seguir adelante para actualizar, entonces actualizamos la marca de tiempo, entonces esto funciona Después actualizamos lo actualizamos después de actualizar la marca de tiempo luego la guardamos Eso es lo mismo básicamente actualizamos cuando devolvemos esto. Eso es básicamente genial. A continuación, en el siguiente video se estará haciendo la actualización de los detalles del empleado, actualiza los detalles del empleado. Esta es la parte vigorosa, chicos. Una vez que hayas terminado con esta parte, las cosas comienzan a aliviarse porque en realidad estos son los detalles centrales que usamos en la administración o el servicio usando administrar todo el gráfico cura chicos, solo aguanta ahí y todo junta en un poco. Te veré en el siguiente video. 48. Servicio para mutaciones, parte 6: Oigan, chicos, gracias por volver. Todo bien. Nosotros hemos hecho el empleado. Hemos hecho la actualización de la dirección de empleado existente que tienes. El último aquí para la mutación que vamos a hacer es actualizar los detalles de los empleados, actualizar los detalles de los empleados, y esto es relativamente simple. Básicamente, volvemos en la respuesta de creación como el mismo modelo que seguimos. No hagas actualizaciones de los detalles del empleado, detalles del empleado. Después tomaremos en los datos de los empleados insumos. Al parecer, eso es lo que estamos usando las actualizaciones de los empleados imputa, ¿verdad la misma manera que estamos usando la dirección PS aquí como recordamos, dirección NP usando entradas de actualizaciones de empleados. Entonces esto hecho, entonces podemos seguir adelante para continuar con la implementación, ¿verdad? Bien. Entonces, al parecer, si quieres actualizar los datos del empleado, necesitamos estar seguros de que el empleado realmente existe. Si el empleado no existe, entonces, ¿cuál es la necesidad de actualizar? Entonces vamos a hacer los puntos del repositorio de empleados definidos por empleado, encontrar pero en este método antes. Autocompletar, en realidad me estás metiendo ahora mismo. ¿Bien? Entonces si lo miras, ya lo hemos hecho ya, solo vamos a proceder porque ya creamos la firma. Vamos a decir, encuentra esto no pases en las entradas. Obtienes identificación de empleado. Ahora bien, si resulta opcional, si no existe, este mismo concepto de razón o de lo contrario no arroje una excepción de tiempo diciendo ID de empleado con impute get ID, no encontrado, gracias , autocompletar Esto básicamente entonces sería capaz de darnos luego consigue el empleado. Voy a llamar a ESO, sí, así que podemos llamarlo empleado, ¿verdad? Entonces conseguimos al empleado. Déjame crear alguna habitación para que podamos ver todo, ¿verdad? Todo en su conjunto. Ahora, después de tener eso, ¿cuáles son los detalles que estás pasando? Si lo miras críticamente, estás pasando el nombre, estás pasando las fechas de nacimiento, el género, el salario, ¿verdad? Lo siento, creo que estoy comprobando lo incorrecto. Me imagino. Estaba buscando las actualizaciones del empleado empleado imputa. Entonces eso. Por lo que las actualizaciones de los empleados imputan. Bien, vamos. Necesitamos la identificación del empleado. Sueldo, edad o fila. Esto se usa para ir a buscar al empleado. Encontré entonces actualizamos el sueldo, la edad, y el rol. O digamos que la persona es promovida, la persona es ascendida de pasante a GMD A pesar de que eso es perfecto. Si eso se hace, entonces este es en realidad un método perfecto para usar. la misma manera, solo tienes que seguir adelante y luego actualizar empleado, luego hacemos un salario establecido. Establecer salario luego empleado. Entonces fijamos la edad. Edad establecida por el empleado. Digamos que hubo un problema con la edad. Entonces empleado el rol establecido y tenemos el imputador get roll. Esto está resuelto. Después actualizamos las fechas, actualizaciones que establecen actualizado que en realidad establecemos esto, luego recibimos el realmente lo guardamos. Deposito de empleado que ahorran y lo volvemos atrás, lo llamamos empleado actualizado. Recuerden, chicos, usando JPA, porque yo usando JPA, esto es opcional porque cuando haces una actualización, ya agregaste notación aquí, dices que la modificó por última vez la misma manera esta se crea para darnos Lo creamos, se supone que esto realmente va a entrar en acción sin embargo solo lo estoy dejando como está, en realidad me arreglo con eso. Derecha. Entonces creo que también hay algo llamado sello de tiempo de creación, marca de tiempo de creación Esta ecuación, sello de tiempo. Básicamente funcionan igual. Básicamente funcionan igual. Todo bien. Pensé que debería mencionar esto para aquellos que realmente están interesados. Para la ecuación, no necesito agregar esto se supone que debe crear automáticamente, y se supone que debe obtener esta actualización cuando estás haciendo una actualización automáticamente. Pero en realidad solo estoy usando el método manu para actualizar aquí Pensé que debería mencionarlo porque alguien pudo haber visto eso, ¿verdad? Bien. Así que hicimos en realidad esto tenemos que hacer luego solo regresar, Solo devolvemos nuestro constructor como de costumbre. Después RetornUID VOD sale, el actualizado, luego giramos un mensaje , empleado actualizado. Esto es genial. Entonces el éxito es exitoso, cierto. Entonces en realidad lo terminamos. Esto es básicamente, chicos, es básicamente. De hecho, hemos podido implementar todo esto y que realmente necesitamos. Y esto es bastante genial. Esto es genial, chicos. Lo que vamos a estar haciendo en el siguiente video, vamos a estar cableando esto en los controladores apropiados, vamos a estar arreglando este servicio de direcciones. Los veré en el siguiente video 49. Servicio para mutaciones, parte 7: Oigan, chicos. Tengo que tenerte de vuelta. Todo bien. Entonces como mencionamos, comencemos a cablear las cosas, ¿verdad? De hecho vamos a llenar los controladores, luego nos dirigiremos a implementar el servicio de direcciones. Entonces para la empresa. Vamos a traer nuestro servicio de empresa, ¿verdad? Servicio de la empresa, entonces estaremos usando el adquirido como constructor. No tengo que declarar explícitamente nuestro constructor. Entonces en realidad colocamos esto entonces decimos que este puntos crea compañía y tenemos la entrada. Esto funciona automáticamente. Entonces lo mismo así tenemos el At adquirido como constructor aquí, luego traemos en servicio departamental, privado, final no depositario, servicio departamental final Departamento de servicio auto completa departamento servicio departamental. Entonces entra aquí y trae el servicio departamental, luego crea departamento. Entonces por aquí, lo mismo, así que vamos a estar cableando el servicio externalizado del empleado Seré empleado final privado externalizar servicio. Entonces solo llama a este servicio por la longevidad del nombre. Entonces solo tenemos el servicio apri para estar en el x Controller En el quire controlador Ax. El traer el servicio, luego crear el empleado externalizar el paso de los Iqutes Genial. Entonces por aquí, vamos a estar usando el servicio, luego actualizando la dirección existente, genial. Después el servicio actualiza los detalles de los empleados. Bien, así que hemos sido capaces de cablear esto. Entonces eso es básicamente todo lo que tenemos que hacer. Ahora lo dejamos en el esqueleto antes, pero ahora hemos podido realmente llenar todo. El siguiente rompecabezas que tenemos que resolver es crear nuestro servicio de direcciones. Tenemos esta falta, que es la salvada. Tenemos el guardar todo lo que falta y también tenemos tenemos la dirección servir la dirección fina por entidad o UID Eso es lo que tenemos que implementar ahora mismo. Simplemente entraremos y crearemos nuestro servicio de dirección. Crear servicio de dirección. Servicio de dirección. Servicio de dirección. Tiene que haber un servicio a tomar requerido como constructor para que podamos traer en nuestra postulación. Sí. Entonces también necesitamos una T privada, final MPa UT, map UT. Tu Mapa T. Si olvidaste lo Maput así fue como hicimos todas las conversiones Así que recuerda, así es como hicimos todas las conversiones. Genial. Map YouTuf off, vamos a implementar esta guía que falta, que es la dirección de búsqueda por entidad Yo sólo voy a copiar esto que va a necesitar. Va a ser público. Al parecer una lista porque aparente si existe, se supone que nos da una lista. Después dirigirse a DTL. Aparente devolvería directamente a la entidad. Entonces exponemos esto. ¿Esto es lo que pretendo hacer? Lo siento, esto debería ser devolver el opcional, se supone que es un opcional. Recuerde, utilizamos el Olstro ser opcional, dirección DTL. Genial. Tienes la cuerda. Tenemos esto, luego regresamos. Cuando regresemos, usted se dirige a aposti. Eso se define esto. Recuerda, ya implementamos esto para mí solicitando el aposte, luego pasando el ID de entidad, pasando el UID, pasando el UID, pasando el Esto se supone que es UUID UD. UID, entonces queremos mapearlo. Mapéelo a un pretorneado el opcional, luego el mapeador til, luego giramos el mapa para direccionar DTO y eso es Recuerda cuál es la dirección que toma la ITu. Toma la dirección de la base de datos y la mapea a la dirección DTU y todo realmente funciona muy bien Eso es todo lo que realmente tenemos aquí. Esto funciona. Entonces siguiente paso, implementemos también nuestro save all. Hacer un vacío público público, anular no va a ser devolver ninguna respuesta. Ahorra y esto no hace nada único, en realidad. Entonces esto lleva una lista de direcciones, ¿verdad? Entonces decir direcciones direcciones, luego cosas quejándose. Entonces vamos a darle las entradas Todo bien. Genial. Por lo que hacemos dirección posit guardar todo esto funciona directamente. Por último, entonces tenemos una dirección pública o el save the save. Después toma una dirección también y lleva wepstisaf. Ahora vamos a revisar todos nuestros métodos. Aquí necesitamos cablear como de costumbre, necesitamos cablear en el servicio de dirección servicio de dirección. Llámalo servicio de dirección. Esto va a estar bien ahora. Ya puedes ver, ahora todo está sonriendo. Esto es genial, y esto es genial, ahora todo está sonriendo. Para los departamentos, departamento también necesitaría esto, y esto ahora está asentado. Tenemos esto ordenado, tenemos este ordenado. Creo que básicamente tenemos todo lo que necesitamos. Tenemos todo lo que necesitamos, ¿verdad? Nos falta algo, solo mirándolo solo para estar seguros de que no nos perdimos nada. Todo bien. Vamos a necesitar un detalle más, ¿verdad? Necesitamos un detalle más porque si realmente estás revisando el repositorio, realidad estamos exponiendo el marco por ID de entidad. Creo que sería genial simplemente hacer eso ahora mismo para hacer eso ahora mismo que cuando luego implementemos algunos otros detalles, no tengamos que volver para empezar a agregarlo. Vamos a hacer buscados por entidad para retornar sobre las direcciones que en realidad son pertenecientes a esta entidad Simplemente entraré en el servicio de direcciones e implementaré rápidamente eso vamos a implementarlo rápidamente, entonces podemos concluir rápidamente este video. Vamos a mostrar esto aquí. Entonces la lista pública de direccionado, esto sería lo que vamos a llamar a esta dirección de hallazgo por ID de entidad. Se ID. Esto será tomar una cadena tt ID, que luego estaría regresando y direccionaría a psi t luego bien por ntTiD que ya está disponible para nosotros o pasando el entitID luego stream a través de stream through, ellos lo mapearán al DTO ellos lo mapearán El mapa el mapeador til referencia, luego mapa para ajustar DTO, luego a la Bien, entonces esto realmente lo establece. Ahora mismo, no tenemos nada rompiendo. Yo sólo voy a seguir adelante rápidamente voy a hacer módulo Bud. Eso solo debería mostrarnos si hay algo rompiendo. Se puede ver esto en realidad apostar el fondo. Cualquier cosa se está rompiendo, llegamos a ver podemos ver esta computadora con éxito. Eso lo leí, te veré en el siguiente video. 50. Prepararse para las pruebas: Oigan, chicos, genial tenerlos de vuelta. Sé que todos hemos estado esperando esta sección donde realmente vamos a probar esto, y eso es lo que vamos a estar haciendo en esta sección, ¿verdad? Y en realidad vamos a tener las cosas hechas. Bien, entonces para comenzar esto, podría decir que he hecho algunos cambios en nuestro Yamo compuesto Si realmente no sabes lo que hace Yamo compuesto, esto básicamente te ayuda a configurar tus propiedades o se conecta con la base de datos sin tener que especificar en tu aplicación o Yamo Esto compone automáticamente solo cosas bootrap. Yo para traer un contenedor para ti. En realidad es poner en marcha un contenedor Docker para ti automáticamente, y vas a ver eso, ¿verdad Uh si, y así es básicamente como funciona. Lo que hice es que acabo de cambiar el nombre de DB. Esto básicamente lo que viene con él. Sólo tienes cosas llamadas mi base de datos. Creo que estoy bien con una contraseña con el usuario. Entonces hay que exponer las macetas. Esto solo demuestra que esto es lo que realmente viene con él, pero al colocarlo de esta manera lo expones, entonces estoy persistiendo el volumen para que todo lo que desarrollemos en este curso en realidad no desaparezca. Entonces una vez que iniciamos un servidor tantas veces como sea posible, en realidad lo tienes ahí y tienes que colocar esto para decir, Oye, estoy persistiendo este volumen y este volumen es para este servicio Este volumen que en realidad estoy persistiendo aquí es para este servicio, así es como realmente trabajamos. Bien. Entonces ahora que esto se ha hecho, acabo de poner en marcha la aplicación. Señala, en realidad estamos usando esto como auto, esperamos que se creen todas nuestras entidades ya que estamos usando JPA, y estamos mostrando SQL en caso de que encontremos algún tipo de error para que podamos depurar fácilmente Todo bien. Con esa construcción hecha ya ya construimos ya hicimos la brújula móvil, así que todo está disponible. Cuando quiero decir, todo está disponible, eso es todo nuestro graph ques medida que convertimos en objetos Java, y eso ya está insertado en el proyecto, y es por eso que usamos. Con esto en su lugar, sigamos adelante y ejecutemos esto y veamos cómo se desarrolla. Bien, entonces esto se acerca. Voy a traer voy a sacar esto a colación para que podamos ver, bien, cómo funciona realmente. Así se puede ver que esto en realidad está tirando del contenedor y en el contenedor ya está creado, porque lo he tirado, demuestra que en realidad todo está jugando muy bien, ¿verdad? Porque lo saqué, todo es per amablemente. Ahora bien, ¿cuál es el error que estamos recibiendo? Entonces vamos a confirmar. Bien. Entonces dice que el costo de Graph Queer no existe. Esto no existe, lo cual está bien porque en realidad estoy usando el mismo esquema. Si estoy usando el mismo esquema, es esperar que estoy usando mismo esquema el mismo esquema para muchos proyectos. Estoy esperando que esto se haga realmente. Lo que voy a hacer es, solo voy a crear rápidamente el esquema, voy a crear un esquema. Entonces el curso demo no estoy preparando este elenco, tengo esto que es el demo de GraphQL, Así que probablemente pueda hacer eso en mi otra pantalla para crear rápidamente el esquema. Simplemente entraré y crearé rápidamente el esquema. Así que drena enseguida, creando la base de datos. Entonces estoy cortando base de datos en inters a schemer. Estoy creando base de datos, y esa será la tabla QL gráfica Todo bien. Yo estoy haciendo eso. Derecha. Volveré. Todo bien. Yo solo rápidamente possi video y lo arreglo. Yo creé la base de datos y se puede ver que esto ya se ha puesto en marcha y vemos todas nuestras tablas están siendo creadas y todo está entrando. Solo vamos a traer estoy usando Intelligent Ultimate, así puedo desde los mismos proyectos, simplemente traer rápidamente la base para que veas exactamente que esto realmente está funcionando. Ver que se ha sumado todo. Entonces estamos trayendo psques esas misiones, sí. Así que solo moteamos todos los detalles que estamos usando. Entonces esto es grafico QL grafico QL Cos yo solo lo llamaré Gráfica Q Cs Bien. Entonces mi nombre de usuario está en mi usuario, y mi contraseña es secreta, ¿verdad? Así que vamos a probar esto. Bien, entonces mira esto tuvo éxito. Entonces voy a persistir, pero voy a decir, Bien. Entonces eso en realidad traería esto a colación. Así que entremos y exploremos lo que tenemos aquí. Entonces podemos ver que tenemos las mesas, tenemos la dirección, tenemos la empresa, departamento, empleador ahora fuente, lo cual es realmente genial. Si lo miras, eso es básicamente lo que realmente creamos aquí. En realidad me corresponde a esto. Se trata de chicos muy buenos. Ahora lo que vamos a hacer es entonces entrar y luego comenzar a usar nuestros puntos finales para que las cosas comiencen Todo bien. Dicho esto, te veré en el siguiente video. 51. Prueba de mutación: Oigan, chicos, genial tenerlos de vuelta. De hecho lo he arreglado. De hecho he creado una base de datos, y esto ya está disponible, y de hecho he ejecutado el comando y puedes ver todas las tablas que he creado, con todos los índices que realmente plex ahí y todo está bien ahora. Todo bien. Entonces, estando hecho esto, creo que ahora podemos proceder a probar las cosas. Ahora aquí es donde vemos la belleza de GraphQL. Spring up cartero. Recuerda que la aplicación ya comenzó, así que ya está arriba. Quiero mostrarles algo muy peculiar. Una vez que hayas creado o diseñado la gráfica QL, podrías simplemente entrar y crear una gráfica QL Ahora, por favor, observen esto cuidadosamente, chicos. el momento en que empiezo a escribir la URL, es para comenzar una introspección, para poder leer toda la gráfica Qs que tenemos en nuestra aplicación, y eso es bastante impresionante Pero para la consulta y mutación, vemos todo cargado aquí. Probemos eso. HTTP, Host local. Anfitrión local de LeTP. Bien, esta es la URL. Alguien podría preguntarme, ¿de dónde viene este QR GAF? Ese es el valor por defecto. Ese es el valor por defecto. Si vas a la aplicación, el Yarmo y buscas GA QO, spring graph QL path, spring graph QL path El camino es slash GAFQO aquí. Slash GAFQL, ¿verdad? Entonces podrías cambiarlo para personalizarlo a lo que quieras. Ves que dice Pat al para exponer GAP QL solicita puntos HTPN, Entonces podrías elegir ser otra cosa, pero lo voy a dejar en el default porque me encanta usar la culpa para varias cosas, ¿verdad Así que solo podrías decidir cambiarlo y nada se rompería. Muy bien, así que apéguela a default, así que procedamos aquí. Anfitrión local, ya lo tengo. Entonces una vez que haga clic en esto, solo mire esta sección, chicos, verán que sucede una introspección, Entonces, una vez que haces esto, puedes ver, automáticamente obtiene todo lo que hemos creado hasta ahora Esto es increíble, chicos. Esto es bastante genial. Entonces ahora queremos crear en el orden de crear una empresa, empleado de departamento, podría simplemente enfocarnos en la que buscamos particularmente. Quiero crear una empresa. Verás, automáticamente nos da todo lo que necesitamos, cómo se supone que debe quedar. Entonces, si estás confundido sobre cómo va a quedar la estructura. Creo que este método realmente te ayudará a igualar rápidamente las cosas, ¿verdad? Voy a proporcionar el esquema y mostrarte cómo funciona, bien, luego seguir adelante. Ahora bien, considera que el ingreso de la empresa es exactamente lo que se nos espera Y si nos fijamos en nuestra empresa imputa por aquí, ¿no? Una empresa inputa escupió el nombre, número RC, jefe de su país tipo de negocio. Eso es exactamente lo que se espera que pase. Pero si ves esto, esto espera probablemente un formato Jason y empezar a pasar todos esos detalles uno tras otro. Esto se verá bonito, chicos. Esto no se verá bonito en absoluto. Entonces, ¿hay otra opción? Ah, sí, la hay, y la opción simplemente te requiere, podríamos pasar en una variable desde la parte superior y pasar la variable hacia abajo. Permítanme mostrarles a lo que me refiero, y esto realmente fluiría mejor. Bien, así que procedamos. De hecho, podría crear una variable aquí llamada No Company. Imprimí una nueva compañía. Entonces en la nueva compañía, me pasa el nombre, recuerda que necesitábamos un nombre, que llamaré compañía Z. Z, luego pasaré en número RC, que también forma parte de las entradas, y solo diré RC uno, dos, tres, cuatro, luego pasaré en la oficina central, que se toman como una cadena. La oficina central, que va a ser solo decir 119. Hay un lugar en las ligas que se llama sacar. Creo que sacaba solo déjalo como Sacar justo en el 19, vamos, esta entonces Isla Victoria Gas Isla Victoria. Isla Victoria, gas, luego el país País Nigeria. Entonces finalmente, tenemos el tipo de negocio. No estoy inventando a estos tipos, no lo estoy inventando. Es exactamente lo que tenemos aquí. Si lo miras, el nombre, número de vivienda, país de la oficina central son tipo de negocio. Voy a vender este tipo de negocio, qué tipo de negocio estamos viendo, que son las telecomunicaciones Esto entra aquí. Con esto hecho, entonces podrías pasar la variable aquí. Sólo tienes que seguir este paso. Al principio se vuelve confuso, pero en el momento en que miras cred company, cred department, entonces empieza a Haces esto y una vez que lo hayas hecho, entonces podemos pasar la variable con esto, el signo de dólar. Pasando variable el conjunto de dólares o cuál es el nombre de una empresa Vaiablenw Nueva empresa. Y una vez que pases esto , lo cual es genial, recuerda lo que estamos esperando lo que es Impute, esto ha sido autodtected Entonces cogeremos esto y lo pasaremos por aquí. ¿Lo voy a pasar aquí en vez del nulo? No sacar eso. Esto se ha ido. Bien. Bien. Así que tomen esto y solo digan esto nuevo ven N. Ahora bien, esto se ve muy limpio, chicos. Este aspecto muy limpio. Miembro alguien ya ha comenzado. Sólo vamos a darle. Vamos a darle un golpe y a ver si esto funciona, ¿no? Y vamos a darle. Fresco. Como puede ver, empresa Z. empresa con nombre Z empresa con nombre Z empresa, crear aparato exitoso llamado empresa Z, ¿verdad Crear con éxito, obtuvimos el UUID para la creación. Comprobemos la base de datos. ¿Fue así? Consulta. Fresco. Como puedes ver esto se ha creado con éxito, ¿verdad? Bien. Así que seguir adelante. ¿Podemos entonces ver una de las bellezas de la gráfica QL? Una de las bellezas de graph QL es que podríamos decidir la respuesta que queremos recibir Con esta t, voy a decir Z compañía dos. Vamos a darle algo diferente. Voy a dm este uno, dos, tres, cuatro, cinco, 121, dos, cinco, 123, cinco. Entonces voy a dejar la dirección solo dejo la dirección como 118, luego Nigeria telecoms De la misma manera, entonces voy a quitar este mensaje. Por favor, mira chicos, mira este patrón realmente lo golpeó. Cuando quite esto, o pueda comentarlo. Ya lo he comentado. Verás la respuesta que recibamos, así que vamos a consultar esto o vamos a darle. ¿Pueden ver, chicos? Nos da solo lo que necesitamos, y significa que no tienes que cargar tu sistema, tener que procesar los atributos que no necesitas y este es el poder de GraphQL, podrías elegir prácticamente lo que necesites en tu respuesta Imagina que tienes una respuesta anidada. Podrías simplemente decidir los siente que son importantes para ti, y eso es con lo que trabajas. Y esto es bastante impresionante, chicos. Esto en realidad sale de la caja con gráfica QL. Impresionante, chicos. Impresionante. Ahora hemos podido ver cómo dejar de compañía. Vamos a entrar y luego crear departamento y crear el empleado, y empiezas a ver cómo las cosas empiezan a perfilarse. Los veré chicos en el siguiente video. 52. Prueba de mutación 2: Oigan, chicos, así que ahora tenemos esto hecho, y esto ya está creado para nosotros. Hemos podido ver cómo acreditar a la compañía. Bien, entonces déjame seguir adelante y guardar esto. Sí. Voy a guardarlo voy a llamarlo GraphQL curs GraphQL curs Yo solo guarda esto. Impresionante. Impresionante. Entonces tenemos este GraphQL Entonces lo genial ahora es que luego podemos entrar y luego agregar algo más. Ahora que ya hemos hecho la compañía de creds, ¿podemos entonces proceder a luego pasar a creación del departamento? Todo bien. Antes de eso, quiero actualizar esto solo cambio para crear algo porque voy a compartir esto. Voy a compartir diferentes dos formas diferentes graficar en macetas QL y probar Hay una herramienta llamada Alta que también te da la misma sensación que cartero Si te sientes cómodo con ese genial si estás cómodo cartero genial lo que te sientas cómodo. Ya ves como todo está bien aquí. Para Cartero, para una, en realidad es que hace las cosas un poco más definitivas, en realidad podrías saber exactamente cómo colocar esto Aquí estás consiguiendo de todo. Juntos por un, en realidad sección desde entonces y te voy a mostrar Bien. Entonces verás algo parecido a esto, ¿verdad? Entonces esto es algo similar que ves una vez que lo importes en, te mostraré chicos cómo se ve. Todo bien. Entonces así es como nos vemos, pero me voy a apegar a Postman por ahora porque nos da exactamente la misma salida. Todo bien. Fresco. Entonces con esto hecho, creo que podemos pasar al siguiente, que es la creación del departamento. Bien, chicos, pasemos a la creación del departamento. Todo bien. Entonces ahora estamos a punto de crear los departamentos. Fresco. Entonces, lo que vamos a hacer, vamos a entrar de nuevo. Voy a seleccionar voy a seleccionar esto después de seleccionarlo. Yo lo seleccioné, luego vamos a crear departamentos. Creación de departamentos. De la misma manera, chicos, la misma manera que manejamos el primero, ustedes van a manejar el segundo, ¿verdad? Entonces lo que vamos a hacer, simplemente procedemos con el mismo método que usamos y pasamos en una variable y la variable será diferente esta vez alrededor. Estoy seguro de que la variable será diferente esta vez así que en realidad podrías tener esta sección fuera. Ahora bien. Ahora, cuando abrimos esto, cuando haces clic en Departamento, ves lo que pasa, se suma a ello. Una vez que entras y haces clic en Crear empleado, se agrega a ello, y esto se vuelve un poco confuso, se vuelve un poco confuso, por lo que quiero mostrarte cómo usar. No te voy a mostrar cómo usar OT podría decir que quieres separarlo, pero juntar todo es murmurar y sabiendo el hecho de que solo estás recogiendo esto, necesitas saber cómo separar las cosas Si eres un profesional en esto, realidad podrías armar todo y todo va a ver funcionar, yo elijo la sección que quieras. Entonces lo que voy a hacer, voy a cambiar a alterar. Quería mostrarles cómo funciona en Postman, y voy a cambiar para alterar y ver cómo hemos separado las cosas limpiamente. Bien, chicos, cambiemos a Altar. Entonces entraré y traeré ta algunos ta. Ahora bien, si miran esto críticamente, si miran esto críticamente, notarán algo, chicos. Ya he entrado y creo todos los detalles que necesitamos almacén preparar causa para que solo podamos ir paso a paso para ver cómo funciona. Si vuelves a Empresa, puedes ver Empresa tiene su sección on, Departamento tiene su sección, ¿verdad? Empleado tiene su propia sección. Pueden ver que segmenté esto, y esto se ve hermoso, chicos. Esto se ve hermoso. Entonces creo que vamos a estar usando esto en el futuro, así podríamos ver cómo se desarrolla realmente. Pero solo quería mostrarte que también podrías probar esto con cartero y todo funciona igual Solo elige el cliente con el que te sientes cómodo, ¿ok? Y entonces podrías seguir adelante y hacer las cosas. Ahora que realmente hemos podido entrar aquí, así que ya hemos creado algo antes, ahora hemos probado esa parte para ver si funciona y lo hizo. Entonces voy a seguir ya que ya tienes algunos de estos platillos poblados porque tenemos los detalles de la compañía y esto realmente corresponde a los insumos de la compañía. Yo sólo voy a seguir adelante y volver a crearlo. Si toca esto, voy a seguir adelante y crearlo de nuevo, ya veo. Eso es genial. Hay un error. Veré cuál es el error. Todo bien. Volviendo a la aplicación, puedes ver que el número LC no puede ser el mismo, el número RC no puede ser el mismo. Y eso es porque creé el primero usando post uno. Lo que voy a hacer en modo desarrollo, así que vamos a crear cosas para que podamos hacer que las cosas funcionen como esperábamos. Ahora que esto está hecho, entonces crearé la recreación, esto realmente traerá de nuevo la base de datos y solo podemos comenzar a disparar a todos los seres de solicitudes para que entren sin problemas. Entonces puedo enfocarme en explicar cómo se supone que debe ser la estructura. Cuando refresquemos esto, las cosas vuelven, ¿verdad? Para que veas que la compañía está vacía. Así que vamos a traer de vuelta el alquitrán. Entonces ahora, mirando a Altar, el mismo principio seguimos una vez que realmente añades esto luego trayendo los insumos de la compañía. Así es como se supone que realmente se ve el imput , ¿verdad Recuerda que es un nombre Como número, jefe de negocio de su país va a pasar esto como probablemente un par de veces para que pudieran pegarse. Ahora, sigamos adelante y creemos esto o enviemos una solicitud. Impresionante. Por lo que esto ha sido creado con éxito. Y mencioné que si realmente quieres hacerlo diferente, todo lo que necesitas hacer para no hacer algo diferente. Todo lo que necesitas hacer, probablemente podrías encomiar esto, encomiar esta parte y solo darte lo que necesitas Voy a probar esto con departamento. Ahora que hemos creado esto, esto correspondería porque el departamento ya tiene los conjuntos de variables, el departamento tiene que corresponder con el nombre de la empresa. Recuerda, está amarrada. Básicamente están atados entre sí. El nombre de la empresa tiene que estar atado y si miras a la empresa esto ya se proporciona, departamento ya proporcionado. De hecho, revisemos nuestro departamento para ver cómo se ve el insumo. Como puedes ver, te traeré no ta. Voy a tratar de minimizar esto. ¿Bien? Puede que esto no sea tan fácil, pero les voy a mostrar chicos. Bien, entonces voy a minimizar esto, luego traerlo a colación. Todo bien. Entonces, vamos a bajar esto. Bien, entonces chicos, mírenlo. Entonces se puede ver el nombre, ya se proporciona el nombre, los números de departamento proporcionados, el nombre de la empresa proporcionado, el número RC, la división, ¿verdad? Todo lo provisto, requiere de las entradas de dirección. Esta es la parte que es muy crítica. Requiere las entradas de dirección. Y si saben cómo se ven las entradas de dirección, chicos, si van a direcciones, ¿cómo se ¿Qué espera el ID de entidad? El ID de entidad aquí, recuerda para departamento es el número de departamento. Le expliqué que mientras en realidad miramos los videos anteriores que el número de departamento es el ID de entidad en la dirección, el ID de empleado para empleado es el ID de entidad y el ID de subcontratar es para el subcontratar Lo mismo que tenemos aquí. Ahora que hemos podido verificar esto, vamos a entrar y darle, porque hemos podido realmente lanzar cosas juntas que siempre que el ID de entidad de dirección esté vinculado a este número de departamento, y veamos si se desarrolla porque mostraremos que el número es correcto, el nombre de la compañía es correcto porque en realidad están vinculados a la empresa. Entonces una vez que golpea esto o algunos, puedes ver que esto se crea con éxito, ¿verdad? Con esto los veo chicos en el siguiente video, mientras miramos nuestra creación de empleado. Nos vemos en el siguiente video. 53. Prueba de mutación 3: Oigan, chicos, genial tenerlos de vuelta. Creamos la empresa, nosotros creamos el departamento, ya es hora de que crees al empleado. Entonces el empleado necesita pertenecer al departamento. Recuerda, tenemos este departamento realmente creado. Tenemos esto para recursos humanos, y la división es RRHH, y en realidad tenemos vamos a crear un empleado, ¿verdad? Entonces creación de empleado, traigo esto. Ahora, por favor quiero que sepan que esto es muy, muy crítico, ¿verdad? Lo genial de las entradas que usamos a para que no te confundas. Lo bueno de usar variables de entrada al usar Alter es que ya ves, anidé varias cosas aquí para todos los puntos finales que quiero golpear Cada uno de ellos tenía sus variables específicas. De hecho podrías definir todo juntos, y eso es lo que estoy haciendo aquí. Este nuevo empleado, puedes ver que coincide con esta variable, actualizar dirección, es coincidente actualizar dirección y actualizar empleado es emparejar actualización empleado. Una vez que lo golpees, buscará la variable y se perderá esta y escogerá solo lo que necesita. Esta es una muy buena manera de unir las cosas. Básicamente no tienes que seccionar las cosas hasta el final creándolas en diferentes archivos para poder tener esto hecho realmente. Ya lo he explicado. Estos son los detalles para el empleado. Recuerda si recuerdas por el número de departamento del empleador, porque en realidad encaja en el departamento que realmente estaban esperando. Para esto, voy a crear a estos chicos Pasante. Al parecer, puedes ser un GMD. Voy a crear como Intel y usar mi nombre, digo gfque.com y estos son los datos de pegar Este dato en realidad corresponde con lo que ya tenemos ahí. Nombre, sueldo de databgjinus, número de departamento de identificación de empleado, solo cruzan cheque Entonces, cuando entramos en el controlador del empleado, una vez que llegue a esto, se puede ver esto realmente corresponde nombre fecha un poco. Entonces tenemos la dirección, que es una lista. Tenga en cuenta a este tipo. Esta es una lista lista de entradas de direcciones. Por lo que espera la entrada de la dirección. Recuerda cuando estamos creando este servicio, estamos esperando porque en realidad juntamos todo. Si lo miras, las entradas donde entra la entrada, entra aquí, entonces realmente buscamos la dirección que viene y transmitimos a través de ella y pudimos guardarla Pensé que debería mostrárselos, así que vamos a entrar aquí y darle, ¿verdad? Entonces como pueden ver, estoy pasando en la dirección. Sólo estoy pasando una sola dirección. Básicamente podrías pasar en una lista y esto funcionaría. Podrías pasar en una lista y esto funcionaría. Con esto hecho, vamos crear esto porque esta sección está fuera, vamos a crear el empleado. Voy a aclarar esto para que no parezca que es lo mismo. Vamos a crear esto. Muy bien, empleado, bla, bla, con ICL Nombre 22 creado porque ese es el nombre que por favor Eskel diga Esto realmente se creó con éxito, y esto es chicos bastante increíbles. Esto es bastante impresionante. Hemos podido crear vamos a poder crear la empresa, el departamento, el empleado. Procedamos y actualicemos a este empleado. Para esta dirección de empleado, puedes ver tu dirección que colocamos ahí. La dirección es ésta. Tenemos esto. Coloco esta dirección para que solo pudiéramos validar Ahora, como validando ahora mismo porque no hemos implementado nuestra sección de consultas, ¿verdad? no hemos implementado nuestra sección de consultas, ¿verdad Entonces puedo ver que hemos creado esto y si revisas nuestra dirección, la dirección en realidad marca para el empleado empleado 4567, ya está creado en, y esto es bastante genial chicos Si realmente comparamos, entonces esto es lo que tenemos. Actualicemos esta dirección de empleado. En primer lugar, antes de que podamos continuar, la dirección del empleado, esta identificación debe ser la misma. El UID, recuerda que este es el UID del empleado. Voy a escoger al empleado UID. ¿Verdad? Empleado requiere ID de entidad de empleado, así que tienes que entrar para ver cuál es el ID de empleado y recogerlo. Entremos a la base de datos y veamos la identificación que se persistió aquí El empleado I ID de entidad es ENP 4567, y eso es exactamente lo que vamos a tener aquí, la ENP Ese es el ID de entidad que se agregó aquí. Bien. Impresionante. Puedes ver la dirección que tenemos antes y la voy a cambiar a todas estas enseguida. Esta U ID. ¿Es para el es para la identificación? ¿Es para la dirección o ahí para el empleado? Es para la dirección. No es para el empleado. ¿Cómo lo sé? Recuerda que es una lista que en realidad estamos pasando. Significa que tenemos un único ID de entidad mapearlo a dos diferentes dos direcciones diferentes. Es decir, si hay más de uno o si hay tres, la misma ID de entidad en realidad se mapearon a ella. Necesitamos definir qué UID, qué dirección queremos actualizar realmente Lo que voy a hacer, voy a entrar aquí por el empleado. Y voy a elegir el UID para el empleado y de hecho coloco esto aquí Ahora ya he actualizado estos detalles, solo vamos a golpearlo en C, actualicemos al empleado. Bien, dirección del empleado actualizada con éxito. Antes de ahora, la dirección del empleado era este piso derecho cuatro AB Street, y ahora se ha actualizado vamos a comprobarlo. Entonces, si voy a refrescar esto, muéstralo de cerca. Observe esto de cerca. Si voy a refrescar esto. Ya ves, esto se ha actualizado, ¿verdad? Esto ha sido actualizado. Oh, no. Puedes ver aquí hay un bicho. Hay un error en el código. Y el error se supone que haga una actualización, hice un guardado. Bien, así que vamos a averiguar nuestro bicho. Bien, entonces saltamos aquí. ¿Dónde está el dólar? Aquí es donde estamos actualizando la dirección del empleado. Aquí encontramos la dirección del empleado y se supone que debemos hacer esta validación? Verificamos. Entonces vino aquí. ¿Qué hiciste? Estamos mapeando estas entradas que vinieron de las partes, estamos mapeando una nueva dirección que se supone que debemos actualizar. Entonces veamos, ¿actualizamos UID? Oh, no, no actualizamos UID, porque no actualizamos el UID, esto falla Entonces vamos a hacer, vamos a hacer eso, vamos a hacer la dirección, luego conjuntos de puntos, DU ID. Trayendo las entradas, punto obtiene UID entonces básicamente va a actualizar esta cadena decir UID UUID de cadena, así que coloco esto en.T básicamente funcionaría Creo que esto realmente debería resolver el problema. Ahora, hay algo más, recuerden que solo estamos pasando estas entradas directamente. No estamos actualizando el UID, y esta es la guía que contiene UID, vamos a elegir esta interfaz de usuario y actualizarla aquí Entonces vamos a hacer yo voy a escoger las inclusiones, voy a hacer ese set. Es un método de código, esto debería funcionar. No escojas la dirección encontrada. Entonces consigue el UID, ¿verdad? Entonces coloca esto en, y esto básicamente lo hará. Entonces ves que esto está esperando una cadena, esto esperaba un UID y en realidad está obteniendo un UUID Entonces veamos la dirección aquí, ¿verdad? Entonces encuentras sets en absoluto. Entonces vamos a hacer, voy a confirmar que esto realmente funciona como debería colocando un punto de interrupción aquí y ver qué pasa aquí y ver que el UID se actualiza antes de que realmente lo pasemos Bien, entonces, chicos, vamos a probarlo. Entonces voy a reiniciar esto voy a reiniciar esto. Recuerda la meta. El objetivo es ver esta dirección. Este particular cambio de dirección. Este cambio en particular, quiere ver el cambio, quiere ver el cambio. ¿Por qué mantenemos esta misma identificación? Tenemos que mantener el mismo. De hecho podríamos quitar esto ahora mismo, quitarnos esto. Tomando esto, necesitamos ver este cambio. Me voy. En realidad empezamos esto. Empecé, una vez empezamos en el modo pantano Quiero comenzar en modo depuración y mientras se acerca esto, vamos a preparar las cosas. Vamos a empujar en los mismos caminos. Pero esta vez, este UID sigue siendo el mismo, recuerden, porque es el mismo en el que realmente nos estamos enfocando. Bien. Dicho eso y esto ya está arriba. Entremos y presentemos la solicitud. Voy a seguir adelante y hacer actualizaciones dirección del empleado. Ahora, solo para demostrárselos , también pueden quitarle esto. Recuerda, realmente no lo necesitamos. Así que en realidad podríamos elegir sólo los dos que necesitamos. Hagamos esto. Vamos a darle a esto. Bien, ahora golpeamos puntos de interrupción y veamos qué pasa aquí dentro Quiero estar seguro de que esta imput contiene la escritura. La entrada contiene la derecha, contiene la derecha, y ahora ésta ha cambiado del piso A B cuatro a la calle número cinco CD. Dicho esto, vamos a liberarlo. Después lo hemos lanzado, vamos a ver la dirección del empleado de GraphQL orbitada Sacamos el éxito y ahí es donde no podemos encontrar el éxito. Vamos a confirmar nuestra base de datos si todo funciona correctamente. Comprobemos la dirección. Y, eso es trabajar correctamente. Podremos arreglar el brote. Los veré chicos en el siguiente video. 54. Prueba de mutación 4: Oigan, chicos, genial tenerlos de vuelta. De hecho, he podido actualizar esto con éxito en la aplicación de Australia, seguro que funciona. Tenemos una mutación más que probar, chicos, y luego pasaremos a lo siguiente. Bien, entonces entraré aquí. El siguiente paso es que quiero actualizar los datos del empleado. Actualizando los detalles del empleado, recuerden, en realidad traje todo aquí, todas las variables. Ahora voy a ir por la última variable, que es este tipo, y necesitamos la identificación del empleado para hacerlo. Voy a entrar a la mesa y obtener la identificación del empleado, voy a obtener la identificación del empleado. La identificación del empleado es ENP 4567. Voy a conseguir la identificación del empleado, que es ésta. Entonces vamos a cambiar. Recuerda que el empleado es pasante. El empleado es pasante, digamos que la cantidad es 250002500054 Entonces voy a cambiarlo realmente a 300054 y la edad es de 36 años. ¿Cuál es la edad aquí? Confirmemos la edad. El H es ¿qué es el H H H H? Bien, la edad es de 34 años, voy a cambiarla a 36. Dicho esto, vamos a darle esta pieza binw y veamos qué pasa Ahora he estado cambiando las cosas. Esta vez, tomemos creo que nos quitamos el éxito, vamos a llevarnos UID Pero se necesita el UID. Entonces voy a hacer es quitarme estos dos bits, sólo para enfatizar de qué se trata la atención GAF a menos que la actualización Se puede ver el éxito y el mensaje no ocurrió. A menos que confirmes que ahora es manager, una vez que saltas, refresco esto, puedes ver que el borde ha cambiado a 36, cual es el rol ahora tu rol es ahora manager. Ahora esto es genial chicos. Ahora siendo capaz de estudiar realmente músicos para ver cómo funciona. ¿Así es como vas a proceder? No, no vas a proceder de esta manera. Ahora, solo quería mostrarles en un nivel bajo que podríamos crear las cosas paso a paso y funciona muy bien. ¿Cómo se supone que vamos a proceder a partir de aquí? Muy bien. En la siguiente sección, vamos a tomarnos un tiempo voy a boostrap todas las propiedades Bostrap en el sentido de que vamos a crear dinámicamente tres empresas diferentes y luego crear muchos departamentos y luego crear muchos empleados Lo vamos a hacer a través una biblioteca especial llamada difamación tartamudeante llamada Es una biblioteca falsificadora. Eso es un farsante. Entonces vas a usar la biblioteca falsificadora para poder fingir totalmente y obtener todo esto Esta es una manera de mostrarte cómo usar una biblioteca falsa para generar datos que realmente no existen, ¿verdad? Podría coincidir con alguien, ¿ verdad? Pero esa no es toda la idea. Solo quiero mostrarles que hay herramientas separadas por ahí que pueden usar para simplificar su proceso. Entonces vamos a estar haciendo eso en el siguiente video. 55. Prueba de mutación con Postman: Oigan, chicos, prometo que voy a estar compartiendo la colección de carteros Voy a estar compartiendo la colección Postman, pero sin embargo, necesito explicar algunos detalles aquí No quiero que nadie se confunda en cuanto a en caso de que quiera hacerse la prueba. En el momento en que inicias tu servidor, esto automáticamente introspectaría que obtienes ya está resuelto para ti, para crear empresa, también lo obtienes también resuelto Los separé para que en realidad pudieras usar ya sea Ota o usar al cartero Voy a proporcionar ambos enlaces. Entonces para crear empresa, se podía ver solo una. Entonces es bastante sencillo. Las variables son simplemente directas. Para departamentos es lo mismo, ¿verdad? Mi enfoque ahora es el empleado. Quiero mostrarte una manera que realmente podrías tener para que puedas ver, hice para la creación para la actualización y para la actualización detalles del empleado. La dirección de actualización, esa es la dirección del empleado y actualizar los detalles del empleado. Mientras que las variables también están todas seccionadas. Ahora bien, la pregunta que te harías es ¿cómo sabrás cuál enviar si estás aquí? La parte genial es que, si eres muy observador, verás que en el momento en que hagas clic en uno, el otro se vuelve grado Míralo. Hombre hago clic en esto a continuación este orden para llegar a ser mayor. Si hago clic en este set, así sabe cuál estás tratando de enviar en base al que resaltaste. ¿Bien? Entonces pensé que ese recuento mencionó esto porque es muy, muy importante. Todo bien. Entonces, incluso para los otros videos, puede que no vuelva a mostrar a Postman, ¿verdad? O aún podría mostrarlo más adelante en el video para mostrarte cómo pero voy a estar actualizando y enviando todo tanto para que puedas elegir te sientas cómodo en caso de que no quieras descargar Alter y en realidad tengas a Postman Pero tienes a Cartero, si tienes a Alter, solo tienes que seguir adelante y siéntete libre de usarlo Y lo mismo que seguí aquí, coloqué los nombres de las variables para que puedan ver los segmenté Un segmento que en realidad podrías colapsar si lo deseas, para que te enfoques. Si realmente estás en las partes, en realidad en esta parte, también podrías colapsar estas partes, es muy útil de usar. Podrías colapsar. Oye, solo me estoy concentrando en esto de aquí, así que solo te enfocarás en esto y eso funcionaría como debería Yo solo para que deba mostrar esto para ver cómo funciona Postman GAF Quel usando Voy a publicar este video también para que tengamos una buena idea. Entonces te veré en el siguiente video. 56. Entidades en Bootstrap parte 1: Oigan, chicos, genial tenerlos de vuelta. De hecho, hemos pasado por esta sección de nuestras pruebas de la mutación. Ahora, podemos ir por ahí creando todos los datos que necesitamos. Básicamente, no vamos a terminar esto seguro si lo intentas. Vamos a hacer, voy a importar la biblioteca de la biblioteca, vamos a poder crear un dato de prueba, probar en datos reales. Ahora la biblioteca que la utiliza se llama biblioteca Faker. Se llama la biblioteca Face, y eso es lo que vamos a traer es bastante fácil para ti. Se llama DataFaker data faker. Lo que voy a hacer, sólo voy a bajar aquí y sólo voy a presentarlo. Entonces dependencia, y me interesa el farsante de datos. Se llama Data Faker. Así que solo crea algunos datos falsos, ¿verdad? Creo que usemos los últimos 22, los dos. Así que solo lo traigo, y ese es el primer paso que tenemos que hacer, ¿verdad? Así que ahora habiendo hecho eso, como ya saben, esto básicamente debería tener un punto de entrada, entonces necesitamos entonces comenzar a usarlo. Entonces, solo es ideal conectarlo como una viga porque en realidad estás usando botas de resorte, ¿verdad? Por lo que tenemos que delegar todo al concurso del COI. De esta manera, todo es gestionado por el concurso del COI. Voy a seguir adelante y crear solo creo una clase llamada Project Config. Project Config, increíble. Simplemente voy a delegar esto como una configuración. Entonces solo traeré la falsificación de datos que va a ser una viga, y es muy fácil de usar, chicos. Muy fácil de usar. Si decides no usar público, yo solo diré Faker de cara, farsante, farsante, entonces nos volvemos nuevos farsantes, eso es todo lo que tenemos que hacer por aquí, ¿verdad? Eso es todo lo que tenemos que hacer. Básicamente lo hemos inyectado. No lo necesitamos público porque al parecer, no estamos llamando directamente a esta clase. Por lo que esto será gestionado por IOC y se creará una instancia singleton o una sola instancia para que la usemos en toda la aplicación. Todo bien. Entonces, a medida que ahora avanzamos creación, avancemos a crear los datos. Lo usaremos para este proyecto. Va a ser una codificación un poco guapa. Descargo de responsabilidad, chicos, vamos a estar escribiendo mucho código en esta sección para traer esto. Al parecer, esa es la manera de aprender. Escribimos mucho código y lo hacemos en un contexto específico para saber exactamente lo que estamos haciendo. Voy a seguir adelante y luego crear Voy a llamar a un paquete llamado poblar. Yo lo llamaré vamos a llamar a esta configuración Fest de todos. Llamemos a la configuración. Entonces llamaremos a esta tabla de Poblar. Llámalo como quieras. Poblar tabla. No usarían este escenario en producción, chicos. Es solo para pruebas. No quiero crear todos los datos que necesito. Bueno, alguien podría haber dicho, ¿por qué no creas todo dentro de pub un guión? Entonces, ¿por qué todo? Eso está bien. Eso va a funcionar con precisión. Realmente no tiene nada de malo. Solo les estoy mostrando una alternativa diferente en lugar de usar schema el schema y y estoy colocando el esquema SQL y data dot SQL aquí, y luego lo llenamos con datos Sólo quiero mostrarte un enfoque diferente. Si tienes una base de datos de prueba, solo quieres ser popular con tantos datos y parece que no puedes empezar a pensar de dónde obtener los datos. Hay varios sitios por ahí que podrías obtener pero esta es otra forma en que realmente podrías lograrlo. Ese es el único propósito de realmente pasar por estas rutas. Porque Suena bien tenemos diferentes medios de hacer realmente lo mismo, que veamos cuál es realmente mejor para cada escenario. Primera parada, voy a hacer de esto un componente. Al parecer, necesito un SLL para J porque hacemos algún login. Bien, eso es genial. Entonces al parecer voy a estar usando mi popular requerido Como constructor de Lumbarg Hemos estado haciendo mucho cableado, así que voy a necesitar el repositorio de la compañía. Hagámoslo definitivo, al parecer. Final. Repositorio de la empresa. También necesitaré repositorio de departamento, repositorio Scots Department Repositorio departamental. También voy a necesitar el repositorio de empleados. Poposición patronal. Si te estás preguntando cómo llegué si realmente hago clic en esto, cómo lo traigo es automáticamente, puedes duplicar presionando contro D en la Ventana Creo que es el Comando D en el MAC, así que solo se duplica, así que solo puedes verificar directamente ¿Bien? Ahora he estado necesitando subcontratar el repost subcontratado Entonces también voy a ser un repositorio finalmente abordado dirección post ajustar posit Estoy seguro como ustedes ya saben, ya hemos inyectado sobre bibliotecas FICA. Es justo traerlo, ¿de acuerdo? FACA. Así que trae a un falso farsante, ¿verdad? Entonces, si solo haces clic en esto, si no es definitivo o si solo compruebas dónde conectaste, revisas, y verías que va directamente a esta parte. Bien, donde solo lo agregamos. Así que demuéstralo está en el COI. Bien, genial. Así que hemos podido hacer esto. Ahora, lo siguiente que nos preguntamos es, ¿queremos que esto funcione cada vez? Al parecer no. Una vez que lo hayas cargado una vez que hayamos cargado los datos en la base de datos, no queremos que se ejecute cada vez. Entonces solo queremos ejecutarlo cuando lo necesitemos. Entonces como resultado, voy a agregar otra propiedad, ¿verdad? Voy a agregar otra propiedad. Hagamos esto aquí, ¿ verdad? Sólo lo tenemos. Llamémoslo placas pop. Placa P. Vamos a llamarlo mesa polit. poplit. Hagámoslo habilitar Habilitar. Activar mesa pop. Hagámoslo falso así que ahora. Cuando estés listo, conéctalo, lo haré realidad. Hagámoslo falso por ahora. Todo bien. Esto está hecho. Ahora bien, ¿cómo se asegura que una viga se cargue realmente en contexto basado en una propiedad? La pregunta otra vez, voy a repasarla otra vez, ¿cómo se asegura de que un bin se cargue en el contexto basado en una propiedad en particular? Que es lo que ahora vamos a inyectar aquí. Cuando tienes cualquier ben cualquiera de los componentes, servicio, repositure lo que sea que realmente tenga debajo de él, los Tomemos por ejemplo, auto entrando aquí. Eso tiene en componentes, al parecer para ser visto como una viga. Incluso si revisas nuestro servicio, verifiquemos nuestra capa de servicio. Nosotros comprobamos esto, se puede ver en los componentes. Entonces es por eso que se llama al escaneo de componentes, ¿verdad? En el escaneo de componentes porque lo mira para ver si tiene un componente dentro de él. Bien, entonces, ¿cómo asegura? ¿Cómo nos aseguramos de que esta viga muy por debajo de ese contexto, usamos una notación springer llamada condición en condicional en propiedad en condicional Condicional a la propiedad. Hay un condicional al ser. No estamos viendo eso ahora mismo, pero es una propiedad condicional. Lo que dice es si esta propiedad es verdadera o si esta propiedad realmente favorece a un particular o es igual a algo, entonces cargue. Si no lo iguala, no cargan. Y si definimos lo definimos como poblar, tabla, habilitar Ir aquí y solo decir, tráelo en el nombre. El nombre que queremos traer es poblar. Habilitar mesa. Ahora bien, ¿cuál queremos que sea el valor? Ya ves que también hay otro pedacito. Yo digo tener valor. Se podría determinar qué valor queremos que sea. Una cosa es tener la propiedad en tu aplicación, tus propiedades o Yarmo También es otra cosa para ti tener un valor. Se podría decir, si lo deja de esta manera, digamos, si esta propiedad existe, úsela. Si no existe, no pierdas lo grande. Ese es un caso, pero lo voy a hacer más fácil diciendo si existe y también tiene este valor y tiene un valor de verdad. Espero que sea claro chicos. También una cosa para mencionar, mira a, en realidad es una matriz, lo que significa que podrías tener múltiples propiedades. Todas las propiedades deben estar existentes para que funcione. Pero si quieres que sea un músculo dos o más claro, podrías usar uno y darle un valor específico. Dicho esto, te veré en el siguiente video. 57. Entidades en Bootstrap parte 2: Oigan, chicos, es bueno tenerlos de vuelta. Bien. Así que miramos en el último video, realidad creamos esta tabla de poblar, ¿verdad? Y usamos esto fue donde terminamos, donde agregamos esta propiedad que decide si se carga una viga o no, ¿verdad? Y eso es lo que realmente utilizamos. Y le expliqué que se trata de una matriz. Podrías simplemente hacer un clic de Control o un clic de Comando, y verías que es una matriz, así podrías tener varias partes, o simplemente podrías darle una específica y darle un valor particular. Para que puedas jugar con él, pero así es como voy a tenerlo así. Entonces vamos a verificarlo. Así que voy a implementar realmente corredor de línea de comandos porque quiero que se ejecute al inicio de la aplicación. Si estoy implementando Command line runner, al parecer, necesito proporcionar el método y el método es este. Lo que voy a hacer, voy a simplemente pasar una info aquí, registrar la información, y solo diré que solo hazlo muy raro para que podamos rastrear fácilmente en nuestros pulmones. Voy a poblar la tabla que se está activando, ¿verdad? Entonces solo ten esto. Entonces nos dice si realmente causa o golpea Bien, el siguiente paso es que tenemos que definir realmente lo que queremos hacer porque hay una serie de cosas que queremos hacer aquí. Entonces, escribamos un pseudo código para favorecer realmente lo que queremos hacer Entonces voy a decir número uno, vamos a crear tres compañía ficticia El ficticio. Eso es correcto. Ficticio. Voy a arreglar ida. El ficticio viene con tres tipo de negocio. Con tres tipo de negocio. Todo bien. Entonces ese es uno de los criterios para nosotros. Una empresa ficticia con tres tipos de negocio. Recuerda, tenemos un um llamado tipo de negocio, ¿verdad? Entonces eso es lo primero que queremos hacer. Entonces lo siguiente en lo que queremos enfocarnos es luego continuar diciendo, crear el antebrazo, el brazo anterior del departamento vinculado a los días de empresa y división Sólo digo que deberíamos tener varios departamentos. Ahora también tenemos otro um y el num realmente toma división, que es para departamentos, ¿verdad? Sólo estás diciendo que queremos que tenga una división de cuatro. Si revisas nuestra división num, si pudieras seguir entrando ahí, ¿cuántas tenemos? Comprobamos nuestros tipos, vamos a revisar nuestra división. Verás tenemos cuatro divisiones, creamos cuatro divisiones. No vamos a salir de alcance. Comprobamos nuestro tipo de negocio, nuestro tipo de negocio también es tres, así que no vamos a salir de alcance. H ahora tenemos esto, entonces podemos crear un dato masivo para los empleados. Crear 200 empleados. Esto es asp tus necesidades. Yo solo quiero tener muchos datos porque hacemos varios pedacitos de consulta algunos nuevos empleados con las cuatro filas Con cuatro reglas, derecha, con las cuatro filas que están disponibles cuatro filas están disponibles. Un amigo, tenemos cuatro filas. Tenemos un Num, derecho revisas el ums bajo empleado, y ves que tenemos una fila um y eso son cuatro unidades. Entonces obtenemos 40 subcontratados. 40 subcontratados. Al parecer, tiene tres deberes también, ¿no? Si confunden, chicos, podemos mirarlo. Nosotros tenemos el papel. Si nos fijamos en el papel, quiero decir. Bueno, tenemos cuatro papeles. Si nos fijamos en el deber, tenemos tres deberes. Solo estoy usando exactamente lo mismo que tenemos. Creo que ya está. Luego, por último, vincula cada uno de los empleados slash subcontratados a diferentes direcciones Tenemos que vincularlos. Necesitan tener domicilio, tan diferente. Direcciones. Bien. Creo que hemos podido cubrir lo básico. Sí. Bien, así que volvamos aquí Creo que debería ser una T, ¿verdad? Oh, genial. Ficticio Bien. Entonces esbirro no es real, ¿verdad? Porque no genero datos forca vas a ver como funciona, ¿de acuerdo? Así que hemos podido crear realmente los detalles básicos que necesitamos. Así que creo que podemos saltar de inmediato, ¿ verdad? Vamos a saltar a la derecha. Entonces antes que nada, vamos a crear el empleado ficticio, perdón, empresas con los tres tipos de negocio Y al parecer solo lo hacemos privado, privado, lo privado, luego lista de compañía ser una lista. Esta empresa derecha, Listado de empresas. Entonces lo llamaré genera. Empresas. Generar empresas. Bien. ¿Esto es qué? Fresco. Entonces, Bien. Podríamos hacer esto usando podríamos en realidad una transmisión, pero trato de hacerlo más abierto porque me he dado cuenta de que algunas personas no se sienten realmente cómodas con el stream. Entonces voy a usar un bucle de cuatro para que podamos ver cómo funciona. Pero podría hacer un desajuste. De hecho hago un mix match en el medio para que podamos tener una variedad de uno de los dos. Bien. Entonces voy a hacer cuatro. Recuerda, estamos apuntando a tres, ¿verdad? Tres. Entonces apuntando a tres, no a diez. Gracias auto complete aunque. Entonces tienes tres, entonces tenemos una empresa. Creamos un compy. Entonces establecemos el nombre. Uh, eh. Se puede ver que esta FACA se generó automáticamente de mí. Por lo que FACA ya tiene un concepto de empresa con mit. Entonces podrías hacer puntos FACA. Ves todo lo disponible, hay número de compañía, dirección, fecha, espacio, un montón de cosas. Sí, un montón de cosas que podrías conseguir, ¿verdad? Un montón de cosas. Entonces es por eso que uso la biblioteca FACA porque es simplemente simplemente increíble. Bien. Bien. Entonces, uh entonces queremos establecer el número RC, acompañando que establece el número RC. Soy particular en hacer que nuestro número RC comience con RC. Entonces, ¿queremos un número aleatorio? Sí. Vamos a usar un número aleatorio, pero esta vez, queremos especificar queremos que sea específico para solo cuatro. No quiero sacarlo de cuatro, limitémoslo a cuatro. Si haces un control P un comando P dentro de este, verás que toma un número de dígitos y queremos que sea estricto. Estricto significa que quieres que sea menor? ¿Quieres que algunos sean menores? Tal vez sea uno, dos o tres, o quieres que sean exactamente cuatro. Al parecer, quiero ser exactamente cuatro. Diré, sí, quiero ser cuatro y quiero ser muy estricto. Deberían ser exactamente cuatro. Con eso concluye ese pedacito. Entonces queremos establecer nuestra oficina central ¿verdad? Empresa Empresa que establece la oficina central, oficina central. Ahora, recuerden, miren la FACA. FACA también tiene un concepto de domicilio, ¿no? Entonces pasando dirección, dirección completa, dirección dirección completa porque no hicimos esto. No hicimos la empresa no vinculamos la empresa a la entidad de dirección. Solo quería pasar una sola capa de cadena, y esto funciona. Entonces el siguiente paso, Empresa punto conjunto país, no esto. Empresa sí establece país. Al parecer, la FECA también tiene un concepto de país. Yo solo usaría cualquier nombre de país. Entonces finalmente, nuestra empresa tipo de negocio sí establece el tipo de negocio. Al parecer vamos a hacer tipo de negocio. Ahora, porque sabemos que serán tres, así que vamos a elegirlo uno tras otro usando el índice. Tipo de negocio los valores que vamos a hacer tipo de negocio, los valores, deberías obtener todo el negocio disponible. Ya que nos da una matriz, esto nos da una matriz si la miras . Nos da una matriz. Entonces quieres pasar en I. Así que esto básicamente funciona. Entonces lo que estamos diciendo es escoger todo el tipo de negocio. Entonces, cuando esto sea cero, escoja cero. Uno es uno, elegimos uno, cuando esto es dos, elegimos dos. Al parecer, ya que es menos de tres, así que tenemos cero, uno, dos índices, y voy a elegir los que correspondan. Creo que en realidad hemos sido capaces de lograr esto. Entonces entonces podemos decir, dentro de esto después de que hayas hecho esto, justo después de que hayas hecho esto, haz una empresa que se agregue. Entonces una vez que hayas hecho eso, entonces podrás regresar. Se puede regresar. Empresas Empresa Repositorio punto save. Repositorio de la empresa punto SavO. Existe un concepto de Save way save all your entities, y ahora hemos podido hacer esto. Chicos. Te veré el siguiente video 58. Entidades en Bootstrap, parte 3: Oigan, chicos, es bueno tenerlos de vuelta. Todo bien. En el último video, realmente somos capaces de crear todo el código que necesitamos para generar realmente las entidades y cargarlo en nuestra tabla, llegar a ver ese trabajo. Todo bien. Básicamente quiero pasar por todo para asegurarme de que todo esté bien antes de que luego procedamos. Asegurémonos de que capturamos todos los detalles de la compañía. Voy a traer esto en partirlo a la derecha, y vamos a confirmar. Tenemos el nombre, número RC aquí. Tenemos la oficina central, tenemos el país, tenemos el tipo de negocio y eso físicamente funciona. Impresionante, increíble. Recuerda que el UID se generará automáticamente. Sí, para ser auto generado. Bien, así que esto hecho, pasemos al siguiente bit. Ahora, vamos a crear vamos a generar nuestro departamento. Va a seguir el mismo concepto y ser cualquier cosa diferente. Así corta departamento, gracias, auto completo. Entonces tenemos la lista de departamentos departamentales o algunos. Entonces recuerda, ¿a cuántos me refiero, departamento tenemos? Tenemos cuatro, que es cuatro. Hagámoslo un número. Cuatro M departamento porque hay cuatro divisiones. Entonces lo que vamos a hacer cada empresa, cada empresa tendría cuatro departamentos tendría el departamento que aquí señalamos, va a tener cuatro departamentos diferentes, los cuales tenemos aquí miramos estos bits. Mira estos pedacitos. Así que en realidad podrías seguir adelante. Así que cada uno de la empresa HRC tech servicio al cliente, cada uno de ellos. Entonces eso es lo que vamos a lograr aquí dentro. Así que sólo estamos siguiendo el código sudo, en realidad me colocaste, ¿de acuerdo? Vamos a proceder. Entonces vamos a tener Sí Ya que estás enlazando con las empresas, sí, en realidad deberíamos tener una lista debería tomar en una lista de empresas, ¿verdad? Entonces llámalo empresas guardadas. Todo bien. Guardar empresas. Recuerda que como mencioné, voy a estar usando four loop y stream, así que vamos a usar ambos juntos. Entonces para aquellos que no entiendo, podrías empezar a aprender de este aspecto en particular, ¿de acuerdo? Bien, así que procedamos. A continuación, vas a decir, vamos a decir todos los departamentos. Tenemos una lista de estos. ¿Bien? Tenemos una lista de departamentos aquí. Entonces, comencemos de esto. Déjame quedarme con este tipo. Déjame retener a este tipo, y veremos cómo va a funcionar en un rato. Vamos a decir empresas guardadas, punto stream. Al parecer, tenemos cuatro. Entonces tenemos tres. Tres empresas, luego punto MAP Vamos al Mapa Mapa cada una de ellas. El mapeo es un lugar donde quieres hacer alguna transformación o tal vez quieras hacer algún trabajo. También podrías tomar un Lander. Pero básicamente, es una función. Podrías escribir cualquier cosa que una función deba dentro de un mapa. Con base en la lista por la que realmente estás transmitiendo, tendrías cada compañía por cada compañía. Así que tenlo en mente, cada compañía, ¿verdad? Todo bien. Para ello, entonces van a tener para cada uno de ellos, vas a tener una lista de departamentos, lista de Recordar, cada empresa cuatro departamentos, cada empresa cuatro departamentos. Vamos a tener el concepto de para cada uno, vamos a tener estos departamentos vamos a decir cuatro departamentos al final del día. Esta parte aquí tenemos ahora cuatro diferentes. Esto va a ser cuatro, ¿verdad? Ahora podemos volver a crear nuestros departamentos. Ahora vamos a traer todos nuestros departamentos. Tenemos un nombre. Tienes nombre, ¿verdad? Pero esta vez, no podemos usar compañía porque empresa no tiene el concepto de departamento. Si lo miras, no tiene el concepto de departamento. No obstante, ¿cuál sería el nombre? El nombre de los departamentos. Recuerda, la división es diferente al nombre. Queremos hacer departamento, el departamento tenga un nombre, pero la división sería entonces ventas de fiesta, recursos humanos, y las otras cosas que en realidad proporcionamos. En FECA, tenemos lo que llamamos comercio. Departamento de puntos de comercio impresionante, impresionante. Eso lo tenemos. Entonces puedes tener departamentos. En cambio número de departamento, vamos a generar esto, esto va a ser una cadena, ¿verdad? Déjame obtener un valor. Vamos a ponerle una cuerda a esto. Lo vamos a hacer es que vamos a decir una cadena, el valor de, no, no quiero esto. Quiero que sea de cuatro dígitos. Diré Faker ese número aleatorio. Hagámoslo seis. Hagamos este seis. Vas a tener seis. Cada departamento representó el número presentado por seis dígitos. Eso funciona. Al siguiente, entonces voy a establecer el nombre de la compañía. Departamento Departamento que establece el nombre de la empresa. Recuerda, es solo la compañía la que recibe nombre porque en realidad estás transmitiendo a través de la compañía. Esta empresa es la que estamos trayendo. A continuación, voy a estudiar el número RC. Número RC, que establece el número RC. Va a ser compañía que fijó el número RC. Espero que lo sigas ya que puedes ver cómo estamos vinculando todo. Entonces finalmente, establecer departamento que establece división. Los mismos conceptos que en realidad implementamos esta misma cosa, luego establecemos división. División, los valores, entonces es una matriz en solo pasar el I, ¿verdad? Entonces esto solo mira a través porque son cuatro y tenemos nuestros datos. Entonces pueden decir departamentos. Entonces tenemos estos departamentos, lo estás agregando. Entonces para cada uno de ellos, nos cargaremos en este tipo, este departamento, luego podríamos regresar porque dentro del mapa debes regresar directamente. Entonces regresas. Entonces ahora hemos transformado la empresa en departamento, ¿no? Transformamos empresa en departamento. Entonces esta vez departamento de agonía, por lo que esta empresa ahora se cambia a departamento Así que tengámoslo en mente, chicos, ya que en realidad procedemos, ¿verdad? Entonces, estando hecho eso, vamos a tener un jefe de departamentos, ¿verdad? Ahora bien, si lo miraras críticamente, lo que básicamente creamos sería un departamento, un departamento de departamentos. Al parecer, es una lista. Cada tonificación, afinando una lista de departamento. Y como todos son departamentos, queremos poner a la misma mesa. Significa que una sola entrada, así podríamos usar un concepto de mapa plano, mapa plano, luego enumeramos este stream, luego solo pasarlo a creo que solo lo necesitamos como lista. Sólo tómalo como una lista. Lista de TLIST. Entonces déjame explicarte esto otra vez, ¿verdad? Bien, así que llamémoslo a todos departamentos. Bien, vamos a preguntarle qué hice aquí. Estoy seguro de que esto está claro, chicos. Solo estoy haciendo ping transcenando departamentos, luego estoy cargando todo en estos Ahora bien, lo que pasaría es que ahora tenemos una lista de departamento. Tienes cuatro departamentos diferentes. Recuerden, ahora tenemos un departamento de hombres. Ya que tenemos tres empresas, cuatro departamentos, al final del día, el departamento que regresamos en total es de 12 porque cuatro por cada empresa. Eso es lo que vamos a tener. No obstante, recuerden que estamos guardando todo base de datos y todos ellos siguen el mismo concepto, los mismos arreglos, el mismo campo, hay algo diferente. Ahora, estoy haciendo un piso Sp. I FlatMap está diciendo en lugar de tener realmente una lista de lista, dame una sola lista Una sola lista es solo un departamento y eso es lo que hemos hecho aquí. Departamento, este departamento en vez de tener lista de listas, estás trayendo todo a una sola lista. Si nos fijamos en la implementación de FlatMap, verá, devuelve un flujo que consiste en reemplazar un elemento del flujo Y si lo miras críticamente, dice, aplica la función veamos si trae ejemplo, tu operación de mapa plano tiene el efecto de aplicar una a muchas transformaciones. Estás trayendo muchos departamentos de departamento en un solo departamento. Ahora tenemos una sola lista de departamentos. Ahora hemos podido lograr esto, entonces ¿cómo procedemos? Vamos a proceder. 59. Entidades en Bootstrap, parte 4: Oigan, chicos, genial tenerlos de vuelta. Lo que hicimos en el último video, lo intentamos en la medida de lo posible. Ahora podemos obtener todo nuestro departamento y necesitamos guardarlo en una base de datos. Eso es lo que estamos a punto de hacer ahora. Queremos guardarlo en base de datos. No obstante, podríamos tener un problema, ¿verdad? Recuerde, estamos usando una biblioteca faker para generar números aleatorios Esta es la parte que podríamos tener problemas, ¿verdad? Porque en realidad estás generando un número aleatorio. Es posible. Podría generarse el mismo número. Necesito que se genere el mismo número, ¿qué pasaría? ¿Si podemos adivinarlo? En realidad tenemos un error, guárdalo en la base de datos. Es justo, ¿por qué no es esta biblioteca de farsante? En realidad colocas dentro de un tricad En caso de que ocurra un error, no impide que nuestros carteles llenen la tabla Si tenemos al menos tres mesas por compañía, tres departamentos por compañía, sigue estando bien. Así que danos los datos suficientes que necesitamos. Sólo digo que no debemos experimentar un escenario de fracaso. ¿Qué vamos a hacer en este caso? Déjame poner aquí una nota. Yo solo diré guardar uno por uno para atrapar errores. Recuerda que esto es ficticio. Se trata de datos ficticios, así que no lo haces en producción, pero puedes hacerlo en tu entorno de desarrollo de UNTL para crear Esto se puede hacer. Entonces sigamos adelante, hagamos una vuelta. Voy a usar un stream otra vez, todos los departamentos dot stream. Después mapa de puntos. Recuerda, quiero hacer otra transformación. Recuerda, ya que estoy usando todo el departamento, lo has adivinado. ¿Qué habrá aquí? Departamentos, estás escogiendo cada departamento. ¿Bien? Para cada departamento, entonces hagamos un TryCatch Intentas atrapar. Bien, vamos a llegar a la excepción genérica. Todo bien. Entonces para cada uno, vamos a decir regreso. Nos volvemos guardar. ¿Por qué no quieres que uses siete flush? A ver. La entidad de siete ras guarda ent y descarga los cambios inmediatamente Hasta que salvaremos no debe ser no. Gira a la entidad. Esto funciona. Esto funciona. Esto funciona. Esto es JPA Bueno, me vendría bien Save. Eso es interesante. Eso es interesante. Todo bien. Con esto aquí, solo podemos hacer un registro que sea info y decir, Departamento si falla, departamentos departamento campo. Guardar campo, ¿verdad? Diré que solo imprima el nombre que se. Ya que no estás haciendo otra cosa, ellos solo regresan no aquí más no regresan no. Ella nos da datos, no sabes. Ahora bien, porque si devuelve null, ¿estamos haciendo otra cosa? No estamos usando este concepto E en las últimas versiones de Java, si lo estás usando, podrías simplemente pasar ignorado. Usa Ignorar si no lo estás usando o simplemente estás pasando la partitura y eso funciona. Recuerden, nos dirigimos hacia este el filtro. Asegurémonos de que no se reciba ningún objeto nulo. Objetos, no nulos. Al parecer, no queremos ser nulos. Entonces porque una vez que guarda, devuélvanos los datos, pero cada uno de los datos que revisamos, guardamos, recuperamos datos, guardamos, recuperamos datos. Queremos estar seguros de que no es un objeto nulo en caso de error. Entonces si ese es el caso, no volvemos a la lista, y eso realmente funciona. ¿Bien? Seguro que eso es claro chicos, espero que volvamos a escribir. Entonces tenemos los otros departamentos aquí. Pasamos por cada uno de ellos uno por uno, enviándonos pasando por tu bucle de cuatro. Entonces dentro del mapa, solo guardamos. Vamos a quedarnos a ahorrar por ahora. Pegarse para ahorrar. No es trabajo al ras. Digamos la caja fuerte. Ponemos esto en y una vez que realmente podamos recuperar los datos, solo vemos, ¿verdad? Si ocurre un error, realmente capturamos la excepción y simplemente devolvemos null. Después mostramos entonces que para cada uno de los datos del filtro, no hay ningún objeto nulo que haya regresado y que luego nos devolvería nuestra lista. Pudido implementar realmente departamento. Tan impresionante. Bien. Tenemos algunos copili para ir. Todavía nos quedan unas tres o cuatro implementaciones por recorrer. Bien, solo tómalo paso a paso. En este video, intentemos ver si podemos terminar de implementar empleados. Vamos por el mismo camino. Empleado de lista privada. Interesante. Pero en esta ocasión, vas a estar consiguiendo departamentos. Departamento es todo lo que necesitamos departamentos, lo llamaré departamentos guardados. Entonces los departamentos, de la misma manera, tío, no hacen nada diferente. Nosotros solo vendemos departamento que acaba de transmitir a través, no hacer stream. Para cada arroyo. Después el mapa. Mapa, recuerden, supongo lo que tenemos aquí, vamos a tener departamentos, llamarlo profundidades para cada departamento. Entonces para cada departamento, entonces no conseguimos esto todavía, tenemos una lista de empleados que van a poner las cosas en. Lista de empleados lista de empleados, llámalo empleados, relisol Ahora, ¿vas a recordar qué dijiste aquí? Queremos 200 empleados. Aquí vamos a colocar 200. Vamos a tener 200. Bien. Entonces para los 200 empleados. Todo bien. Vamos a conseguir a cada empleado. Vamos a crear datos para cada empleado. Esto podría ser bastante gravoso. Voy a hacer una pausa en este video y volveré corriendo. Voy a hacer todo esto rápidamente. Todo bien. He entrado y en realidad he podido hacer esto. Rápidamente marqué vamos a recorrer rápidamente lo que hice para que en realidad no dediquemos tiempo codificándolo, pero puedes codificarlo a lo largo, Podrías simplemente pausar el video y simplemente codificar rápidamente lo que tengo aquí. Déjame explicarte rápidamente lo que hice aquí. En primer lugar, el nombre, poniendo en el nombre farsante concepto de nombre completo, genial. Fechas de nacimiento. Recuerda, estamos tomando una fecha de nacimiento como fechas. Estoy diciendo que miren las fechas entonces. Sí, y estoy diciendo 22 más cualquier cantidad dentro de uno a 2022 más cualquier cantidad, así que podríamos tener diferentes rangos como 32, 36, 22, en ese sentido, ¿verdad? ¿Bien? Fresco. Entonces podríamos tener varios rangos. Entonces el género, al parecer, tenemos que valorar para el género. Recuerden, tenemos un género, este varón, hembra, ¿verdad? Entonces podría ser masculino o femenino, ¿verdad? Nosotros no discriminamos. Bien. Entonces por aquí, entonces al mismo tiempo tenemos sueldo así sueldo, se quiere asegurar que el salario esté dentro de los 30,100 mil, 100 mil, 100 mil Eso es básicamente lo que estamos haciendo ahí. Estamos diciendo que queremos darle decimal, podría ser de 30 mil.54 99 mil.68. Eso es básicamente lo que está haciendo esto. Entonces H, al parecer, la fecha de nacimiento se corresponderá con H. Ahí es donde estoy recogiendo la tasa de bits y estoy mirándolo. Estoy consiguiendo la fecha de bith y la estoy restando del año en curso y eso nos dará la Sólo estoy escogiendo lo que tenemos aquí, así que debería corresponder. El número de teléfono. Tenemos un concepto de número de teléfono y el nombre de la empresa, al parecer, el departamento ya contiene nombres de empresas, estoy consiguiendo el nombre de la compañía. Sí, quiero que esté activo. Sí, quiero que esté activo. Entonces el ID de empleado, solo uso una identificación de farsante. Hay este número de identificación válido que te dará un número de cadena. El número de socio lo recogerá del departamento. Entonces el correo electrónico así es como obtienes correo electrónico, Faca Internet y correo electrónico, luego el papel Impresionante El rol tiene tres valores, solo pasa por y solo elige cualquier número 0-3 Recuerda, no puedo usar esto porque esto tiene 200 valores, así que no puedo hacer esto. Eso es que estoy escogiendo cualquier número 0-3 para que sea cero, uno y dos. En realidad tienen eso. Si lo miras, recuerda que tenemos tres. Creo que tenemos cuatro, está bien. Eso está bien. Ahora bien, si miras esto, estoy viendo, es posible pasemos por todo esto y no tengamos un GND Por eso hice empleado de configuración, o simplemente debería llamarlo configuración GND Vamos a llamarlo configuración GND. Configurar GND. Simplemente destaquen. Lo que estoy haciendo es en caso de que no tengamos un GMV, vamos a darle un solo GMB Al parecer debería haber un GMV, creo que el concepto es claro, agregamos el empleado Ahora que hemos podido lograr realmente eso es genial. Volvamos en el siguiente video para terminar esto de verdad. Nos vemos en el siguiente video. 60. Entidades en Bootstrap, parte 5: Oigan, chicos, genial tenerlos de vuelta. Bien, así que vamos a proceder a terminar de implementar al empleado. Debería haber terminado en el último video, pero siento que se estaba haciendo demasiado largo. Así que en realidad podríamos hacer esto, ¿verdad? Entonces, chicos, por favor tengan en cuenta que no necesariamente tienen que hacer esto. Podrías simplemente copiar todo este dis del repo y simplemente usarlo. Sólo debes entender lo que está haciendo. Esa es toda la idea. Entiende lo que es. Entonces me estoy tomando mi tiempo para explicar. Entonces solo puedes entender lo que está haciendo esto. Lo que está haciendo básicamente es solo querer iniciar nuestros datos en la tabla. Bien, así que esto estando hecho, el mismo concepto va a ser FlatMap, para llevar todo a partes individuales, entonces esta es la lista. Impresionante. Entonces esto funciona. Sí, voy a llamarlo todo empleados. Todos los empleados. Recuerda de la misma manera, también podríamos tener errores. Porque podríamos tener errores, para entonces voy a hacer lo mismo a todos los empleados. El arroyo, recuerden que no harán esto en producción, chicos. No vas a hacer esto en producción. Proceda todo el empleo para cada empleado, vamos a hacer Til catch. Prueba Atrapa a la persona excepción, luego solo emplea seguro. ¿Bien? Es obras. Esto funciona. Entonces de la misma manera también, estamos seguros de que no obtenemos el futuro, y estamos seguros de que no obtenemos el nulo, luego recurrimos a listas. Bien. Creo que me falta algo. Esto es quejarse por aquí. Veamos cuál es el error. Diciendo un filtro, objeto, no, no, tenemos los conceptos. Bien. Todo bien. Déjame terminar esto rápidamente. Queremos agregar algo aquí, queremos hacer una devolución. Sí, creo que somos nosotros sobre el regreso. Después guardar empleado. Tenemos empleado Positii salvando al empleado, consiguiendo si hay un error, déjeme verificar ¿Cuál es el problema aquí? Necesita una declaración de devolución. ¿Bien? Tenemos que agregar retorno, no. Eso funciona. Muy bien, siendo capaces de implementar esto ahora tenemos un generar empleados. ¿Bien? Así que recuerda el concepto que hiciste aquí. Este concepto, no se olviden de los chicos. Avanza. Sigamos adelante e implementemos la externalización Implementemos la externalización. De la misma manera, voy a publicar rápidamente este video, implementar rápidamente todo lo que tiene que ver con la externalización Volveré en este video, entonces podríamos proceder chicos, ¿verdad? Bien, chicos, en realidad voy a seguir adelante en realidad hacer esto. Entonces, por favor, creo que agregaron los comentarios aquí. Bien. Sí, hagamos esto. Quiero agregar un comentario en caso de que te olvides de por qué estamos haciendo esto, recuerda recuerda que en realidad podría generar error. Al menos queremos que la mayoría ahorre, a pesar de que algunos realmente generan errores basados en el hecho de que estamos teniendo en realidad algunos detalles que realmente corresponden con Remember no es falso. Entonces, la mayoría de ellos son valores aleatorios que en realidad podrían tirar adentro, y esto podría significar que si verifica, tenemos algún índice aquí que no debería coincidir realmente cuál podría, y esa es la razón por la cual. Como por ejemplo, el ID podría generar ID que es el mismo, ¿verdad? Y eso realmente caería. Entonces serían cortes aquí. Derecha. Lo mismo, vamos a comprobar esto a través de. Les mostraré que dividieron esto a la derecha, solo validen rápidamente. Tienes el nombre, fecha de nacimiento, tienes el género, salario, edad, nombre de compañía aficionado, activo, sociedad y deber, ¿de acuerdo? Impresionante. Impresionante. Entonces esto está hecho. Bien, voy a ser para implementar eso en realidad. Creo que lo último que necesitamos implementar es la dirección. Creo que quiero tomarme mi tiempo para implementar realmente esto. Así que adelante y di privado voidatedsGenerar Entonces vamos a pasar en una lista de departamentos y ves razón por la que en los bits guardar departamentos aquí. Entonces también queremos pasar en una lista sugerida de empleado. Entonces salvar a los empleados. Después, por último, una lista de subcontratados Después guarda Asut. ¿Bien? Así que solo trae esto aquí abajo. S, Guardar subcontratados. Bien, ¿verdad? Porque cada uno de ellos contiene direcciones. Así que tenga lista lista de direcciones, luego todas las direcciones y luego una para completar. Ahora, esto es lo que quiero. Así que lista de domicilio. Se. Si dirección, tienen todas las direcciones, la nueva availist. Todo bien. Bien, así que esto hecho, luego revisamos cada uno de ellos, luego hacemos el trabajo, ¿verdad? Entonces hay algunos detalles comunes vamos a ser ahorros pensamos en algunos detalles comunes. Y si miramos la dirección, todo esto será común. Cada uno de ellos tenemos todos estos detalles ID de entidad, calle, ciudad, estado código postal. Tenemos todos estos. Solo vamos a pasar y luego vamos a conseguir un objeto común para esto, un objeto común. Voy a entrar aquí y voy a decir privado, un vacío privado, luego detalles de dirección comunes. Otras personas listas de domicilio, todas las direcciones. Todas las direcciones, luego dirección. Quizás te estés preguntando. ¿Por qué estoy haciendo esto? ¿Por qué tenemos todas las direcciones? Porque por cada dirección estarás guardando en dirección. Entonces cada una de las direcciones o de paso, me puse a guardar en la dirección. Entonces esa es la razón por la que. Y vas a ver como paga tal vez. Así que elige la dirección de las calles establecidas, las calles establecidas. Entonces las calles, esa será la dirección completa del farsante. Creo que quiero hacer calles. Quiero hacer dirección que calles debería ser dirección de calle Esto funciona. Después ciudad, dirección para establecer Ciudad, luego estados. Esto funciona. Después código postal, dirección que establece código postal. El código postal es un int, piensa en ello, vamos a crear código postal. Ahora, el código postal sería potencialmente vamos a revisar nuestra FICA Veamos qué nos da la FICA. FICA, FICA dirección punto código postal. Como puedes ver, esto es una cadena. Esto es una cadena. Vamos a hacer, vamos a asegurarnos de que sean dígitos. Vamos a asegurar sus dígitos físicamente. Simplemente podemos implementar rápidamente. No quiero implementar demasiadas bibliotecas porque sé que biblioteca común en realidad tiene sus dígitos, verificar si una cadena es en realidad dígitos. Voy a hacer eso rápidamente por aquí. Voy a hacer un bullion privado Bollan dígitos, sólo voy a pasar en un valor de cadena Valor de cadena, y solo diga pruebe la excepción catch, luego simplemente devuelva false. Por aquí, solo diré entero, la cadena de pase de paso. Si pasó con éxito, al parecer es una cadena. Entonces eso es básicamente lo que voy a hacer. Por aquí, solo diré estos dígitos, luego le pasaré en esto al auto falso un código postal. Si esto es cierto, entonces puedo entonces hacer el entero para pasar extremos. Pase de punto entero. Pero si no es cierto, si no es cierto, vamos a generar entero Ron es número RO. J faca número de punto, al parecer, queremos tener un valor ahí El número entre diez para que sea seis valor w. hagamos 100,000. Sí. Tenemos 500,000. Creo que esto funciona, funciona. Digamos número 100000-500 mil porque va a ser seis valores uno, dos, tres, cuatro, cinco, Cualquier número entre esto, esto funciona. Un número entre esto y seguro que funciona. Creo que esto podría ser un error aquí. Creo que debería ser esto genera cuatro valores genera seis? Un número entre estos seis valores, entonces sí, creo que esto funciona. Todo bien. Todo bien. Tenemos este calibre que necesitamos, y luego podemos proceder. Bien. W esto hecho, entonces puedes decir todas las direcciones que dirijan. Se puede decir, bien, así que volvamos y dejemos el video y terminemos con esto. Todo bien para ti en el siguiente video 61. Entidades en Bootstrap, parte 6: Bien, sé que ustedes están eking de la misma manera que yo, vamos rápidamente adelante y terminemos esto. ¿Qué vamos a hacer? Vamos a decir para cada departamento va a hacer un realzado para la mirada. Los departamentos departamentales, guardar departamentos, quiero decir direccionar cada dirección, solo decir dirección, el ID de entidad establecido. Esta será la diferencia. Por eso no lo agregué aquí. Eso es básicamente por lo que no me metí aquí. Es solo decir dirección, el ID de entidad establecido. Este será el departamento que obtenga el número de departamento. Recuerda que el número de departamento será el NCID que acaban de cablear en este tipo Cable en este tipo. Simplemente voy a pasar todas las direcciones y esta dirección específica que se agregará a la lista. Ese es uno que estamos tomando en estos dos pedacitos. Después cuatro, vamos a hacer cuatro empleado. Entonces lo mismo, lo mismo. Impresionante. Entonces increíble. Me encantan los automplates. Bien. Esto funciona. Y por último, voy a fuente lo mismo. Entonces me vestiré bien. Sí. Sí. Esto lo tenemos hecho. Todo esto en realidad está ambientado. Si ves este es el detalle común habría repetido muchas veces, pero solo lo abstrajo así que en realidad podría hacer esto y esto funciona Esto haciéndose, recuerden, también podría ocurrir un error porque también podría ocurrir un error, también vamos a manejarlo uno por uno. Por los detalles que en realidad estableces aquí porque por qué no es fac responsable No espero que lo haga, o podría ser. Sólo tienes todas las direcciones. No, no voy a agregar todo todas las direcciones, punto cuatro cada una. Pero para cada uno, al parecer justo cuando necesitamos y solo vamos en TryCatch, TryCatch, no dirección C. Entonces hay un error. Atrapa eso solo registra”. s log dot info en la dirección C. Guardar campo. Entonces simplemente sacan un ID de entidad, puntos de dirección obtienen ID de entidad, ¿verdad? Entonces creo que esto concluye todo lo que tenemos que hacer, ¿verdad? Esto concluye todo lo que tenemos que hacer, chicos. Así que adelante para implementar realmente, así que luego vamos a conectarlo. Vamos a cablear todo , así que tenemos que primero nada implementar luego conectémoslo . Entonces, ¿cómo lo cableas? Primero de listado de empresa Listado de empresas guardadas por la empresa. No esta S empresas sí genera empresas. Esto es correcto. Entonces tenemos esta la lista de departamentos, departamentos, guardar departamentos, departamentos. Entonces generamos departamentos que toma en lista de empresas, ¿verdad, que lleva en empresas guardadas, verdad? Eso es correcto. Entonces tenemos lista de empleados. Impresionante. Esto se ha hecho por nosotros. Bien, gracias por completar la lista de subcontratados. Subcontratados, ahorrados subcontratados. Ahorro de fuentes. Creo que esto funciona. Digamos que genera yo solo paso recuerda que estamos pasando departamento también chicos, es departamento estás pasando en departamentos guardados. Eso funciona. Por último, genera dirección, genera dirección que guarda departamentos toma en los empleados, ellos salvaron a los empleados. Y tomar en lo mismo que fuentes. Esto generaría automáticamente todo lo que necesitamos. Sigamos adelante e iniciemos la aplicación. primer lugar, en lugar de comenzar automáticamente, rápidamente quiero iniciar la base de datos. A ver spect lo que tenemos precio cuatro. Puedo ejecutar mi archivo de compost directamente, o simplemente podrías hacer Docker Compose up, cualquiera que sea la opción ya que tengo esta integración, poniéndome las cosas fáciles Déjame comprobar si empecé y puede tomar conexiones. Esto puede aceptar conexiones ahora. Iré a mi base de datos y solo revisaré mi departamento. Entonces estos son los datos iniciales que agregamos, todos los datos iniciales. Recuerda que solo tenemos un detalle, ¿verdad? Impresionante. Lo que voy a hacer, voy a poner en marcha tu aplicación ahora mismo y recordar nuestra propiedad que hemos agregado aquí, esta propiedad, dijimos que queremos que relaje tabla enable true Estamos viniendo aquí, poblar tabla, habilitar. Creo que debería estar habilitado para DPable. Creo que eso suena mejor. Mesa popular habilitada. Entonces solo agrega una D aquí. Bien. Entonces veamos esto en acción. Voy a seguir adelante y inicio de esta aplicación. Bien, así que lo inicié y veamos. Monitoreemos los registros y veamos que no hay errores. Se acerca. Yo en las clases, edificio. Bien, veamos. Empiezo automáticamente, simplemente saltamos aquí para ver a este corredor de línea de comandos realmente pateado. Cuidado con estos tipos. Cuidado con estas grasas puedes ver estos registros, lo que significa que pasaron con éxito. Vamos a verificar eso una vez que realmente haya surgido. Bien. Entonces estás verificando. Todo bien. Entonces, ¿podemos ver algo como grasas? A ver. ¿Estamos iniciando sesión en algo? Oh, yo no puedo ver nada, así que vamos a revisar la mesa. Aún no se ha registrado nada. Aún no se ha registrado nada. Bien, verifiquemos. Esto empezó. Entonces esto no trajo en nuestros datos. Yo no lo inicié, vamos a depurarlo, ver por qué no lo trajo. Voy a cerrar todo. Volvamos a poblar mesa, bajemos. Entonces estoy diciendo poblar tabla habilitada.Esto es correcto. Vamos a confirmar. Veamos qué perfil trajeron. Veamos qué perfil. ¿Qué perfil trajeron? Sin conjuntos de perfiles. Esa es la razón por la que ahora se establece el perfil. Recuerda, tenemos el concepto de local. Podrías seguir adelante y establecer el perfil, seguir adelante y establecer el perfil. Lo que voy a hacer para facilitarnos las cosas para facilitarnos las cosas. Voy a entrar dentro de estas partes. Bueno pongámoslo a continuación. Creo que es mejor en la parte superior. Perfiles de resorte activos. Entonces lo voy a simplemente en primavera subrayado perfil. Entonces hay un concepto en Intellij. Si quieres ejecutar un particular cuando manejas un particular una propiedad en particular, ¿verdad? Digamos para los lugareños por ejemplo aquí, podrías simplemente entrar aquí. Paremos este festival. Podrías simplemente entrar aquí, ir al medio ambiente. Vamos a Editar configuración, voy a repasarlo de nuevo. Edita la configuración, entonces puedes configurar tu perfil activo aquí, ¿verdad? Perfil activo. Ahora, yo si estableces perfil activo aquí, es para recogerlo y también escoger lo que sea que dije un resorte en el Sofle Entonces voy a hacer, voy a establecer una variable de entorno. Podría establecer una variable de entorno directamente. Dentro de tus ventanas en un MAC o en un Linux sí podrías exportar, porque tienes un kernel Linux, solo para exportar spring en el perfil de Sco. En esta parte, lo que voy a hacer es que hay una parte en la que podrías traer más opciones. De hecho, podrías seguir esta manera las variables de entorno. Verás, yo lo he habilitado y esto ya apareció. Entonces hago perfil de resorte igual a local. Lo que pasa es que cada vez que ejecuto esto, ya no necesito tener cuidado, solo va a escoger el perfil de primavera, automáticamente, que es local y esto funciona. la misma manera, esto tiene prioridad sobre lo que establezca dentro de su aplicación Lo establece dentro de IntelliJ, tiene prioridad sobre la configuración de su Haz lo que funcione para ti. Voy a repasarlo otra vez. Si realmente estás en Mac o Windows Mac o Linux, harás un perfil de subrayado de primavera de exportación Perfil, luego loco. Esto es lo que vas a hacer esto funcionará automáticamente. Tú eliges esto. Te sugiero que coloques dentro de tu bast RC Coloca dentro de tu punto B RC, luego haces una fuente. Eso básicamente va a funcionar. Estoy seguro los usuarios de Linux y Linux y Mac están muy familiarizados. Para que una configuración sea permanente, colocas dentro de tu BS RC y haces restos. Yo solo voy a seguir adelante y solo traerme a colación tengo una instancia de Ubuntu Ubuntu, que es mi WSL, solo te muestro como se ve Pero encajar esto. Podrías hacer un VI luego slash Bash BashC Bien. Creo que salgo atortamente. Así bash, C. ' s lo corta, corta. Después bash Bash. ¿Estoy deletreando esto mal? Déjame ver gatos pero verás poco bonito. Creo que estoy deletreando esto mal. Déjame comprobarlo otra vez. Bien. Creo que me equivoqué. Sí, en realidad he podido averiguarlo. Entonces se supone que son puntos. En realidad estaba usando un punto slash, se suponía que era un punto. Entonces si lo haces gatos, y, entonces es este comando, ¿verdad? Por lo que siempre es recomendable que coloques ins. Entonces ya ves cuando exportinas se vuelve permanente. Entonces no quieres exportaciones, perfil SpingErnasco, en algún lugar lo agregó dentro de este perfil de palmadas Nasco algún lugar lo agregó dentro , luego loco, Entonces esto es básicamente lo que vas a hacer. Así que por favor tenlo en cuenta para Windows y Linux. Perdón por los usuarios de Linux y Mac, pensé que debería mencionarlo. Con esto, te veré en el siguiente video. 62. Entidades en Bootstrap, parte 7: Oigan, chicos, genial tenerlos de vuelta. Muy bien, así que vamos a seguir adelante para agregar esta variable de entorno. Mostré cómo los usuarios de Linux y Mac también podrían agregar esto dentro del perfil, ¿verdad? Una cosa que no mencioné es esto, una vez que lo haces empezamos en IntelliJ porque IntelliJ en startup carga todas estas cosas en Entonces intactually iniciamos Intellij. O, simplemente vamos dentro Intellig y simplemente establecemos esta variable de entorno Si no estás seguro de cómo se produce, solo llegas a esta opción de modificación. Simplemente viendo solo habilitar la variable de entorno y colocarla y esto anulará o esto tendrá prioridad más allá de lo que tiene en su sistema Usuarios de Windows, también podrías hacer lo mismo o simplemente ir a tu ENV Podrías hacer tu variable de sistema de edición Podrías hacer esto entonces variable de entorno y agregar tus datos aquí, solo agrega tus datos aquí y las cosas realmente funcionarán correctamente. Yo solo quiero mostrar solo agrégalo aquí y reinicias tu Intelligen Con esto haciéndose a f el perfil, iniciemos de nuevo la aplicación. Bien. Empezándolo. Bien, para que veas que ha escogido perfil. El perfil ahora es local, ¿verdad? Un perfil ahora es local. A ver, ¿ escoge nuestros datos? ¿Escoge los datos que hemos establecido? Vamos a estar seguros. Lo recoge o no lo hace. Bien, así que creo que nos puede faltar algo. Creo que me puede estar perdiendo algo aquí. Primavera en el expediente Sco. Le mostraremos carga en el local. Comprobemos el local. Localmente así que en realidad lo agregamos poblar tabla habilitada, poblar tabla habilitada, que es la propiedad que agregamos, y tenemos habilitada la tabla de poblar Demuestro que es oh, miren el tema, chicos. No me he cambiado esto a verdad, pero esto tiene que ser cierto. Entonces sigamos adelante y volvamos a hacer esto. Estoy seguro que probablemente deberíamos avanzar ahora. ¿Bien? Así que elige Tas locales inicializado. ¿Bien? Impresionante. Como pueden ver, chicos, estamos cargando esto en. Entonces esto es una cosa de una sola vez. Sé que va a llevar tiempo. Es una cosa de una sola vez. Solo quería mostrarte cómo funcionarán las cosas y cómo podrías cargarlas manualmente, ¿verdad? Se podría hacer esto manualmente. Ahora, tal vez se esté preguntando ¿por qué estoy diciendo esto? La razón por la que estoy diciendo esto es porque establecí esta propiedad. ¿Recuerdas esta propiedad? Mostrar SQL verdadero, y eso es lo que estoy haciendo. Ya ves, esta es toda la dirección y se ha podido cargar todo se ha cargado en. Ahora que tenemos la seguridad de que todo está cargado, antes que nada verifiquemos. Veamos nuestra empresa Una compañía de muchos. Recuerda, antes creamos una compañía ficticia, que es Nigeria la agregada en Nigeria entonces Como pueden ver, estos son los tres que se agregaron, Malawi Togo y éste, y nos dio direcciones. Se puede ver. Impresionante. Impresionante. Con una biblioteca falsa, podemos hacer que las cosas realmente funcionen. Esto es genial, chicos. Esto es bastante genial. Vamos a revisar tu departamento. ¿Correcto? Entonces espero que tengas 12 departamentos y lo compruebes, ¿cuántos tenemos? Entonces si revisas, recuerda que podrías contar aquí, podrías contar. Tienes 12 menos el que escribimos al principio, que es el predeterminado, 12. No hubo error, increíble. Vamos a revisar. O empleado. Entonces para empleado, cuaresma cuadrada, sólo voy a correr a través. Y ¿cuántos tenemos en total? Tenemos 500. Entonces, si haces las cuentas, ¿es eso bastante exacto? Bien, fijamos 200 empleados, ¿verdad? 200 empleados para cuatro. Así se podía ver que en realidad ocurrieron errores, ¿verdad? Queremos 200 empleados por cada departamento. Entonces significa que se supone que hemos posado alrededor de 800, así que tenemos 300 de campo. Eso es lo que significa. Pero ya que en realidad, así que 500 es un buen número para que podamos realmente probar el ajuste. Impresionante, y vamos a ver nuestro subcontratado. Impresionante. ¿Cuántos sets tenemos? Recuerden, dijimos 40, 40 veces así que deberían ser 160, ¿ verdad? Vamos a estar seguros. ¿Cuántos tenemos? 40 sets o no estoy haciendo bien mis matemáticas. Vamos a confirmar por aquí. ¿W es la mesa de álamo? Entonces nos fijamos para tres deberes, 40 para tres deberes. Entonces, si revisas esto por subcontratados, dijiste 40, ¿verdad Para tres deberes. Entonces eso debería estar bien, MT elem aquí, ¿verdad Entonces tenemos 40 empleados por cada 40 empleados para cuatro departamentos, ¿verdad? O cuatro departamentos, eso debería ser 160 luego multiplicado por tres empresas, ¿verdad? Eso es 160 y eso será 160 veces 160 veces, eso es una vez tres que es 480. Recuerden, chicos, tenemos tres empresas, tres empresas. Cada uno cuenta con cuatro departamentos, cuatro departamentos. Así que eso hace que sea 12, ¿verdad? Después multiplicar cada cuatro departamentos, luego multiplicar por 40, 40 externalizar Si haces los cálculos, serán 480, lo que significa que no se produjo ningún error mientras en realidad estás trayendo subcontratar Esto realmente verifica todo lo que tenemos que hacer, ¿verdad? Hemos sido capaces de BoosterPar propiedades. Por favor chicos, recuerden regresar así que regresen aquí y pongan esto a caídas. Si no configuras esto en caídas, seguirás teniendo múltiples datos que simplemente sigue cargando una y otra vez a través del paso de la aplicación. Entonces con esto hecho, solo lo pararé y lo volvemos a ejecutar y ya ves que esto ya no va a correr, ¿verdad? Bien, arranque local. Sí, ya ves que esto empezó. Por lo que nuestra propiedad está funcionando con precisión, y esto ya se ha persistido. No va a cambiar. Siempre lo encuentras ahí, ¿ verdad? ¿Y por qué es esto? Recuerden, chicos, les mostré mientras en realidad estaba haciendo esto mientras estábamos montando la composta. Nosotros componemos el Yarmo. Realmente necesitas mapear el volumen a una ruta en tu sistema local. De esta manera se guardó en su sistema local. Tu sistema local está actuando como un directorio, como el servidor donde se almacenan los datos, por lo que no tienes ningún problema. Hemos podido arrancar nuestros datos, y ahora podemos pasar a cosas como consultar Hemos podido hacer mutación con poblados. Ahora que tenemos muchos datos, podemos consultar, ¿no? Creo que ya es hora de que sigamos adelante para implementar nuestras consultas. Los veré chicos en el siguiente video. 63. Servicio para consultas, parte 1: Oigan, todos. Genial tenerte de vuelta. Todo bien. Ahora que hemos podido implementar realmente la parte de mutación, hemos podido arrancar nuestros datos en la base de datos, y luego hemos podido ver realmente cómo funcionan las cosas desde el último video. Creo que ya es hora de que luego sigamos adelante para implementar nuestras consultas básicas. Todo bien. Entonces vamos a implementar las consultas. Entonces, para entrar directamente en ella, si nos fijamos en esta parte, que es la consulta, recuerden, en realidad la escribimos hace algún tiempo para poder realmente, uh, enumerar buscar toda la compañía buscar todos los departamentos por nombre de compañía Bien, ¿por qué no sigues adelante e implementas? En este video, nos concentraremos en crear el esqueleto para estas consultas Entonces los videos posteriores implementarían todo. Todo bien. ¿Podemos simplemente sumergirnos en él? Lo primero que voy a estar tocando es implementar el fetch all company fetch all company, yendo al controlador de la compañía Bien, así que solo lo emparejamos. Y como siempre, chicos, me encanta el mapeo de esquemas. Bueno, en este punto, recuerda que solo podrías usar el mapeo de consultas, pero prefiero el mapeo de esquemas, así que simplemente me apegaré a él. Tienes el typename que va a ir DGs constante. En esta ocasión, estás escogiendo consulta el tipo de consulta, para darme consulta. Entonces voy a ir con el campo. El campo, voy con dgs constante, luego buena consulta de punto Consulta, luego busca toda la compañía. Recuerdas el momento en que haces esto, vas a tener acceso a esta empresa de búsqueda Estamos tratando de no cortar las cosas y simplemente meternos en la constante que nos han proporcionado. Bien, eso es genial. Dame un poco de espacio para trabajar. Vamos a seguir adelante. Con esto para luego hacerlo público, recuerda que devuelve toda respuesta, toda respuesta de la empresa. Una respuesta de la empresa. Entonces lo tenemos y es solo busca tu compañía, esto es bueno Puedo ver que realmente está entrando, busca a nuestra compañía. Genial. Entonces vamos a arreglarlo. Al parecer, no estamos tomando ningún parámetro, no estamos esperando ningún parámetro. Dicho esto, entonces simplemente devolvemos el servicio de la empresa de servicios de la empresa, entonces se debería buscar toda la compañía, al parecer no implementarlo solo hacen de esto un Todo bien. Como puede ver esto ya coincidió si hago un clic de Control o clic de comando. Navega, ves que en realidad coincide con esto. Esto es bueno, chicos. Pasemos a los departamentos. Vamos a crear un esqueleto Hemos creado el esqueleto para esto, vamos a conseguir el esqueleto para departamentos, ¿verdad? Entonces estamos implementando buscar todos los departamentos por nombre de compañía Entonces, sigamos adelante e implementemos eso. De la misma manera, recuerda que prefiero usar el mapeo de esquemas. Esta vez, probablemente deberías concentrarte en usar el mapeo de consultas si eso es lo que quieres usar, lo cual también es bastante genial Voy a hacer mapeo de esquemas, mapeo esquemas, entonces en realidad tengo el nombre del tipo. Luego use la constante DGS constante DGS, luego tipo de consulta de puntos El tipo de consulta, que es esencialmente solo consulta, luego traigo la f t y escojo en la constante DGS, luego la consulta, luego elijo buscar todo el socio por nombre de empresa, impresionante luego traigo la f t y escojo en la constante DGS, luego la consulta, luego elijo buscar todo el socio por nombre de empresa, impresionante. Impresionante. Esto es increíble. Entonces tengo al público. En esta ocasión, necesito el nombre exacto, y eso es lo que voy a usar. Si voy a entrar aquí, compañía, y necesito el nombre de la compañía. Gracias. Auto completo. Que me consigas esto. Esto se completa. Ahora sólo voy a regresar. Apenas como un repaso para aquellos que quieren un repaso, es lo mismo que decir, encomiar Es lo mismo que decir mapeo de consultas, mapeo consultas, mapeo de consultas. Podría tener lo mismo en el mapeo de consultas. En query Mapping, entonces solo colocas el nombre ahí y ese es el nombre que buscarás. Ese es DGS este paquete de aquí, ¿verdad? Así que en realidad puedes usar nombre o valor, cualquiera que realmente prefieras nombre o valor Para que puedas ver esto también coincide, el que prefieras Sólo voy a dejar esto aquí de nuevo como referencia porque siempre es bueno tocar en realidad las otras opciones tienes para que básicamente puedas ver cómo está funcionando. Entonces voy a dejar esto aquí una completa esta opción o depción. Esto funciona. Todo bien. Entonces pasemos a la sección de empleados, que es la búsqueda de empleados en la búsqueda empleados por ID SIF. Todo bien. Así que vamos ahí. Bien, así que solo baja. A continuación, entonces tenga estos detalles. Hacer búsqueda de empleado en empleado por ID de personal. Comencemos con la búsqueda de empleados. Voy a tener un esquema Mappin que es mi favorito, un esquema Mappin luego tipo name, luego tengo la consulta DGS tipo query type tengo el fit y tengo la Entonces tengo los puntos, búsqueda de empleados, búsqueda de empleados, o ponerlo genial. Entonces público, recuerda esto en realidad devuelve una lista de personas. Tengan eso en mente, chicos, una lista de personas, ¿verdad? Una lista de personas. Confirmemos rápidamente, ¿verdad? Esto devuelve una lista. Recuerda esta lista. Una vez que tengas estos cubos cuadrados, significa una lista. Entonces una lista de personas. Entonces tienes lista de plats y déjame importar esto de Java YoutPlus. Todo bien. Bien, eso va. Lista de persona, luego solo tiene la palabra búsqueda de empleado. Búsqueda de empleados. Fresco. Todo bien. Y ¿cuál es el parámetro que tomamos? Recuerda, en realidad tomamos si la persona es subcontratada o no, solo tomamos argumentos, ¿verdad? Argumentos y argumentos, hemos subcontratado, coincide, luego cadena Cadena subcontratada lo siento, lingotes Se supone que es un bullianether subcontratado o no Bullion Subcontratados. ¿Bien? Se puede ver que coincide inmediatamente por este símbolo, ¿verdad? Fresco. Entonces tenemos Witton nulo ¿Bien? Entonces si revisas, Genial. Entonces, por último, vamos a implementar el último. Para el tipo de consulta para empleado, entonces tenemos lo mismo, mapeo de esquemas. Yo sólo voy a robar a estos tipos. Solo voy a robar esto, solo me voy a ajustar, vamos a hacer búsqueda de empleados por identificación de personal. Tenemos esto en. ¿Qué estás regresando ahora estás regresando persona, no una lista, solo persona. Vas a tener esto. Yo sólo voy a seguir adelante y quitar esto. Solo baja, dame un poco de espacio para trabajar. Voy a quitar la lista. Correcto, empleado por identificación de personal, ¿verdad? Después paso en la identificación del personal. Oh, muchas gracias. Y esto vino bastante bien. Gracias, autocompletar. Entonces tengo la identificación. Todo bien. Entonces vuelvo, no. Entonces, si tuvieras que navegar ves que esto fue traído apropiadamente. Bien, hemos sido capaces de hacer esto, y estos son chicos bastante geniales. En el siguiente video, sigamos adelante y comencemos a implementarlos uno por uno. Los veo chicos en el siguiente video. 64. Servicio para consultas, parte 2: Oye, genial tenerte de vuelta. Simplemente podemos seguir adelante y poner en práctica esto. Solo podemos implementar los esqueletos que hemos creado justo en el último video Entonces, vamos a sumergirnos en ello. Todo lo que vamos a hacer es solo, uh solo hacer este servicio de la empresa punto buscar toda la compañía Una empresa. Todo bien. Esto es todo lo que tenemos que hacer. mí me gusta codificar de esta manera porque estás partiendo de lo desconocido o de lo conocido a lo desconocido, ¿verdad? Con esto, probablemente podrías hacer clic en esta bombilla antes de usar Intelligent o cualquier IB para implementar realmente Entonces crearé esto en el método de servicio de la compañía. Yo solo hago esto bien y se puede ver que entra enseguida. Todo bien. De hecho, hemos podido tener esta redacción. Vamos a la derecha en Implementar. Entonces esto es bastante sencillo. Entonces todo lo que tenemos que hacer es guardar repositorio de la compañía, el final, ¿verdad? Comity la final, luego transmitimos a través de la cadena de flujo a través, luego el mapa del mapa Recuerda, básicamente vamos a devolver el detalle de la empresa. ¿Cómo lo sé? ¿Recuerdas si revisas la empresa? Todos ustedes empresa devuelve una lista de DTO, una lista de DTO, entonces tenemos el éxito, tenemos el mensaje Eso es exactamente lo que estoy tratando de implementar. Entonces mapeamos, después cómo mapeamos mapeamos mapeando la empresa a la empresa DTO Recordamos que tenemos un mapeador Util. Vamos adelante para hacer esto en videos anteriores para hacer las cosas más fáciles. Entonces podemos entonces mapear Empresa DTL. Eso lo hace sencillo para nosotros. Después, hazlo una lista. Consíguenos una lista. Entonces si estás usando un Windows, puedes hacer un Control OTs V o un comando TV, eso lograría esto para mí enseguida. Comando V, C, y lo pillo de inmediato. Entonces yo solo lo llamo DTOs de la compañía. Así empresa DTOs. Entonces ahora que tengo esto disponible, solo vuelvo, ¿no? Devolución o respuesta de la empresa, recuerde. Cuando realmente usamos el DGS, eso es un cogent, nos da el constructor. Cada una de la entidad o cada una de las clases crea realmente o el tipo, nos da un constructor. Así que solo podrías aprovechar eso, y eso es exactamente lo que estoy haciendo. Todo bien. Así que en realidad tienen un mensaje. Solo diré que todas las empresas recuperadas, recuperan con éxito y éxito. El éxito es cierto. Básicamente, esto en realidad se hace, luego regresamos a nuestras empresas, las empresas, que serían las DTOs de la compañía Esto se ha implementado con éxito Adelante, al departamento. Vamos a entrar en el departamento. Seguimos la misma tendencia. Nosotros solo decimos servicio de departamento, servicios de socios Fetch, pero solo decimos lo mismo aquí, buscar por nombre de compañía Obtener por el nombre de una empresa, luego paso en el nombre de la empresa Recuerda, la sombra tiene compañía podría simplemente decir nombre aquí, o no cambia La idea es que si estás usando, podrías decidir no pasar nada aquí, lo cual es genial. Si no lo haces, entonces tiene que hacerlo estricto llamando a esto conveniente, entonces esto seguirá coincidiendo. Esto es a lo que me refiero. Si realmente te quitas esto, esto todavía coincide porque infectará desde el nombre de la variable. Pero si estás colocando esto, entonces como sea que llames a esto no importa. Sólo lo dejaré como está, vamos a seguir adelante. Entraré también e implementaré esta guía. Yo lo llamaré. Yo sólo voy a implementar directamente. Fresco. Eso lo tenemos adentro, sigamos adelante e implementemos esto. Yo haré lo mismo. Lo llamaremos probablemente solo quítate esto antes que nada, me voy a quitar esto. Todo bien. Diré que el repositorio de patrones punteó bien porque ya lo hemos implementado, encuentra el patrón por nombre de compañía, recuerda cuando pusieron a disposición, nombre de la compañía, genial. Entonces streu stream a través, luego mapeamos el mapa, el mapa básicamente solo hace la transformación Poner un mapa a t luego convertir a un mapa DTOs a departamento DTO, Esto es genial Entonces escogemos. Nosotros elegimos. Ahora bien, ¿qué hace un pico? Una función pesica. API básicamente puede funcionar como un mapa. En realidad puedes realizar algunos cambios realmente mutantes, pero estás devolviendo exactamente lo mismo, ¿verdad Estás devolviendo exactamente lo mismo. Entonces te voy a dar una idea. Entonces lo que haría, cambiaría esto a un mapa, ¿verdad? Cambiemos esto a un mapa. Y diríamos, recuerden, somos un poco transformados en detalle de departamento. Por lo que aquí respetamos al departamento. Entonces para cada uno de los departamentos, queremos parte auto alguna opción, y todo lo que básicamente queremos hacer es solo buscar la dirección Eso es todo lo que queremos hacer aquí. Entonces voy a decir el servicio de dirección punto encontrar entidad de dirección. Encuentra dirección por ID de entidad recuerda, departamento en realidad tiene una dirección incrustada dentro de él y todos ellos son realmente dirección al empleado y usted es fuente identificado por el ID de la entidad. El ID de entidad para departamento es el número de departamento. Recuerda eso. Dices departamentos. Llamemos al Departamento DTO para mayor claridad, DTO del Departamento Entonces decimos Departamento DTO puntos obtiene número de departamento. Entonces todo lo que estoy haciendo dentro de este campo, así que tengo la dirección, lo llamaré dirección DTOs al parecer Me dirigí a DTU, luego solo estoy configurando la dirección del conjunto de puntos DTU del Departamento Entonces solo estoy configurando la dirección, establece la dirección. Establecer dirección. Establecer en dirección, acabo de pasar en la dirección DTU, ¿verdad? En realidad pasando eso en esto no debería ser quejarse. Bien, sí. Entonces esta es la lista. Al parecer, voy a conseguir solo uno, cierto, pero en realidad permitió que realmente buscara una lista Así que vamos a hacer que se ponga primero. Entonces primero es lo mismo que esto, ¿verdad? Entonces, si estás usando Java 21, aparentemente esto ha sido un poco, solo hazlo primero, ¿verdad? Entonces eso realmente entra, y lo haré para enumerar. La lista So. Después a la lista. De hecho, entro. Todo bien. Para enumerar. ¿Todo bien? Para enumerar. Todo bien. Después vuelvo por Departamento de DTO. Ahora bien, podría decir que esto ya está diciendo que aquí hay un problema. No es un problema. Sólo digo, ¿por qué no lo reemplazas, eliges, verdad? Reemplace usted elige. Pick es mejor, ¿verdad? Porque no estás cambiando. Mapa es que cambias debería decir de un objeto a otro, eso es totalmente diferente. Quieres transformar probablemente una clase en una cadena o probablemente un detalle a otro TO. El mapa es bueno para eso. Esto funciona. Esto no tiene ningún problema. Pero estoy diciendo ya que solo estás haciendo uso del mismo retorno virtual el mismo material ¿por qué no solo eliges? Entonces, si tuvieras que considerar que solo haciendo algún cambio menor, algún cambio dentro de la misma entidad, el mismo Pojio estás regresando. Así que sólo habla en ello. Entonces, si cambio esto para elegir, solo mira cómo hark a esta declaración de retorno. Todo bien. Así se puede ver. Porque estoy cambiando al final de la devolución así que esto devolverá el detalle al detalle del patrón, así podría simplemente devolver esto. Yo solo quiero compartirlo de verdad. Voy a usar el mismo comando control V, y esto me da esto realmente crea mi variable para mí. Yo sólo lo llamaré departamentos DTOs. Todo bien. Entonces con esto realmente lo consiguió, entonces puedo seguir adelante. Necesito verificar si el detalle del departamento está vacío porque es posible está vacío, y es posible se encuentra porque esa es una posibilidad. Entonces diré si DTO del departamento está vacío, si está vacío, entonces regresaré Recuerde que su departamento de regreso regresa supuestamente para devolver la respuesta del departamento. ¿Bien? Creo que es fuera Departamentos que deberían ser departamentos respuesta, ¿verdad? Sí. Entonces respuesta departamental. Respuesta del Departamento. Respuesta de los socios. Recuerda, nosotros siempre los socios siempre conseguimos el constructor. Entonces el socio responde, tienes el constructor, el build, esto realmente funciona. Entonces diga mensaje pasando el mensaje y el mensaje que leyó, ningún departamento encontró código qué nombre de compañía, el nombre de la compañía. Sí, nombre de la empresa. Todo bien. Esto funciona bien. Entonces el éxito, esto es falso. Todo bien. Entonces si se encuentra, si no está vacío, regresa el departamento regresará los departamentos, lo mismo. Quiero decir que el éxito sea verdad. Entonces el mensaje mensaje será solo puedo decir departamentos. No quiero que este tanque de difamación se complete, pero no es lo que quiero. Diré departamentos. Departamentos, en el nombre. Departamento bajo's esto funciona. Sí, sólo para posponirlo. Digamos nombre. Bien. Entonces estoy usando bien el nombre de la compañía. Nombre de la empresa recuperado, ¿verdad? Recuperar con éxito. Y esto básicamente funciona. Entonces pasaré entonces el departamento a departamentos y no a detalle de departamento. Básicamente, esto funciona. Estos videos lo consiguen muy largo, chicos. Te veré en el siguiente video. 65. Servicio para consultas, parte 2: Oye, genial tenerte de vuelta. Simplemente podemos seguir adelante y poner en práctica esto. Solo podemos implementar los esqueletos que hemos creado justo en el último video Entonces, vamos a sumergirnos en ello. Todo lo que vamos a hacer es solo, uh solo hacer este servicio de la empresa punto buscar toda la compañía Una empresa. Todo bien. Esto es todo lo que tenemos que hacer. mí me gusta codificar de esta manera porque estás partiendo de lo desconocido o de lo conocido a lo desconocido, ¿verdad? Con esto, probablemente podrías hacer clic en esta bombilla antes de usar Intelligent o cualquier IB para implementar realmente Entonces crearé esto en el método de servicio de la compañía. Yo solo hago esto bien y se puede ver que entra enseguida. Todo bien. De hecho, hemos podido tener esta redacción. Vamos a la derecha en Implementar. Entonces esto es bastante sencillo. Entonces todo lo que tenemos que hacer es guardar repositorio de la compañía, el final, ¿verdad? Comity la final, luego transmitimos a través de la cadena de flujo a través, luego el mapa del mapa Recuerda, básicamente vamos a devolver el detalle de la empresa. ¿Cómo lo sé? ¿Recuerdas si revisas la empresa? Todos ustedes empresa devuelve una lista de DTO, una lista de DTO, entonces tenemos el éxito, tenemos el mensaje Eso es exactamente lo que estoy tratando de implementar. Entonces mapeamos, después cómo mapeamos mapeamos mapeando la empresa a la empresa DTO Recordamos que tenemos un mapeador Util. Vamos adelante para hacer esto en videos anteriores para hacer las cosas más fáciles. Entonces podemos entonces mapear Empresa DTL. Eso lo hace sencillo para nosotros. Después, hazlo una lista. Consíguenos una lista. Entonces si estás usando un Windows, puedes hacer un Control OTs V o un comando TV, eso lograría esto para mí enseguida. Comando V, C, y lo pillo de inmediato. Entonces yo solo lo llamo DTOs de la compañía. Así empresa DTOs. Entonces ahora que tengo esto disponible, solo vuelvo, ¿no? Devolución o respuesta de la empresa, recuerde. Cuando realmente usamos el DGS, eso es un cogent, nos da el constructor. Cada una de la entidad o cada una de las clases crea realmente o el tipo, nos da un constructor. Así que solo podrías aprovechar eso, y eso es exactamente lo que estoy haciendo. Todo bien. Así que en realidad tienen un mensaje. Solo diré que todas las empresas recuperadas, recuperan con éxito y éxito. El éxito es cierto. Básicamente, esto en realidad se hace, luego regresamos a nuestras empresas, las empresas, que serían las DTOs de la compañía Esto se ha implementado con éxito Adelante, al departamento. Vamos a entrar en el departamento. Seguimos la misma tendencia. Nosotros solo decimos servicio de departamento, servicios de socios Fetch, pero solo decimos lo mismo aquí, buscar por nombre de compañía Obtener por el nombre de una empresa, luego paso en el nombre de la empresa Recuerda, la sombra tiene compañía podría simplemente decir nombre aquí, o no cambia La idea es que si estás usando, podrías decidir no pasar nada aquí, lo cual es genial. Si no lo haces, entonces tiene que hacerlo estricto llamando a esto conveniente, entonces esto seguirá coincidiendo. Esto es a lo que me refiero. Si realmente te quitas esto, esto todavía coincide porque infectará desde el nombre de la variable. Pero si estás colocando esto, entonces como sea que llames a esto no importa. Sólo lo dejaré como está, vamos a seguir adelante. Entraré también e implementaré esta guía. Yo lo llamaré. Yo sólo voy a implementar directamente. Fresco. Eso lo tenemos adentro, sigamos adelante e implementemos esto. Yo haré lo mismo. Lo llamaremos probablemente solo quítate esto antes que nada, me voy a quitar esto. Todo bien. Diré que el repositorio de patrones punteó bien porque ya lo hemos implementado, encuentra el patrón por nombre de compañía, recuerda cuando pusieron a disposición, nombre de la compañía, genial. Entonces streu stream a través, luego mapeamos el mapa, el mapa básicamente solo hace la transformación Poner un mapa a t luego convertir a un mapa DTOs a departamento DTO, Esto es genial Entonces escogemos. Nosotros elegimos. Ahora bien, ¿qué hace un pico? Una función pesica. API básicamente puede funcionar como un mapa. En realidad puedes realizar algunos cambios realmente mutantes, pero estás devolviendo exactamente lo mismo, ¿verdad Estás devolviendo exactamente lo mismo. Entonces te voy a dar una idea. Entonces lo que haría, cambiaría esto a un mapa, ¿verdad? Cambiemos esto a un mapa. Y diríamos, recuerden, somos un poco transformados en detalle de departamento. Por lo que aquí respetamos al departamento. Entonces para cada uno de los departamentos, queremos parte auto alguna opción, y todo lo que básicamente queremos hacer es solo buscar la dirección Eso es todo lo que queremos hacer aquí. Entonces voy a decir el servicio de dirección punto encontrar entidad de dirección. Encuentra dirección por ID de entidad recuerda, departamento en realidad tiene una dirección incrustada dentro de él y todos ellos son realmente dirección al empleado y usted es fuente identificado por el ID de la entidad. El ID de entidad para departamento es el número de departamento. Recuerda eso. Dices departamentos. Llamemos al Departamento DTO para mayor claridad, DTO del Departamento Entonces decimos Departamento DTO puntos obtiene número de departamento. Entonces todo lo que estoy haciendo dentro de este campo, así que tengo la dirección, lo llamaré dirección DTOs al parecer Me dirigí a DTU, luego solo estoy configurando la dirección del conjunto de puntos DTU del Departamento Entonces solo estoy configurando la dirección, establece la dirección. Establecer dirección. Establecer en dirección, acabo de pasar en la dirección DTU, ¿verdad? En realidad pasando eso en esto no debería ser quejarse. Bien, sí. Entonces esta es la lista. Al parecer, voy a conseguir solo uno, cierto, pero en realidad permitió que realmente buscara una lista Así que vamos a hacer que se ponga primero. Entonces primero es lo mismo que esto, ¿verdad? Entonces, si estás usando Java 21, aparentemente esto ha sido un poco, solo hazlo primero, ¿verdad? Entonces eso realmente entra, y lo haré para enumerar. La lista So. Después a la lista. De hecho, entro. Todo bien. Para enumerar. ¿Todo bien? Para enumerar. Todo bien. Después vuelvo por Departamento de DTO. Ahora bien, podría decir que esto ya está diciendo que aquí hay un problema. No es un problema. Sólo digo, ¿por qué no lo reemplazas, eliges, verdad? Reemplace usted elige. Pick es mejor, ¿verdad? Porque no estás cambiando. Mapa es que cambias debería decir de un objeto a otro, eso es totalmente diferente. Quieres transformar probablemente una clase en una cadena o probablemente un detalle a otro TO. El mapa es bueno para eso. Esto funciona. Esto no tiene ningún problema. Pero estoy diciendo ya que solo estás haciendo uso del mismo retorno virtual el mismo material ¿por qué no solo eliges? Entonces, si tuvieras que considerar que solo haciendo algún cambio menor, algún cambio dentro de la misma entidad, el mismo Pojio estás regresando. Así que sólo habla en ello. Entonces, si cambio esto para elegir, solo mira cómo hark a esta declaración de retorno. Todo bien. Así se puede ver. Porque estoy cambiando al final de la devolución así que esto devolverá el detalle al detalle del patrón, así podría simplemente devolver esto. Yo solo quiero compartirlo de verdad. Voy a usar el mismo comando control V, y esto me da esto realmente crea mi variable para mí. Yo sólo lo llamaré departamentos DTOs. Todo bien. Entonces con esto realmente lo consiguió, entonces puedo seguir adelante. Necesito verificar si el detalle del departamento está vacío porque es posible está vacío, y es posible se encuentra porque esa es una posibilidad. Entonces diré si DTO del departamento está vacío, si está vacío, entonces regresaré Recuerde que su departamento de regreso regresa supuestamente para devolver la respuesta del departamento. ¿Bien? Creo que es fuera Departamentos que deberían ser departamentos respuesta, ¿verdad? Sí. Entonces respuesta departamental. Respuesta del Departamento. Respuesta de los socios. Recuerda, nosotros siempre los socios siempre conseguimos el constructor. Entonces el socio responde, tienes el constructor, el build, esto realmente funciona. Entonces diga mensaje pasando el mensaje y el mensaje que leyó, ningún departamento encontró código qué nombre de compañía, el nombre de la compañía. Sí, nombre de la empresa. Todo bien. Esto funciona bien. Entonces el éxito, esto es falso. Todo bien. Entonces si se encuentra, si no está vacío, regresa el departamento regresará los departamentos, lo mismo. Quiero decir que el éxito sea verdad. Entonces el mensaje mensaje será solo puedo decir departamentos. No quiero que este tanque de difamación se complete, pero no es lo que quiero. Diré departamentos. Departamentos, en el nombre. Departamento bajo's esto funciona. Sí, sólo para posponirlo. Digamos nombre. Bien. Entonces estoy usando bien el nombre de la compañía. Nombre de la empresa recuperado, ¿verdad? Recuperar con éxito. Y esto básicamente funciona. Entonces pasaré entonces el departamento a departamentos y no a detalle de departamento. Básicamente, esto funciona. Estos videos lo consiguen muy largo, chicos. Te veré en el siguiente video. 66. Servicio para consultas, parte 3: Oye, ahí, gracias por volver conmigo. Todo bien. Entonces hemos podido implementar los departamentos, y esa es la consulta para los departamentos, ¿verdad? Entonces sigamos adelante e implementemos eso para el empleado, ¿verdad? Para estos dos que creamos antes. De hecho, sigamos adelante e implementemos esto. Bien. Entonces, básicamente, todo lo que tenemos que hacer es crear esto realmente. Entonces sigamos adelante y llamemos a esta compañía. Tenemos este empleado empleado externalizar el servicio, así que solo tráelo Servicio de Outsourcing de Empleados. Entonces llámenlo servicio, ¿verdad? Entonces puntean búsqueda de empleados, ¿verdad? Empleado. Tal. Sólo estoy pasando el valor ahí. Entonces con esto hecho, entonces podemos crear esto directamente. Sí, esto ha sido cableado para nosotros, ¿ verdad? Lo cual es bastante genial. Eso es bastante genial. Entonces podemos entrar y luego implementar. Los bits van a ser un poco largos, pero creo que podemos lograrlo juntos, ¿verdad? En primer lugar, quiero la lista de personas. Diré lista persona, esta razón fluye conmigo chicos. Lo mismo es no decir nuevo realista, genial. Ahora, voy a decir si se subcontrata, si la búsqueda de empleados es subcontratada, si dices que realmente quieres externalizar agente, entonces voy a decir, voy a fuente repositorio, El final, luego transmitir el arroyo, creo que me gusta colocar en la nueva línea. El arroyo entonces ese mapa de la misma manera y mapearlo, luego mapeó YouTube Miembro tenemos un Mapper YouTube, luego mapeamos a nuestro DTO fuente Voy a obtener el TO Recuerden, estamos buscando la fuente. Entonces lo mismo, vamos a elegir aquí también. Recuerda que podríamos usar un mapa, pero al mismo tiempo porque solo estamos cambiando los mismos elementos que en realidad nos darían un DTO externalizado Es recomendable que usemos una P y eso es exactamente lo que vamos a hacer. Voy a llamar a esto subcontratar el TO. Voy a obtener el TO. Después colocaré en el servicio de dirección. La idea es simplemente poner el servicio de dirección. Cinco domicilio por ID de entidad. Vas a colocar al subcontratar. Obtendrán nuestra identificación de origen, y eso es genial, chicos. Todo bien. Entonces ahora tenemos esto voy a llamar a esta dirección DTO Dirección DTOs. Entonces llamo a OscedTo Después voy a establecer la dirección, establecer la dirección pasando la dirección que utilice. Eso funciona bastante bien. Dirán lista a lista. ¿Tenemos eso? Impresionante. Entonces lo que tenemos que hacer entonces, entonces tenemos que agregarlo a esta lista de personas. De hecho voy a conseguir esto en una variable obtener esto en una variable. Voy a llamar a esto OutsourctList. Bien. Después agrégalo para decir lista de personas punto ADO. Ahora, recuerden, chicos, porque esto realmente implementa a la persona, ¿verdad? Por eso pude hacer esto. Por eso yo porque al parecer un personal subcontratante también es una persona, También es una persona, así que por eso pude hacer esto. De la misma manera un empleado también es una persona. Entonces voy a decir otra cosa. ¿Correcto? De lo contrario pasando por esta misma lógica, veo repositorio de empleados, el encontrar la cepa, luego mapa, mapa Es Kyoto completo, entonces esto básicamente funciona y veo servicio de dirección, servicio dirección, luego punto encontrar densidad. Al parecer esto se ha hecho. Bastante genial, ¿verdad? Tenemos esta llamada dirección DTOs. Después el empleado Dt fijó la dirección. Entonces esto realmente llega a la lista ListT. Fresco. Entonces de la misma manera recibo esto en una variable Todo bien. Ves este DTOs de empleado de calidad Neva. Entonces puedo enviarlo también puedo agregarlo a la lista actual, solo agrega, y esto realmente funciona bien. Entonces puedo decir regreso. Damos vuelta a la lista de personas, y esa compensación para nosotros. Básicamente, eso es todo. Al parecer, sabemos que esto no es rendimiento. Estoy seguro que ya te habrías dado cuenta porque podríamos tener más de cientos de discos estoy tonificando todo aquí Solo quería mostrarte cómo podríamos en realidad solo para ver una sensación de cómo se ve, antes de dejar entrar videos posteriores, hablar de paginación, ¿de acuerdo? Mongo cosas por venir, chicos. Bien, así que esto servirá, así que implementemos rápidamente el último bit, que es la búsqueda de empleados por ID de personal, búsqueda de empleados por ID de personal Yo hasta el controlador o personal del controlador, lo que hará que las cosas sean bastante fáciles puntos de servicio. Entonces al parecer aún no tenemos eso. Decir búsqueda de empleados por ID de personal, entonces estoy pasando el ID, podemos crear this.th se puede crear Tenemos esto adentro, entonces podemos seguir adelante para luego encontrar por la identificación del empleado. Dicen, en realidad estaban llamando al repositorio de empleados punto encontrar al empleado por ID, ellos pasando la identificación, ¿verdad? Al parecer, me das una opcional. Recuerden que implementamos a estos tipos. Entonces llamaré a este empleado opcional. Empleado opcional, ¿verdad? Bien genial. Recuerda que escribimos en una persona. Entonces bien podría ser un patrón presente. Así que antes que nada voy a crear un agente subcontratado aquí Esa es la variable, y ya ves por qué en un segundo. Voy a hacer que sea nulo. Entonces diré si esto está presente, ¿verdad? Yo esta presente o si esta esta vacia. Así que de cualquier manera yo esto está vacío, así que dependiendo de cómo se quiera escribir la lógica Si el empleado opcional está vacío, entonces trato de encontrar al subcontratar Trato de ver si en realidad estoy tratando de comparar solo si algo el empleado no está disponible, veamos que la identificación realmente coincide con empleado subcontratado externalizado Eso es básicamente lo que estamos haciendo aquí. Voy a llamar al repositorio de subcontratar para encontrar. Entonces en realidad voy a pasar la identificación aquí. Esto también obtiene una opcional que solo podría decir otra cosa verdadera. Si la persona no está realmente disponible, ahora estamos diciendo que un empleado no está disponible y si por alguna visión, el subcontratar tampoco está disponible, aparentemente ninguno está disponible, así que queremos intentarlo y quiero lanzar una excepción Diré, creo que esto está bien, empleado con identificación no filool Recuerda, vamos a hacer manejo de excepciones nido de letras en los otros videos y de hecho vamos a cambiar todas estas excepciones. Eso en realidad es bastante genial. Ahora he podido hacer esto. Voy a recibir esto dentro. Voy a recibir esto dentro este camino, lo recibí, entonces diré si el empleado opcional está presente, al parecer, la persona está presente, yo persona está presente, entonces puedo decir mapa en mapa de puntos. Verdadero empleado DTO porque necesitamos el detalle del empleado al final del día Entonces paso en el empleado opcional consigue que nos da eso. Entonces en realidad recibir eso está en una variable, así me sale el detalle del empleado. Entonces en realidad quiero la dirección. Recuerda, la dirección debe seguir. Entonces el empleado DTO sí establece la dirección, establece la dirección. Entonces cuando paso en la dirección solo digo el servicio de direcciones, encuentra por NTT ID Creo que esto funciona. Esto es simplemente, bastante sencillo, ¿verdad? Bien, entonces solo devuelvo el empleado DTO. Empleado DTO. Entonces también escoge la condición LS s. por lo que no está presente. Al parecer, estamos diciendo que el subcontratar está presente. Vamos a hacer lo mismo, ¿verdad? Mapa en YouTube mapa de puntos para subcontratar. Mapa a OutsouroSourc DTO. Esto básicamente será subcontratado. Esto debería ser subcontratado. Mapa autocompletado gracias, pero esto no es lo que necesito. El mapa así externalizado. Bien. Bien. Todo bien. Esto funciona. En realidad se ve esto en una variable, que es el subcontratar Simplemente realizaré la misma acción aquí y estableceré la dirección. Bien, bastante genial. Esto se ha hecho desde aquí automáticamente, ¿verdad? Entonces esto no es ID que quiero aquí. Quiero que los subcontratados obtengan la identificación subcontratada. Sí, así es como debería verse. Entonces solo devuelvo el subsourcitu. ¿Por qué puedo devolver esto? Porque si lo miras, esta también es una persona, empleado DTO es una persona, y ellos como persona Que pueda recibir esto como objeto persona o la interfaz, por así decirlo. Con esto entonces, hemos podido implementar realmente esto. Los veo chicos en el siguiente video. 67. Servicio para consultas, parte 4: Oigan, chicos, gracias por volver, ¿verdad? Muy bien, así que vamos a repasar por todo lo que hemos hecho hasta ahora Entonces implementamos al empleado de Fetch, la compañía Fetcho, Eso lo hicimos lo primero que hicimos en realidad. Todo lo que acabamos de hacer fue obtener todas las empresas y simplemente mapearla a los detalles respectivos y pudimos devolverla directamente. Entonces, para los departamentos, hicimos lo mismo. Buscamos todo departamento por compañía. Al parecer, cada departamento, algún departamento pertenece a una empresa específica. Y eso es lo que hicimos. En realidad solo buscamos en el departamento Eposity por parte de la compañía Y en realidad hicimos uso de JPA. Recuerda, en realidad ya teníamos esto en su lugar usando un JPapst que básicamente funciona y podemos conseguir que mapeamos todo al DTO del departamento de DTU Recuerda, cada departamento en realidad tiene una dirección, así que solo estamos buscando la dirección. Teníamos un concepto de entidad. Recuerde que tenía el concepto de ID de entidad y dirección donde en realidad podría ser el ID del departamento, el ID del empleado, son tan estilo. Así que somos capaces de conseguir eso. Entonces estamos regresando todo. Departamento fue encontrado, en realidad devuelve este mensaje, y si se encuentra, le devolvemos este mensaje. Para el empleado, seguimos adelante para implementar la búsqueda de empleados y el empleado establecido por ID de personal. Pero la búsqueda de empleados decían, ¿quieres a todo el empleado o quieres todo el subcontratar por este matón de la ley Si externalizar es cierto, obtenemos en realidad nuestra fuente es falsa, volvemos al empleado. ¿Cómo podemos lograrlo? Porque ambos extienden o implementan la persona de interfaz. Eso es lo que realmente hicimos, y en realidad a esto a la persona. Eso es lo que hay. Si es subcontratado, recuerde que está corriendo por el repositorio de subfuentes, mapeando todo al DTO subcontratado , luego configurando la dirección por aquí, luego devolviendo la lista y agregándola a este objeto persona, esta lista de personas que realmente creamos Lo mismo con esto para el empleado si la persona si lo que eres reina es para el empleado, haces lo mismo. Usted busca a través del procedimiento del empleado, mapeamos al DTO respectivo, establecemos la dirección según sea necesario, devolvemos la lista y la agregamos a la lista de personas y regresamos Básicamente, eso es lo que logramos entonces por esto solo diciendo, búsqueda de empleados por ID de personal. No sabemos si el empleado busca subcontratar o al propio empleado, así mismo o ella misma Lo que queremos hacer es solo una persona que realmente quiera hacer verificar si la identificación existe con el empleado, el repositorio de empleados, y esa carta es opcional. Decir el opcional, es el mismo significado, no encontramos nada, luego verificamos el repositorio de externalización Si no encontramos nada el reposito subcontratar mojó una excepción, al parecer esta persona no existe, sin embargo, si realmente encontramos un empleado, regresamos, de lo contrario devolvemos el Recuerda, solo estamos aquí solo agregando la dirección. Esto abarca básicamente todo lo que hemos hecho hasta ahora. Gracias chicos, y los veré en el siguiente video. 68. Servicio de prueba para consultas e introducción de nombres de tipo: Oigan, chicos, gracias por volver conmigo. Es genial tenerte de vuelta. Todo bien. Así que sigamos adelante para probar las cosas que realmente has hecho, ¿verdad? Entonces, déjame volver al IDE, ¿ verdad? Este es mi IDE. Si lo miras, somos capaces de implementar la empresa. Por cierto, he comprobado este int github. De hecho lo tenemos. De hecho, lo registré como un problema. Entonces tenemos un servicio para Quevy y ese es básicamente el, uh, el nombre de identificación o el ID del problema Después para departamento y empleados. Probemos todo lo que hemos hecho ahora. Vamos a probarlo para ver si todo funciona como planeamos. Bien, así que como ustedes saben, estoy usando DCA. Sólo estoy tratando de iniciar el proyecto inmediato. Iniciar el proyecto. Bien, así que eso básicamente pondrá en marcha que conecte nuestro motor Docker, y las cosas son en realidad bootstraps Nuestros datos aún permanecerán. Recuerden, chicos, pongan esto a caídas para que no vuelva a correr. Recuerda lo que hicimos al arrancar los datos para nuestras entidades Por favor, use datos para ECA, apague esto de lo contrario solo tiene duplicados o varios datos que podrían estar en conflicto Bien, entonces ahora que esto ha terminado, he confirmado dentro de Docker que Docker está arriba, Esto en realidad lo tenemos funcionando. Entonces, vamos a probar. Por lo que también me he adelantado. Dije que en realidad me mencionan esto otra vez. De hecho he seguido adelante así que estoy usando Alta, como hemos estado usando para probar, he ido por delante de crear la misma réplica, lo mismo que tenemos dentro de Postman, y de hecho he mostrado en videos anteriores cómo usar Postman, Que si en realidad tienes varias pruebas o varias mutaciones dentro de un solo archivo, si haces clic en uno, los otros se vuelven de calificación, como puedes ver, los demás se vuelven de calificación , podrías probar a cualquiera Ese es básicamente el costo. Ya terminé voy a compartir ambos o vamos a proceder en realidad procedamos usando un ti. Sólo voy a subir una llanta. Bien, genial. Ahora queremos ir a buscar nuestras empresas, ¿no? Ya eres consciente exactamente como se ve. Recuerde, estamos devolviendo todas las respuestas de la compañía que tienen el mensaje de éxito. Solo podrías comparar los detalles de la compañía. Los datos de la empresa contienen todo el campo, que es nombre UID, número de vivienda, jefe de su país y tipo de negocio Estoy comentando esto deliberadamente ya que eres consciente de que no veríamos a nadie que comentes ni a nadie que no quieras ver realmente, realidad puedes sacarlo de Acuarios Ese es el poder del graph quo para poder obtener solo lo que necesitas. Entonces voy a seguir adelante y recoger y buscar todas las empresas y ver qué nos devuelve esto Bien chicos, yo sólo voy a dirigir esto. Veamos qué surge. Bien, genial. Estamos teniendo un error, que dice, creo es hablar mal al buscar al socio por el nombre de la empresa Entonces esto es escoger el equivocado, así que voy a seguir adelante e intentar mandar esto de nuevo. Bien. Déjame ver dónde está el error déjame resolverlo. Pasando por ello, bien. Todo bien. Veo que esto es quejarse Yo digo que no tenemos ninguna consulta llamada buscar departamentos por nombre de empresa Vamos a revisar. Creo que mientras estaba creando el cliente he usado un nombre diferente al crear este. Esto es buscar todos los departamentos por nombre de compañía. Esto parece ser correcto. Veamos de nuevo cuál es el error. Dije departamento de buscar. Veo el tema. Estaba usando buscar todo el departamento. En tanto, lo que quería era buscar departamentos. Yo sólo voy a seguir adelante y ajustar en base a lo que tenemos que decir buscar todos los departamentos Entonces GafKio hace un escaneo de todas tus consultas, y es por eso que a pesar de que estás probando la primera, escanea para ver que todo lo que realmente estás haciendo es realmente correcto Si no es cor si uno está mal, se va a quejar. Entonces eso es básicamente lo que pasó. Así que voy a guardar esto y vamos a probar esto de nuevo. Todo bien. Entonces, como pueden ver, esto funciona con precisión. Por favor, si obtienes ese error, estás probando una cosa y otra cosa es el fracaso. Ahí es donde solo revisamos la ortografía. Compruebo la ortografía de exactamente de lo que se queja Si dices que está en desafiante no se encuentra, así que hay que revisar la ortografía Hemos sido capaces de hacer esto. Ahora vamos a buscar a todas las empresas. Tenemos compañía uno, que es Bova Adventures. El segundo es Sanford. Está creado para maski. Entonces en realidad tenemos el alcance Ether, entonces tenemos esto. Voy a buscar todos los departamentos usando nombres de empresas. Sólo hablemos una compañía. Así que sólo estoy repito este nombre de la compañía. ¿Correcto? Recuerdo que les mostré chicos en videos anteriores concepto de usar variables. Entonces estas variables voy a pasar aquí, ¿no? También mencioné que podrías tener múltiples consultas y definir todas las variables. Solo buscará la variable que coincida con la que estás usando. Ya que estoy usando nombre coincide con este. Para mi identificación de personal empleado, solo busco identificación, que coincida con esta. Por favor, tenga en cuenta eso. Estoy haciendo esto solo por concisión. De hecho podrías juntar todas las variables. Entonces no tienes que crear uno, eliminar, luego crear otro. Podrías armar todo y seguir trabajando. Yo sólo quiero mostrarlo. Con esto, asegurémonos de que encontremos todos los departamentos con este nombre. Este Sanford, LLC será lo que hay que estar pasando aquí, vamos a preguntar Bastante genial, bastante genial. Entonces tenemos un departamento que es RRHH. Esto es donde lo puedes encontrar. Entonces tenemos el servicio de atención al cliente. Entonces tenemos un departamento de tecnología y vamos a las ventas. Entonces esto está funcionando bastante bien, chicos. Esto es tan increíble. Esto es increíble. Bien. Entonces sí, así que esto está hecho. Ahora, también se podía ver prácticamente yo en realidad comentaba esto, cierto, porque este es un verdadero poder de gráfico aquí donde poder comentar cosas que no necesitas. Si vuelves a agregar esto, agreguemos esto diciendo Quiero que me den la ciudad como parte de tu dirección. Recuerda que falta aquí. Volvamos a consultar esto, como puedes ver, la ciudad aparece automáticamente. Este es el poder de los chicos de Graph Kyo. Es el poder Graph Kyo. Para el código postal también, podría decir, Oye, bien, no me muestres la calle. Muéstrame el código postal, ¿verdad? Entonces solo traes lo que necesitas, y sigamos adelante y hagamos esto Como puedes ver, aparece el código postal , y no tenemos la entidad. Entidad la calle la calle también ya. Adelante para ir a buscar todo o podría ir a buscar sólo una cosa específica que necesites En realidad solo lo mencioné. Para el empleado, verías que aquí hay algo extraño. ¿Qué es extraño? Ahora tenemos un concepto llamado typename ¿Qué es typename? No sé qué es typename. Ahora bien, el concepto de typename básicamente entra cuando regresas mientras estás devolviendo datos que podrían tener diferentes estructuras, por favor tenlo en cuenta, chicos, datos que podrían tener diferentes estructuras, y es por eso que me ves usando un concepto aquí Aquí donde pasas los puntos puntos puntos. Esto se define dentro de la gráfica Qio estándar. Cuando encuentres los puntos punto punto, diciendo, si el resultado voy a repetir esto muy gentilmente chicos para que podamos recogerlo. Si el resultado que estoy obteniendo es empleado, dame estos datos para el empleado empleado DTO, dame estos detalles Si el resultado que está regresando es para el subcontratar TO, dame sólo este diez ¿Correcto? Recuerden, creo que en realidad viene fuera del deber. Decido encomiar esto. Entonces voy a repasarlo otra vez. El tipename significa cuando tienes un objeto que podría ser de varias formas Escribes el typename y defines todas las formas que puedan entrar, ¿verdad Entonces significa que esta es una forma, esta es otra forma. Y ahora digo que si me estás dando DTO empleado, dame todos estos detalles O simplemente podrías encomiar esto para decir, dame solo departamento de identificación de empleado y esto Por el contrario, si lo es, te lo voy a obtener, dame estos detalles. Creo que entienden chicos. Typename, el concepto de typename entra cuando en realidad estás haciendo esto Sé que en realidad haces esto. Me aseguraré de nombrar realmente este nombre de tipo de encabezado para que sepa exactamente cómo entra esto realmente. Bien chicos, ya me está haciendo tanto tiempo. Solo vuelvo a escupir y ver cómo funciona. Ver en el siguiente video. 69. Servicio de pruebas para Query 2 e introducción de fragmentos: Oigan, chicos, es bueno tenerlos de vuelta. Así que pude explicar realmente el concepto de typename En el último video, solo voy a hacer rápidamente un repaso porque creo que cuando pones algo varias veces, se pone palo El concepto de typename es étnico una entidad de datos que tiene muchas formas, Obtienes concepto de typename y especificas la forma. Cierto, que está regresando. Esta es una forma que regresa y esta y aquella forma regresando. Entonces, si realmente tienes un concepto de probablemente genéricos, un Gtongenéricos genéricos, o los me gusta, o un comodín Se puede tener el concepto de nombre tipo en realidad sería toneladas, ¿verdad? Entonces se podría decir, para esta firma, dame estos detalles. Para éste, si no, si es por esta firma, dame estos detalles. Ahora, les voy a enseñar algo genial. Cuando entramos aquí y revisamos al empleado, y verificamos dentro de la persona, ¿verdad? Comprobas dentro de la persona. ¿Ves que tiene un concepto llamado propiedad typename? Esto es porque tenemos varios detalles o varios chicos implementándolo. Es por ello que tiene un concepto de tipening. Comprobemos al primer implementador, cual es el empleado DTO, Dices que este empleado DTO va a entrar. Estoy esperando que puedas pasar un typename y darme distintas formas Estoy seguro de que esto es bastante claro, chicos. Procedamos a probar esto. Así que cuando volvamos a alterar bien esperando ID personal ID. En realidad esperando una identificación del personal. Solo voy a entrar en la base de datos, solo escojo una identificación del personal, y luego procederemos. Voy a entrar empleado, escojamos la identificación del empleado. ID de empleado. ID de empleado, solo voy a elegir esta identificación de empleado, que está aquí. Sólo lo traeré aquí y solo lo reemplazaré. Bien, así que vamos a resolver esto. Bien, así que vamos a establecer a este empleado por identificación de personal. Todo bien. Bastante genial. Entonces como puedes ver, dice, Oye, el nombre del tipo, el tipo que coincide es empleado DTL. Eso es lo que dicen. Coincide con el empleado DT y realmente podemos ver estos detalles. Verás, Esto es chicos bastante geniales. Se trata de chicos bastante geniales. Obtenemos todos los detalles. Ahora recuerda, comenté el correo electrónico, y por eso no veo ningún correo aquí, ¿ verdad? Yo envío correo electrónico. Entonces, si regresas, trae el correo electrónico y ejecuta esto de nuevo, ejecuta esto de nuevo. Puedes ver, ahora tenemos el correo electrónico realmente agregado. Se trata de chicos bastante geniales. Probemos para subcontratar Probemos para subcontratar. Iré a la base de datos. De hecho voy a elegir el También TID subcontratar tD esto aquí, lo tenemos Solo voy a elegir uno al azar así que SID y solo reemplazaré esto aquí. Recuerda buscar barcos para buscar barco para ver si existe en embarcaciones. Voy a llamar a esto otra vez. Como puedes ver, y decir, Oye, el tipo al que realmente te refieres ahora está subcontratado y van a ver qué es lo que realmente me da los detalles Esto es bastante impresionante chicos. Esto es bastante impresionante. Todo bien. Con este ser, sigamos adelante y luego probemos el último bit, que es la búsqueda de empleados por ID de personal. No se preocupe, en realidad voy a actualizar la colección cartero, que es la búsqueda de empleados por identificación de personal Entonces para esta parte, hemos hecho por perdón, en realidad me refería a la búsqueda de empleados que realmente determina si somos polares o no. Así que aquí pasa lo mismo, chicos. Recuerda que también uso recuerdo que estoy devolviendo los objetos de la persona. Podríamos ser de tipo empleado DTU o de tipo, voy a sousitu Por eso tenemos esto aquí. Pero ahora te estarás preguntando, W es esto? ¿Qué traes aquí? Esto se ve extraño. Esto se ve extraño. Oigan, chicos, no se preocupe, no se preocupe. Esto es genial. Ahora bien, qué hermano en realidad traje esto aquí deliberadamente para mostrarles chicos que también hay un concepto cuando en realidad están tratando de consultar graph que, el concepto de fragmento, el concepto de fragmento. Ahora, podrías confiar fragmento a algo como cuando realmente estás haciendo un angular o realmente estás haciendo una reacción, lo que ellos llaman componentes, un componente que existe que puede ser que es reutilizable, o para el back end, dices que no te repitas. Tienes un código escrito, quieres volver a usarlo. Entonces creas una interfaz o realmente creas una propiedad o creas alguna lógica particular que quieras implementar. Eso es exactamente lo que estás haciendo aquí. Entonces lo que significa es en empleado DTO, recuerda empleado DTU, empleado DT tiene un concepto Así que regresen, chicos. Hagamos esto otra vez. Vamos a deletrear los campos comunes, ¿verdad? Creo que básicamente solo lo hago en la identificación. Vamos a cerrar todo esto. Vamos a sacar a colación persona veamos a los dos implementador. Este es el primer implementador. Este es el segundo implementador. Vamos a juntarlos uno al lado del otro. Entonces lo que noten, chicos, como pueden ver, tenemos el concepto de UUID existente Concepto de nombre, fecha de nacimiento, sexo, salario, domicilio, edad, teléfono, nombre de la empresa, está activo. Todos estos son detalles comunes. Graph Qa nos da la capacidad de poder agregar estos detalles comunes en lo que llamamos fragmentos. Por eso ves defino algo llamado fragmento. El fragmento está en lo que hay en esta interfaz de persona. Está en esta interfaz actual. Ahora que en realidad lo tengo aquí, puedes ver que un define, oye, este es el fragmento que en realidad deberías ser debe traer. Podría decidir no agregar esto y solo probablemente agregar todos estos datos, recoger todos estos datos y pasarlos aquí. Pero solo quiero mostrarles que esto realmente existe. Quiero decir, probablemente podría simplemente elegir todo esto todo lo que tenemos aquí y no usar el concepto de fragmento y simplemente enumerar todos los campos aquí, y las cosas seguirán funcionando. Pero déjenme mostrarles que esto existe, esto sale puedes usar el concepto de fragmento. Para ello, vamos a buscar a todos los subcontratados. Vamos a buscar a todos los subcontratados. Va a tomar un tiempo porque hay muchos datos. Puedes ver todos los datos devueltos correctamente. Dentro de este fragmento, podría decir, ¿sabes qué? No me des género. Oh, bien, quiero género. No me des fechas de nacimiento. No quiero que nadie sepa mi fecha de nacimiento y diga que no me den espuma. Recuerda, es devolver el teléfono, es devolver fechas de nacimiento, en realidad va a retomarlo, que es el poder de Graph co para poder Quigy solo lo que necesites Hagamos esto otra vez. Impresionante. Como puede ver, no tenemos bit de datos y tampoco tenemos espuma. Todo bien. Si digo que esto es falso, eso significa que quiero a todos los empleados. Al parecer, quiero a todos los empleados, así que hagámoslo. Esto está pasando, estirando todos los empleados con todos los datos de los gnomos Esto está regresando, no tenemos bit de datos, no tenemos espuma. Como puedes ver el concepto de fragmento también funciona. He podido mostrar esto claramente, y esto es bastante impresionante. Bien, chicos, los veré en el siguiente video. 70. Unión Grapqhl: Oigan, chicos. Bien, es bueno tenerte de vuelta. Bien, hablemos de algo bastante importante. Bien, entonces, ¿por qué en realidad arrancamos el bootstrapping ? ¿Por qué empezábamos este curso? Les mostré muchas cosas y también les mostré el concepto de usar unión, el concepto de usar unión. Entonces, ¿cómo podemos hacer para implementar el sindicato? Si quieres buscar, recuerda, Union está trayendo dos entidades no relacionadas que podrían estar relacionadas de alguna manera, donde se podría decir que son totalmente diferentes en otras formas ¿Cómo los une e implementa bien en GFK ¿Todo bien? Abordemos eso en este video. Veamos cómo podemos unir dos cosas no relacionadas. Voy a usar este ejemplo bastante genial. Entonces voy a decir, eso. Voy a traer un sindicato y lo llamaré la persona y entidad. Búsqueda de persona y entidad. Voy a hacer que sea una combinación de DTO de empresa o accidente cerebrovascular y empleado Voy a traer este concepto. Voy a exponer esto dentro de nuestra consulta. Entonces entraré dentro de nuestra consulta para decir, dame empleado con compañía. ¿Qué compañía tal? Empresa tal, luego me pasa la identificación del empleado. ¿Identificación de empleado? Familiarizándome con la sintaxis ahora y estoy diciendo que va a ser importante y deberías darme una lista, una lista de personas, podría ser una o más. No obstante, ya que no estoy haciendo esto obligatorio, así que sólo pude conseguir uno o más. Pero si hago esto obligatorio, estoy diciendo que necesito dos. Estoy seguro de que ustedes entienden esa parte. Bueno. Ahora que tenemos esto, sigamos adelante e implementemos esto. Sigamos adelante e implementemos esto. Para comenzar esto realmente, no quiero mezclar esto, así que cortemos otro controlador, que voy a llamar controlador de comando común, Controlador comandos. mando. Como de costumbre, va a estar en el controlador y va a estar en un constructor de cuartos tal como lo uso antes. No hago inyección de constructor. Solía hacer inyección de concentrado en la hamburguesa. Ahora voy a tener un concepto de final privado llamarlo servicio común servicio común. Entonces vamos a implementar el esqueleto, tener un mapeo de esquema, un mapeo de esquema. Voy a tener nombre tipo, cava constante. Al parecer, no sé, para ser una consulta de consulta. Voy a tener un campo. Recuerda, no estoy construido, no estoy compilado, así que no tendría lo que necesito aquí. Ahora por ahora, probablemente solo voy a conseguir la cepa. Cuando construyamos, voy a reemplazar. Construir voy a reemplazar. Probablemente esta será entonces la lista pública de una persona. Búsqueda de persona y entidad, no la va a encontrar porque no hemos construido búsqueda MC, y la llamaré básicamente empleado con ID de búsqueda. Entonces voy a pasar los argumentos. Recuerden argumentos pasajeros. Argumentos, luego ID de empleado. Esta iba a ser la identificación del empleado, que encadenamos ID. Entonces voy a devolver el servicio común. Comienza el servicio común. Yo solo lo llamo el mismo nombre empleado con búsqueda de comp y paso la identificación, ¿verdad? Tienes humanidades quejándose ya chicos. Lo que haga, voy a comenzar esto. He comentado esto, voy a comentarlo. Para esto están codificando, simplemente realmente codifica a lo largo del que lo elogiamos , así que construya rápidamente Voy a detener el funcionamiento del servicio vamos a construir. Voy a hacer una compilación ambiental. Les dije chicos si tienen errores porque completo no lo encuentra solo comentan las clases de la empresa o los controladores o controladores de comentarios igual que este error, como quise decir. Sencillo pon esto simple y la razón es porque no existe la constante dgs Recuerda, ya no hay dgs que ya no puedas encontrar DGS constante Yo solo comento, ¿verdad? Esta es solo una de las desventajas ello porque al parecer, recuerda que limpia en realidad limpia el No se puede encontrar una batea que construimos. Construyamos esto rápidamente. Simplemente entraré y eliminaré esta foto objetivo porque no eliminamos podría no compilar adecuadamente. Yo sólo compilo. Bien, entonces esto está pasando y básicamente tenemos nuestros detalles creados. ¿Eso es así? Sí, esto se crea. Así que volveré y descomentaré a todos estos tipos, ¿verdad? Yo los comentaré. Esto está bien. Esto está bien. Esto está bien. Y esto bien, para que veas que esto también está bien Realmente bien a la persona, ¿ verdad? Entonces esto es genial. Bien. Entonces esto navega desde estas partes vemos que en realidad entra aquí Todo bien. Con esto dicho, necesitamos crear el concepto de servicio común. Entonces básicamente ir al servicio y crear servicio común. Lo que haría, solo voy al servicio, solo copia esta cosa aquí, voy al servicio, solo llámalo servicio común. Esto básicamente será un servicio y volvemos aqui como constructor, entonces ¿qué básicamente voy a necesitar? ¿Qué necesito? Necesito básicamente de todo. Voy a traer en privado. Final porque necesitamos a la empresa Apochi. Empresa A Positii Empresa A Positi. Entonces también necesito al empleado Positii porque recuerda que estamos recibiendo para empleado, empleado posti, employe Positii aparentemente necesito la dirección también en caso de que estés Obtengo el servicio de dirección, servicio de dirección. Servicio de dirección, luego servicio de dirección. Y por último, probablemente necesite al Mapper Util para mapear las cosas para dejarnos Mapper Util, luego Mapper Util para mapear las cosas para dejarnos Mapper Util, luego Mapper Util. Todo bien. Entonces con este tono, entonces puedo volver a mi controlador, solo para salvar me encanta hacerlo. Ahora bien, esto debería ser encontrado, ¿verdad? ¿Cuál es el problema? Sí, debería ser encontrada. Sólo importarlo, ¿verdad? Así que voy a venir aquí para crear este problema auto crea. Fresco. Tenemos esto en. Entonces puedo entrar a decir, Oye, dame al empleado, revisa al empleado empleado punto bien por identificación, empezamos con esto y decimos bien por identificación o pasando la identificación, appalys me van a dar un opcional, Tienes el empleado opcional, fluyeme chicos, tienes el empleado opcional. Ahora con esto disponible, quiero comprobar si existe. Si este tipo está vacío. Digamos que no está vacío, que caiga primero. No está vacío, entonces intentemos una excepción. Cierto. Nuevo momento equivocado por ahora, colocamos todo después. Empleado no encontrado. Empleado con ID, no encontrado, no existe, no encontrado. No se encontró. Eso es bastante genial. Entonces sin embargo, ¿y si se encuentra? Entonces quiero devolver al empleado opcional, esto se encuentra, este se encuentra. Conseguiré el mapa de puntos de empleado opcional. Podrías hacer un mapa. Básicamente se podría hacer un mapa directamente en un opcional también. Mapearé esto y lo mapearé a la cola del mapeador, luego al empleado DTO Eso me va a dar DTO empleado, ¿verdad? Si entonces tengo esto Bien, esto me daría. Lo marcaré dentro de cada empleado, así que máximo dentro lo haré consigue. Entonces lo hago llega hasta aquí. Eso me dará los detalles exactos que necesito. Este debería ser un empleado DTO. Todo bien. Esto se está haciendo bastante largo, así que me voy a dar prisa rápidamente y sólo decir que el empleado det entonces voy a establecer la dirección, ¿verdad? Y voy a escoger el servicio de dirección. Entonces me va bien por la entidad. Entonces por la entidad, sólo voy a pasar el empleado empleado DT obtiene identificación de empleado, ¿de acuerdo? Entonces eso es bastante genial. Entonces sólo voy a hacer una pausa aquí. Volvamos en el siguiente video para terminar esto porque este video se está haciendo muy largo. Los veo chicos en el siguiente video. 71. Graphql Union 2: Oye, ahí. Todo bien. Bien, así que vamos a la derecha. Entremos enseguida. Así que intentamos terminar el sindicato, ¿de acuerdo? Todo bien. Voy a probar algo aquí afuera. Entonces intenta terminar la unión, ¿verdad? Y básicamente, pesamos en el servicio común, y realmente somos capaces de llegar a este punto. Pero he seguido adelante para probar realmente implementar todo esto. No tenemos que perder el tiempo en este video en particular. Todo lo que consigo se acaba de llamar la empresa Repositi luego paso en el empleado u obtener el nombre de la empresa De hecho, pude conseguirlo. Si una empresa no existe, decimos empresa no encontrada, entonces en realidad mapeamos la empresa a la empresa DTO, entonces devolvemos este listado Devolvemos esta lista, que es una forma de la persona entidad como la persona empleada DTO y la empresa También podrías hacer algo como esto. Enumere persona, y solo diga búsqueda de persona, luego envíelo lista, luego vea persona punto agregar, luego pasar al empleado DTO, esto funcionará También esta parte, también se podría ver la empresa DTO. Esto básicamente funcionaría. Pero como estás usando Java 11 y superior, solo pensé en usar la lista y esto básicamente funciona apropiadamente. Voy a seguir adelante para probarlo realmente. Vamos a verificar nuestra lógica una vez más. Verifiquemos una vez más nuestra lógica. En realidad llamamos realmente pasando la identificación del empleado y la identificación del empleado, buscamos al empleador Positi para asegurarnos de que realmente la encontramos si no encontramos si no está presente, esto debería darnos un error, si está vacío Si esto está vacío, lanzamos una excepción. Donde se encuentre, luego continúe para mapear realmente porque opcional, tenga en cuenta opcional también tienen el concepto de mapa. ¿Correcto? También podrías mapear las cosas en un opcional, ¿verdad? Y también puedo pasar en el concepto de Lamb Des que tenemos. Yo era capaz de realmente lo hace. Lo mapeé, entonces realmente lo saco para conseguir a mi empleado DTO, después de hacer eso, entonces en realidad estoy configurando la dirección aquí Estoy usando este empleado DTOs nombre de la empresa para la búsqueda del depositario de la empresa Y si no existe, intento una excepción. Entonces eso es básicamente lo que hice. Vamos a callar, pruébalo. Tengo esto ya wirding y he seguido adelante y he puesto una identificación, una identificación de empleado, ¿verdad? Así que recuerda el concepto chicos recuerdan el concepto del que acabamos de hablar usando el concepto de usar el tipo. Por lo que este concepto también se aplica aquí. Así que en realidad podría pasar esto aquí, pero no necesariamente usar el typenme Entonces, entremos nuestro sindicato para ver realmente cómo es esto. Entonces si entro en esta parte, puede ver que también tenemos el concepto de typename, Este concepto de typename. Ahora, sólo les estoy enseñando chicos. Se ve que creó una unión como interfaz. Por eso tenemos el concepto de typename. Solo les estoy mostrando chicos que no necesitan agregar deliberadamente el typename, pero podrían especificar realmente el Sólo estoy tratando de mostrarte diferentes variaciones, muy para saber cómo funciona. Con este juego de pines, vamos a probarlo. Estoy consiguiendo empleado. Este empleado tenemos estos detalles y este detalle tenemos estos detalles. Vamos a traer esto. Bien, entonces tenemos un error en alguna parte y el error está diciendo, déjame revisar esta parte. ¿Qué dice el error? Donde sonreímos error dice empleado con identificación no encontrado. Tenemos que reiniciar esto en realidad. Reiniciemos esto. Creo que lo apto vamos a reiniciarlo. Bien. Pongo una vez más si obtienes el MR, voy a depurar para ver qué está pasando realmente. Muy bien, así que esta puesta solo voy a seguir recto y solo darle a esto. Impresionante. Impresionante. Como pueden ver, tengo a mi empleado, y como pueden ver, también tengo los datos de mi empresa. El empleado la empresa porque si revisas, agreguemos en el nombre de la empresa, que comenté. Entonces, si realmente haces esto, digamos, nombre de tu empresa es Sanford AC y la compañía Sanford LC para realmente reunir esos detalles Si hubiera decidido excluir a la compañía, obtendría a mi empleado. Decidí excluir empleado, obtendría la empresa. De hecho podrías juntar estos. Recuerda, el concepto de nombre tipo es, tengo muchas formas. O me das esto o me das esto y ambos están disponibles, realidad es capaz de navegar para mostrarte que en realidad puedo traer esto. Voy a repasar eso otra vez. Si tienes un concepto de nombre de tipo, en realidad podrías obtener el primer tipo o una forma u otra. Esa es toda la idea. Podrías decidir especificarlo o no especificarlo. Bo trabaja. Pero si lo especificas, está bien. Si no lo especificas, está bien. Podría tener una forma o podría tener otra. Como esto en realidad contiene ambos, fue capaz de decir dinámicamente, bien, reconozco a este empleado DTO, genial, reconozco esto y me da esto Así es como usas union. Union realmente trae todo por ti en función de lo que tus datos están devolviendo. Y como el poder de la gráfica QL realmente implica, entonces puedes comentar los campos exactos que quieras o los que no necesites Vamos a probar esto una vez más y voy a quitar la oficina central, que tiene por aquí. Vamos a seguir adelante y probar esto, C como puedes ver, lo tenemos. Bien, con esto dicho, chicos, los veré en el siguiente video. 72. Uso de encabezados (sin QueryParam, sin PathVariable): Oigan, campeones. Es bueno tenerte de vuelta, ¿verdad? Ha sido un viaje interesante hasta el momento. Bien, así que queremos discutir otro detalle importante en este video o algún par de videos. Que es el concepto de parámetros de solicitud, y variables de ruta, equestPMS y variables Bien. Desafortunadamente, AQL, spring for GAF QL no tiene soporte para Y variables PAT. ¿Por qué es eso? Recuerda, todo le pasa solo a la URL. Puedes colocar tener algo como esto. Le pasa a la URL. Cada pulso, mutación, sea lo que sea, le pasa a una sola URL y dinámicamente, introspecta de ss Toda la entidad o debería decir puntos finales que estás tratando de pasar en base a los nombres. Basado en los nombres. De hecho, podrías enrollar esto para escuchar ese camino de nuevo. No hay concepto de consulta. No hay concepto de parámetros de trayectoria. Sólo usa los nombres para poder resolver y saber lo que estás enviando es un post o estás pasando en mutación, que es una mutación, que es un post una consulta, que probablemente podría ser un get, sin embargo, hay una alternativa. Y la alternativa a eso es usar encabezados. La alternativa a eso es usar encabezados. Entonces tenemos el concepto de encabezados. Lo mismo, tienes encabezados HTTP. Tenemos cabeceras en Garth QL. Entonces como resultado para solidificar esto, vas a estar implementando encabezados, Encabezados, y les mostraré algunas variaciones sobre cómo hacer esto en realidad. Entonces, al llegar a esto, solo traeré esto en lo que vas a usar. Entonces vamos a tener esto. Vamos a tener que buscar empleados usando encabezados, recuperar fuente usando Esto también sería genial. Vamos a decir buscar empleados usando encabezados y argumentos Pudimos ver cómo podemos usar encabezados y argumentos juntos. Aquí, queremos ver cómo están usando los encabezados. Vamos a meternos en ello. Lo que vamos a hacer, vamos a ir a un servicio de empresa. Vamos a ir a un controlador de la compañía, Lester desde el controlador dijo controlador común y NSSA, controlador común Ales Prefiero usar el mapeo de esquemas, ¿verdad? También podría usar la asignación de consultas. Esto funciona bastante bien aquí, y en realidad no tenemos mi tipename Entonces no experimentamos el mismo error que hicimos la última vez, así que voy a hacer, solo voy a seguir adelante y solo construir envidia y compilar. Ojalá, no obtengamos error, y esto en realidad viene directamente, que está en los detalles que realmente especificamos aquí. Cierto, la ocurrencia del RAC, que está bien, lo único que tenemos que hacer es encomiar esto Sólo necesito encomiar esto. Yo sólo termina por encomiar esto. Vamos a eliminar la carpeta de destino. Va a reconstruir. Todo bien. Y esto es bastante correcto, correcto, porque lo pensamos, estamos usando la constante generada en carpeta Target. Así que cada vez que lo construimos juegos limpios porque recuerden, la limpieza viene antes de compilar, ¿verdad? Si lo miras en el ciclo de vida, tenemos la limpieza antes de que compilen y eso es exactamente lo que está pasando. Todo bien. Entonces ahora que esto es exitoso, seguiré adelante y traeré este paquete. Yo seguiré adelante y traeré este paquete. Yo seguiré adelante y traeré este paquete. Y esto también ya está ahí. Entonces esto es bastante genial. La razón por la que no generas error porque en realidad lo uso. Así que arreglemos esto y agreguemos aquí la aleta correcta. Esta DGS Constant, Jot Query, una consulta, luego empleados empleados con Búsqueda de empresa con la capital E. Todo bien. Fresco. Por aquí, definamos un mapeo de esquema. Voy a traer este paquete. Entonces, un esquema de mapeo, recuerden, lo que estamos tratando de lograr aquí chicos, lo que estamos tratando de lograr es bastante simple. No tenemos el concepto de parámetros de consulta, y no tenemos el concepto de variables de ruta, pero tenemos el concepto de encabezados Puede usar encabezados para sustituir y querer ver varias formas de eso es lo que estamos tratando de lograr. Tener un nombre de tipo, constante DGs. Constantes DGS, utilice tipo de consulta cuatro. Entonces vamos a decir campo, luego constantes DGS, luego query, y queremos pasar en el Queremos desprendernos de la búsqueda de empleados usando encabezados. Se trata de chicos bastante chulos. Esto bastante genial. Yo sólo diré al público que va a ser público. Volvamos a nuestra definición. ¿Qué devuelve empleado DTO? Devolver un empleado DTO, Empleado DTO, ¿verdad? Sí, dices lista, esta una lista. Lista. Lo cual es bastante genial. Solo usaré el mismo nombre aquí, buscaré un encabezado ascendente, que Q. Eso entra Entonces voy a pasar en una matriz de cabeceras. Ahora bien, esto es muy importante chicos porque esto puede llegar a ser muy confuso. Necesito explicar algunos detalles aquí. Diré retorno, servicio común, luego iré a buscar usando encabezados, lo cual está bien Entonces voy a estar pasando tres cabeceras. Veré encabezado uno, encabezado dos y encabezado tres. Encabezado tres. Vamos a crear esto en un poco. Ahora bien, ¿de dónde obtengo los encabezados? Cuando estás usando encabezados, tienes que hacer un poco de configuración. Se necesita hacer un poco de configuración cuando intentas pasar encabezados, y eso es lo que realmente vas a traer. Cuando intentas crear encabezados, esto es muy importante, chicos, muy, muy importante. Entonces , por favor, preste atención. Cuando intentas crear encabezados, necesitas traer un concepto llamado interceptor de gráfico web L. Esa es una gran palabra. Solo les mostraré cómo funciona, ¿verdad? Yo diría que quiero la solicitud. Interceptor de cabecera, quiero interceptar las cabezas Es sólo una clase normal, ¿verdad? Pero esto implementaría esto implementa la web la gráfica web QL, la gráfica web QL Cuando implementamos esto, en realidad nos cruzamos. Interceptamos bastante cool. Ahora bien esta es una configuración porque los componentes porque queremos que se descubra, puede traer esto. Ahora que tenemos esto, ¿cómo sacamos entonces los encabezados? Muy fácil. Pero entonces digo de esta solicitud que está entrando en la gráfica QL, quiero buscar en realidad mis encabezados. ¿Cómo hago eso? Vengo aquí y voy a decir mi petición punto obtener encabezados. Verás, los encabezados están disponibles. Obtienen primero, obtienen el primero ocurren, obtienen el primero ocurre de cualquier cosa con nombre de clave encabezado uno. Espero que entiendas el concepto, chicos, hay que pasar el nombre exacto, la clave, así como cuando pasas errores o tipo de contenido en TP, pasas un encabezado con una clave y un valor. Esa es exactamente la forma en que funciona aquí. Esto va a ser una cuerda. Yo lo llamaré encabezado uno. Simplemente voy a crear los otros dos y esto estará esperando encabezado dos, estoy esperando encabezado tres, y simplemente voy a cambiar la convención de nomenclatura aquí, así que en realidad podríamos tenerla coincidente Tres deberían ser dos. Bien. ¿Eso es todo? No. También tenemos un detalle más que necesitamos lograr realmente. Entonces decimos, por cada solicitud que entra, esta solicitud que está entrando, quiero que configures una entrada de ejecución para mí. Entonces la entrada de ejecución toma una función bi y la bifunción tomará una entrada de ejecución y un constructor, derecho, que luego usaríamos Tomando esto y el constructor. Entonces digo el constructor, quiero que el constructor obtenga realmente el contexto GAF Quo Una vez que consigas el contexto del auto Gp, entonces quiero mapear lo que quiero recibir. Tienes que mapear lo que quieres recibir. Esta es una configuración de una sola vez. Esta es una configon recomendada para la primavera, así que podrías estar seguro de que podrías hacer esto una y otra vez Podrías simplemente colocar esto en una vez y pasarlo. Un encabezado, bueno, déjame ponerlo de esta manera. Un encabezado que está entrando en tu aplicación, debes configurarlo. En toda la aplicación, debes configurarla. Gap Qiu debe saberlo. Si no lo sabe, te vas a meter en problemas. Voy a decir encabezado uno, para cabeza de uno, agárrate para mapearlo dos. Yo solo encordo colas. Encadena tus colas desde el marco del columpio y asegúrate de pasar el texto. Thatas texto, voy a pasar en cabecera uno a él. Voy a decir si esto tiene texto, sí, dame cabeza de uno porque no quiero un error inesperado si no tiene que darme NT. Eso es básicamente lo que estoy haciendo. Estoy diciendo que si estás disponible, dámelo si no estás disponible, no me lo des. la misma manera, voy a definir para encabezado dos, la misma manera definiré para encabezado tres. Yo sólo entraré aquí y sólo modificaré esto, ¿verdad? Entonces solo coloco esto en cabecera dos, encabezado tres. Ahora he registrado lo que yo. Ahora estos son en realidad ir, estás presionando un mapa, estás diciendo que quiero el encabezado de cadena. Esto esta disponible, dame esto no esta disponible, no me des eso. Eso es en realidad, entonces quiero construir, eso es construir. Yo construyo esto. Una vez hecho esto, recuerda que decimos cadena, yo digo cadena de la misma manera que tienes la cadena de filtros, en realidad recibes la solicitud y la vuelves a pasar a la cadena. He interceptado la cadena. Quiero que entiendas los alcances que he interceptado a la cadena He insertado la cabeza, estoy esperando en ella. Quiero estar al tanto de este encabezado. Entonces lo devolveré. Voy a decir punto de cadena a continuación, y paso en la solicitud. Nos vemos chicos, el próximo medial. 73. Uso de encabezados 2 (sin QueryParam, sin PathVariable): Hola ahí. Todo bien. Estábamos tratando de ver realmente cómo usar los encabezados en la gráfica QL Ahora la visión es porque no hay concepto de params iguales y pasar variables para lograr realmente esos encabezados ascendentes Mencioné lo primero que debes hacer para lograrlo realmente, en realidad estás explorando estas tres consultas gráficas Q. Fetch emplea con encabezados, busca encabezados assoc y recupera a tus empleados usando encabezados y argumentos para ver cómo podemos mezclarlos. Pero ahí no termina. Entonces usa encabezados, tienes que hacer alguna configuración. Prácticamente entramos en un común esta parte para crear realmente esto. Pero sin embargo, hay un poco. Necesitamos configurar de dónde vienen estos encabezados. Entonces ahora conoce de dónde vienen estos encabezados. Creamos esta solicitud interceptor que intercepta la solicitud que entra en la gráfica Q que viene a través de la gráfica web su interceptor, interceptamos para convertirlo en un componente para registrar como haz que lo vea, luego al interceptarlo, realidad obtenemos la primera ocurrencia, que viene de esta solicitud o obtenemos cabeceras o obtenemos primero y colocamos dos, tres, que en realidad estamos esperando aquí. Entonces después de conseguir eso, entonces estamos diciendo, oye, queremos registrar esto dentro del contexto, y estamos registrando cómo no queremos recibir punteros y similares Estamos dame cabeza de uno, si existe, si tiene valor, si este encabezado uno tiene valor, dame cabeza de uno. No tiene valor. ¿Ves? Estoy registrado y digo, dame esta cabeza de uno si tiene valor, dame este encabezado si tiene valor. Si no me da una cadena vacía. Entonces por eso estamos seguros de que cuando vendes una cadena vacía, no existe. Si no dices una cadena vacía, en realidad existe. Todo bien. Luego lo registramos de nuevo en la cadena, igual que la cadena de filtros, cuando recibe la solicitud, cuando está haciendo seguridad de resorte y obtiene la cadena de filtros, obtiene la solicitud correcta de subarrendamientos HCP Cuando lo consigas cuando configures algo, lo volverás atrás para que quede registrado. De la misma manera en que en realidad damos la vuelta atrás. Por lo que esto se registra al lado. Esta es básicamente toda la configuración que necesitamos hacer aquí. No utilizamos activamente la entrada de ejecución. Entonces con esto hecho, no volvimos aquí esto es importante. No volvimos a entrar aquí. Nosotros no no usamos argumento. Tenemos encabezados baratos, usamos algo llamado en contexto en valor de contexto. Al valor de contexto, luego pasa lo exacto que estás buscando. Quiero lo que quiero encabezado uno. Espero que esto tenga sentido y quiero encabezado uno y de hecho lo coloco realmente. En realidad puedes especificar si es adquirida adquirida, no, no requiero encabezado uno. De la misma manera a encabezado dos, encabezado tres. Entonces ahora, recuerden, solo una variación numer primaveral, podrías tener un nombre o un valor Ambos son iguales. Simplemente coloco esto como valor. Entonces no, eso es lo mismo, no es diferente. Entonces es un valor y esto es un encabezado dos. Ambos no son importantes. Para ello, hagamos esto importante. Hagámoslo cierto. Y si esto es cierto, lo que acabo de decir, Oye, este es el valor por defecto, así que también podemos eliminar esto. De la misma manera tenemos co pares y variables de ruta. Este mismo concepto realmente funciona aquí para encabezado. Aquí estamos viendo encabezado tres y también lo hacemos opcional, haciendo esta opción así que ahora esta bien. Así que hemos podido recuperar todos los detalles sobre él. Entonces así es como recuperar encabezados, ¿verdad? Así es como recuperar encabezados, ¿verdad? Entonces, en realidad creamos interceptor, mapeamos esto en, luego lo recuperamos a través del valor de contexto Esto básicamente funciona. Bien con esto, luego crea vamos a crear nuestro servicio. Bien, entonces estamos guardando tres encabezados, lo cual es bastante genial. Todo bien. Entonces, ¿qué hacemos con estos tres encabezados? Muy chulo. Voy a decir repositorio de empleados, puntos final encontrar empleado con encontrar todo por ID de empleado en. la misma manera que ejecutas un script SQ y dices, en, ¿qué estás haciendo? Estás pasando una lista de cosas. La columna que estás pasando , puedes pasar en una lista. Lo mismo funciona para JPA. Entonces estoy pasando la lista y me paso una cabeza de uno. Recuerda, seleccionando una lista chicos, seleccionando una lista. Voy a pasar lista de entonces paso encabezado uno, encabezado dos, y cabeza tres, ¿verdad? Todo bien. Ahora bien, si eso es fetch, quiero recordar, siempre quiero meterme en un DTO empleado, transmito a través, luego mapeo después de mapear, luego consigo a mi empleado porque quiero hacer dos detalles aquí En primer lugar, solo digo mi mapa en YouTub punto consigue esto ellos te da un empleado DT, lo cual es genial, luego pongo la dirección Gracias auto complete y devuelvo esto. Esto realmente entra, luego lo devuelvo punto a lista. Esto básicamente es muy, muy sencillo. Ahora tenemos esto. Para el otro también, estás haciendo esto. Voy a saltarme esto porque es solo el mismo concepto, pero por favor amable, siéntete libre de implementar esto chicos. Siéntase libre de implementar esto. ¿Qué voy a hacer bien? Podrías implementar, pero probablemente no solo lo pruebo, ¿verdad? Probablemente no solo lo pruebo, sino para que solo pudiéramos tener ambos juntos. Entonces hagamos lo mismo. Así que voy a seguir adelante y robar esto. Voy a seguir adelante y robar esto. Entonces iré a buscar una cabeza a las cuatro o a las cinco, Yo saco esto. ¿Verdad? Te voy a poner de lado. Pecing cabeza de cuatro o aspecto la cabeza de cinco, esta sería cabeza de cuatro y esta sería cabeza de cinco Mueve este valor. Después de quitar esto, al parecer, tiene que cambiar. Tiene que ser fetch, externalizado, usando encabezados. Así que en realidad hemos podido mapear esto en. Entonces esto sería fetch, externalizado, be fetch externalizado. Traer nuestra salsa está en cabeceras, cambia esto. Letra minúscula. Yo paso esto en este de hecho entrar aquí. Sí. No tenemos esto disponible en este momento, y que vas a crear pronto. Tenemos esta cabeza de cuatro y cabeza de cinco, Cabeza de cuatro y cabeza de cinco. Esto debería ser fetch, pensé que cambié este Fetch Obtener subcontratados. No entendí esa p, genial. Entonces paso esto , haz esto aquí. Podemos seguir adelante y luego crear esto adelante y luego crea esto. Todo bien. El mismo concepto que trabajamos aquí chicos, solo voy a elegir todo. Yo sólo lo pondré aquí. Ahora, voy a estar usando Osuc. Voy a estar usando postula subcontratada. Nosotros lo sabemos en Vamos a cablearlo. Seré subcontratar repost, subcontratar repost. Entonces podemos usar el repost de externalización, luego encontrar todos, voy a fuente en la cabeza que pasa de cuatro Estás pasando cabeza de cinco, no necesito esto. Para esto, debería estar esperando subcontratada y voy a conseguir una subcontratación Esto será mapear un mapa subcontratado para subcontratar, deberían estar dándome un subcontratado a Voy a obtener DTO con subcontratar a Voy a obtener DTO con Entonces solo mapeo el concepto aquí, luego paso al subcontratar obtener nuestro ID de origen, luego voy a devolver el subcontratar esto me va a estar dando un DTO subcontratado externalizado Esto es básicamente correcto. Cuando volvamos aquí, estamos pasando por el DTO subcontratado Esto básicamente funciona. De hecho, hemos podido tener esto en. Bien, chicos, los veré en el siguiente video. 74. Uso de encabezados 3 (sin QueryParam, sin PathVariable): Oigan, chicos, gracias por volver, ¿verdad? Así que somos capaces de implementar realmente unos encabezados, para buscar empleados en encabezados y te mostré cómo funciona Ahora, podríamos haber pasado por alto un detalle. Recuerda que debes usar el valor de contexto. Para los encabezados, hay que registrarlo. Si lo miras, solo registramos el encabezado uno, dos y tres, tienes que registrar el encabezado tres, el encabezado cuatro y el encabezado cinco, que son más fáciles de subcontratar De lo contrario no lo encontrarás. Esto es cuatro y esto es cinco. Probablemente sólo voy a entrar y sólo añadir esto en. Este es un Cammer aquí y este es un Cammer aquí, y esta será una cabeza de cuatro, Cabeza de Y el jefe de cuatro, cabeza de cuatro debería ser cabeza de cinco, cabeza de cinco, esto debería ser cabeza de cinco. Registralo ahora estamos seguros de que vamos a recuperarlo. Pido realmente hacer esto con éxito. Tenemos un detalle más para implementar. Quiero implementar todos los así que simplemente salta Alta Bosman como probablemente uses, entonces y luego haz que ambos lo ejecuten Para ello, estás esperando una lista de identificaciones. Queremos lograr un encabezado, al mismo tiempo, en realidad queremos pasar los ID de personal, muchos ID de personal. Entonces esto funciona para nosotros chicos, así que en realidad también podríamos implementar esto. Voy a entrar y simplemente seguir adelante y detener esto. Todo bien. La fotografía se cansa de escribir. Creo que también me estoy cansando de escribir. Entonces déjame hacer una pausa contigo. Apresurar esta verdad, y procedemos. Todo bien. Así que en realidad he entrado. En realidad estamos separando a los empleados usando encabezados y argumentos, lo que en realidad corresponde a este tipo, bastante genial, ¿verdad Así que en realidad tenemos eso de vuelta, luego trivi encabezado seis, y estamos pasando una lista de ID de cadena Desea obtener esta lista de ID de cadena recibir todos los ID con el encabezado. Recuerda que aún tenemos más detalle, tienes que registrarlo. Esto es esto chicos bastante chulos. Debes recordar registrarte, lo contrario, te vas a encontrar con errores. En realidad tenemos esto realmente registrado ahora. Tengo que entrar aquí y registrarme. Ahora, es y dices, seis, esto son pasteles, juego de seis, juego de seis, conjunto seis. Todo bien. Ahora, por favor, tengan en cuenta una cosa, chicos. Mapa de. No está escrito en ningún lado, pero este es el comportamiento que conozco de Mapo Mapa de sólo puede tomar un máximo de ocho. Entonces, si vas más allá de las ocho, es posible que necesites enumerar deliberadamente, hacer algo como un mapa. Haces un mapa o cadena, luego lo pasas uno por uno, ¿verdad? Digamos que tienes encabezados que son mucho más que eso en tu aplicación. De lo contrario, si agregas más detalles, esto intentará y flecha, esto no funcionará. Entonces intentemos agregar algunos detalles extra. Intentemos agregar algunos detalles extra. Pasar esto en parecería como si estuviera bien. Pero cuando pruebas, empiezas a generar, no va a funcionar. Por favor, tengan esto en cuenta, chicos, cuando estén probando o cuando realmente estén fumar, usando un mapa de No pases más de ocho. Yo creo que la clave debería ser ocho, por favor tenlo en cuenta. Pensé que debería mencionar para aquellos que probablemente tendrán muchos encabezados en la aplicación. Todo bien. Pudido realmente traer el encabezado, que es el encabezado seis, debería haber sido un error. A un seis, a un seis año, a un seis año a seis años y pasar un poco en él. Así que esto es bastante genial y en realidad tenemos con un valor de contexto. Dices que no queremos ser falsos, y también recibir argumentos, pasando una lista de identificaciones. Decimos exactamente lo que esperas. Si lo miras, estás esperando lista de IVs. Estás diciendo que debe ser una cadena, y debe ser una lista debe ser más de una. Estamos haciendo ambos obligatorios, bien, y lo hemos hecho antes de al final. Entonces vayamos a la implementación. Así que paso esto en Bien, esto es bastante genial, chicos. Bien, entonces entremos y luego terminemos la implementación. Todo lo que necesitas hacer es bastante simple. Entonces solo diré para esta identificación de personal, al parecer, la identificación de personal, el encabezado también es staff voy a estar pasando. Entonces solo diré identificación del personal, la t. ¿solo agregaré seis ácaros? Bien, eso funciona. Entonces después de agregarlo, solo diré empleado, es lo mismo que tenemos aquí, chicos. Es exactamente lo mismo que tenemos aquí. Así que voy a hacer girar todo esto, ¿verdad? Voy a cantar todo esto en. No dice que va a cambiar, sino solo traer todo esto adentro. En este tiempo, solo voy a pasar la identificación del personal aquí. Sólo voy a pasar la identificación del personal aquí. Todo debería seguir funcionando igual. Ahora tenemos toda nuestra implementación en su lugar para probar encabezados porque no hay formulario de solicitud o variable de parte por lo que estarás usando mucho encabezados. Después de colocar esta cabeza a las tres, si me perdí esto. Corre de nuevo, cabeza un uno, dos, tres, cabeza un uno, dos, tres, cabeza un cuatro, cinco, e45 Sí, uno, dos, tres, cinco geniales y seis. Comprobemos esto. Aquí, uno, dos, tres, cuatro, cinco, seis, uno, dos, tres, cuatro, cinco, seis, luego uno, tres, cuatro, cinco, seis, luego 135. Bien. Entonces con esto, sigamos adelante y probemos y veamos cómo se desarrolla. Bien, así que esto se acerca así que no deberíamos obtener ningún error, por así decirlo Bien, así que esto está dentro. Entonces sigamos adelante y probémoslo. Bien, entonces esto es para lo común. Esto es para lo común. Ya entré para agregar estos últimos bits, así que quiero buscar empleados Entonces, busquemos a sus empleados usando encabezados, bien, busquemos los encabezados de sus empleados Entonces, ¿cómo se agregan encabezados aquí? ¿Recuerdas respetar los encabezados aquí? ¿Cómo agregas tus encabezados? Muy sencillo. Esta búsqueda de empleados, sólo voy a entrar aquí, ya ves, establecer encabezados, establecer encabezados. Para Cartero, estoy seguro que ya puedes entenderlo. Tenemos cabeceras aquí, ¿verdad? Pero cartero estoy compartiendo ves encabezados aquí, así que puedes simplemente establecer tus encabezados ahí Primero sem usando costo normalmente. Pero para neumático, en realidad establece tus cabeceras aquí, he seguido adelante para agregar siete encabezados, todos los encabezados uno, dos, tres, cuatro, cinco, seis porque estamos estableciendo seis cabeceras. Lo que voy a hacer entonces estos tipos no son correctos. Permítanme reemplazarlos por valores precisos. Entraré aquí, elegiré empleados, elegiré identificaciones correctas, elijo las identificaciones correctas para los empleados. Confirmemos una vez más el empleado 123123 es para identificaciones de empleado, luego voy a fuentes para cinco 123 es para identificación de empleado. Voy a ir en ID de empleado es empleado, y esta es ID de empleado. Yo sólo escogeré esto. Yo solo voy a elegir este letrero lo reemplazo, yendo aquí, escojo el siguiente. A lo mejor solo estoy escogiendo uno al azar, chicos, así que no hay ningún específico. Después el tercero. Todo bien. Entonces vayamos a nuestra fuente. Simplemente lo colocaré en, pero necesariamente no lo probaré. Entonces vayamos a nuestra fuente. Vamos a p fuente ordenada. Yo fuente ordenado aquí. Habla esto, serán cuatro, cinco. Entonces vamos a cinco. Sí. Por último, queremos elegir identificación de empleado también otro o Jefe de seis porque eso es básicamente lo que usamos. Recuerda, así que terminamos. Entonces esto se han guardado con éxito, ¿verdad? Entonces con esto dicho, volvamos en el siguiente video para probarlo realmente. Nos vemos en el siguiente video. 75. Prueba de encabezados (sin QueryParam, sin PathVariable): Oigan, chicos. Un último bit, recuerda cuando estamos probando para los empleados de fetch aquí como argumento, necesitamos actualizar esto Esto es para cuando estaba probando o desarrollando este costo. Simplemente entraré y solo colocaré en la identificación del empleado, solo elijo tres al azar también. ¿Solo escoge esto? Solo entra de nuevo y elige esto aquí. Fresco. Por último, elegí esto. Y eso solidifica todo lo que tenemos que hacer. Recuerda que colocamos nuestros encabezados aquí, te mostré dónde colocarlo en cartero, que ya solías hacerlo, y tenemos que ponerlo en un. vamos a probarlo. Ya hemos hecho esto vamos a buscar empleados usando encabezados, ¿verdad? Genial, chicos. ¿Ves que realmente somos capaces de conseguir esto? Esto funciona con precisión. De hecho, podrías seguir adelante para mover cosas que no necesitas tal como nos da el power graph queer y estás seguro de obtener lo que necesitas. Recuerda, tenemos tres en cuanto a empleados y cuántos obtienes uno, dos y tres, es el número tres. Esto es genial, chicos. Para nuestra fuente, dije que no vamos a probar esto ya lo he hecho todo, así que simplemente lo golpearon. Sólo vamos a darle. Esto funciona. Nosotros solo pla Eda cuatro, un cinco, y esto funciona. Por último, para esto, vamos a darle a esto también. Veo que esto funciona. Estamos usando encabezado y encabezado y argumentos juntos. Verás, en realidad podríamos hacer que los emparejen y las cosas funcionen. Entonces solo te estoy mostrando varias variaciones en caso de que en realidad estés desarrollando tu aplicación para saber cómo mezclar Match cada una de ellas. Esto es básicamente todo. Ahora, Small podría haber preguntado, pero aquí hicimos algo falso, ¿verdad? Miras a nuestro controlador común. Para ello, esto es falso. Entonces, ¿y si elimino esto? ¿Qué va a pasar? Si me quito estas varillas pasan. Entonces, saquemos uno. Si nuestra lógica es lo suficientemente sólida es elegirla, si no, obtenemos un error. Así que vamos a probarlo. Entonces voy a quitar voy a desactivar esto. Entonces voy a deshabilitar el encabezado uno, ¿verdad? S Quiero componer, C. Dijo que quiero componer, no. Entonces como Encabezado uno no es componer, vamos a disparar esto y C. Así que busca empleados usando encabezados Como puedes ver, solo obtienes dos detalles. Entonces esto funciona con precisión, chicos. Esto funciona. Qué pasa con este tipo, eso es cierto que es necesario. Entremos. Entremos aquí. Déjame quitar una cabeza o dos también y vamos a disparar esta A. Vamos a disparar esto. ¿Verdad? Entonces esto nos da solo la última parte, ¿verdad? Esto da solo el bit final. Ahora bien, ¿por qué no obtuvimos ningún error aquí? Alguien podría preguntarse, ¿por qué no obtienes ningún error aquí? La razón por la que no obtuvimos ningún error aquí es porque, recuerda, especificamos, si no encuentras esto, dame una cadena vacía, ¿verdad? Entonces esta es la codificación defensiva. Entonces, si quieres recibir una cadena vacía, solo colocas una lógica alrededor para decir, si está vacía, probablemente a través de un error, cosas así. No vamos a hacer eso aquí, pero es sólo una idea. Si solo vas a esta parte, entrando en tu aplicación, entonces mientras te estás registrando, si esto es un nulo o si esto está vacío, entonces probablemente lógica para lanzar encabezados adquiridos o algo así, y eso funcionaría con precisión. Bien chicos, creo que hemos podido probar todos estos detalles. Muchas gracias por estar conmigo hasta este momento. futuro, vamos a entrar en algo súper interesado, que es la generación. Bien chicos, nos vemos en el siguiente video 76. Teoría de paginación en GraphQL: Oigan, chicos, es bueno tenerlos de vuelta. Todo bien. Es genial tenerte aquí. Todo bien. En esta sección, vamos a hablar nación pagana. Todo bien. Dada la palabra sobre los datos hoy en día, tenemos tantos conjuntos de datos por los que realmente tenemos que pasar. Por lo tanto, solo es adecuado para cada aplicación por la que podamos desplazarnos. Podemos elegir un pedazo y renderizar a nuestros clientes. Clines. Entonces la idea está dentro de un conjunto de datos, queremos poder tomar algunas partes o desplazarse por cada dato, y es por eso que tenemos el concepto de paginación para realmente paginar a través, para pasarlo paso a paso o en trozos o decir en Bien. Entonces primavera para gráfica Q o debería decir comencemos desde el core graph que Graph cure te da un concepto de paginación Voy a proporcionar esto en el enlace este, traerlo para que podamos ver exactamente cómo lo implementan. Esto puede parecer bastante extraño, pero estoy seguro de que haré todo lo posible para explicarlo realmente. Pero estoy seguro que también encontrarías la mayor explicación en el ejemplo de codificación que haría que las cosas se pegaran más. Pero sólo es correcto ver la documentación oficial. Entonces en caso de que quiera agregar algún concepto más a lo que voy a presentar para siempre podría encontrar documentación, nosotros para agregarle algunos detalles extra a la misma. Recuerden, solo voy a hacer solo un poquito de teoría para que luego podamos pasar por la implementación práctica y ustedes puedan ver cómo funciona. Ahora, voy a mantener esto muy corto. Ipaginación en gráfica QL. Hay que pensarlo en el concepto de lista enlazada, ¿verdad? Concepto de lista de enlaces. Conseguí esta imagen de gig para Gigs. Hay un sitio web gratuito para que puedas ver muchas cosas. Ahora, estoy buscando el concepto de lista de enlaces dobles. De esta manera, después de explicar el momento para luego entrar en la implementación del gráfico de prognación gráfica QO, esto tiene más sentido Vamos a repasarlo. Ahora bien, ya sabes en lista de doble enlace, había un concepto de anterior y siguiente. Ahora demostrarás que si tienes un anterior, si existe uno anterior, significa que no es el primer elemento. Pero si un anterior no existe, es no, se muestra es el primer elemento. la misma manera, si el siguiente no es nulo, demostrarás que no es el último elemento. Pero si es nulo, muestras es el último elemento. Ahora, teniendo esto en cuenta, ¿verdad? Entonces podrías hacer un siguiente y mostrarás al siguiente el acorde es nodo. Si el nodo está presente y no es nulo, se muestra y modela el dial realmente existe otro objeto. Y si puedes hacer una previa, siempre podrías hacerlo. Sólo se puede decir si hay un anterior o si hay un nido, para poder rastrear si en realidad estás al principio o al final. Ahora teniendo esto en cuenta, ahora vamos a saltar a la implementación de la generación de páginas para Graph QO Ahora, GraphQL tiene exactamente estos mismos conceptos. Se desplaza a través de los datos, teniendo en cuenta, hay un concepto de ahora mira esto, una página en para que tiene página anterior Tiene página siguiente. Si como página anterior es falsa, es el primer elemento que has escogido. Si la página siguiente es falsa, entonces es el último elemento. Teniendo eso en mente. Estoy tratando de usarlo para compararlo con el doble inkly para que realmente puedas entender Entonces también tiene un concepto de CSO. El concepto de CSO, la CSO inicial, la CSO final, media en un subconjunto Voy a traer de vuelta esto. En un concepto de datos, necesitas saber dónde cuesta, este es el elemento, dónde está tu cos en este momento, al que también podrías enlazar si tiene un elemento anterior o un elemento siguiente. Con esto en mente, cada uno de los datos con los que interactúes en este momento se llama borde. ¿Correcto? Tengámoslo en mente. Tendrías una serie, o debería decir una lista de borde de libro. Ahora en este ejemplo, están usando un libro como ejemplo. Si lo repasas y que quieres deletrear el detalle, hay un tipo llamado libro. Entonces para cada uno de los libros, son para cada uno de los libros, están diciendo, Oye, para la información de la página de este libro, ¿tiene uno anterior o tiene uno siguiente? Para que pudieras comprobar el principio y el final. Creo que esto en realidad lo deja muy claro chicos. Base podrías reproducir el video. Si soy demasiado rápido, en realidad podrías ralentizarlo y si soy demasiado lento, en realidad podrías subir la velocidad. Bien, ahora, este detalle completo, ¿verdad? El borde del libro que controla el nodo. Recuerda, mencioné también nodo mencionado en el concepto de lista de enlaces dobles aquí, cada uno de estos chicos es un nodo, cada nodo es el elemento, cada elemento con el que estás interactuando. Al regresar, ¿este nodo existe o no existe? Necesitas saber eso, ¿verdad? Ahí estás rastreando la página anterior y la semana siguiente. Y el CSO lo que estás usando para rastrear la posición, la posición dentro de la lista completa de elementos que estás rastreando, déjame traer esto de nuevo Vamos a repasarlo una vez más. Ahora podríamos tener cientos de datos. Ahora entre cientos de datos, sólo estoy recogiendo tres elementos. Estoy poniendo mi coso aquí, estoy poniendo mi cos aquí. Este es mi coso de inicio, este es mi coso final. Ahora bien, esto me está mostrando dónde estoy en el conjunto completo de datos. Ahora dentro de este conjunto completo de datos, mi coso de inicio y mi tobillo. Ahora tengo un concepto de, oye, este subconjunto de pierna es apenas tres, ¿tengo una previa? No. ¿Tengo un próximo? No. Soy capaz de rastrear los elementos o donde estoy en el elemento o el nodo por tiempo. El elemento o nodo se puede usar indistintamente. Creo que esto en realidad solidifica las cosas chicos. Cuando entramos en el ejemplo de codificación, esto va a dejar las cosas muy claras. Por último, ¿cómo se rastrea? ¿Cómo entiende el gráfico quel el concepto de paginación? Viene a través de este tipo llamado conexión. Tenemos un concepto llamado conexión que alberga todos los bordes, todos los bordes y dentro de cada borde ahora tienes el nodo o el elemento que estás rastreando, y la información de la página, que tiene un nido anterior, los inicios y el final Cso En resumen, chicos, ¿cuál es el comienzo conso ¿Cuál es el fin Cso Usa la Cso inicial y Final para elegir un pedazo de elemento dentro de un subconjunto completo Y una vez que tienes ese subconjunto, ahora usas tu nido anterior para saber dónde estás dentro de ese subconjunto. Espero que esto aclare a estos chicos. Esta es solo nuestra teoría, chicos. Sé que algunas personas simplemente no conectan teoría, lo cual es genial, ¿verdad? Pensé que debería mencionar esto. Entonces entraremos en ello y en realidad empezaremos a codificar, ¿verdad? Los veo chicos en el siguiente video. 77. Paginación, parte 1: Bien. No he pasado por esta teoría la última vez. Necesito mencionar esto, lo cual es bastante impresionante, ¿verdad? También hay otra manera que podemos implementar realmente la saginación Pero quiero mostrarte esto. Personalmente, tendrías una preferencia. Quiero mostrarte este paso un poco vigoroso primero para la cura de Gap. Ahora, me estoy riendo porque digo que es un poco vigoroso porque algunas personas tal vez no solo se conecten con el concepto Porque todo el mundo quiere tener que tomar el control de lo que estás codificando. Entonces en la próxima implementación, mostraré chicos una forma en que también podemos usar JPA para implementar la paginación Quiero mostrarte los dos lados cualquiera que sea la manera cómoda de usar Así que más cosas buenas por venir. Vamos a meternos en ello, y comencemos a codificar. Todo bien. He podido mostrarles cómo es esto. Te he podido demostrar que he podido mostrarte en teoría cómo lo vamos a tener. Ahora vamos a saltar al código y empecemos a arreglar las cosas. Ahora bien, lo primero que van a hacer, les presento chicos el concepto de paginación que mencioné en GraphQL, hay algo Tenemos que incorporar eso a nuestro PondXML. Ahora esto es muy sencillo. Tendremos un concepto llamado paginación de empleados o conexión de empleados, y eso es exactamente lo que vamos a traer Ahora, recuerden, la razón por la que tenemos las cosas arregladas aquí, el momento en que tenemos las cosas establecidas aquí, significa que estamos tratando de agregar algo al guión. MemorGuson olvida que estos son todos los detalles que agregas cuando traemos los escalares ENS porque no estaban fácilmente disponibles dentro implementación base o los datos más Lo mismo que vamos a hacer aquí, vamos a traer por escrito. Vamos a traer en él es un concepto de empleado empleado, conexión empleado. ¿Qué es la conexión de los empleados? ¿Qué queremos traer? Ahora, queremos traer ese concepto de paginación, esa conexión de que hablamos esa conexión es proporcionada por GraphQL, GraphQL dots relay, dots Entonces así es como es GraphQL, conexión de relé. Ya ves como es muy sencillo. Ahora, si estás trabajando con Gredo, si estás trabajando con Grado, puedes por qué especificar tu mapeo de tipos Incluso podrías hacer algo más increíble. Ahora bien, esto es genérico, pero si lo miras correctamente, te lleva mirarlo correctamente, toma en un tipo T. Así que para Grado, puedes hacer algo como GraphQL, GraphQL, relay Entonces tienes conexión. Después colocando dentro de él el concepto de conexión de empleados. Así es como lo vas a tener para la conexión de empleados de GED. Pensé que debería mencionar para los que van a estar desarrollando en Gedu que así es como se especifica porque este es de tipo C. También podría usar el tipo genérico, podría funcionar. Esto realmente funcionaría. De hecho, vamos a ceñirnos a Mave, que realmente desarrollando qué Ahora que traje esto, ¿qué es lo siguiente que se supone que debes traer? Tenemos que empezar a pensar en nuestro concepto de Voy a empezar a pensar en el concepto de traer la conexión del empleado, y ¿cómo sería la conexión del empleado? Bien, así que trajimos esto. Entonces ahora crearíamos vamos a crear algo llamado directiva, una directiva. Esa es la gráfica QL Gráfica QLs. Bien, entonces tenemos un concepto llamado directiva, y lo que queremos traer en este concepto llamado directiva es agregar es agregar una anotación especial, a que me gusta mucho que ustedes presten atención Probablemente estarás agregando una directiva de llamadas. Es una directiva, y la agregamos en la conexión. En la conexión, luego en los objetos. En cualquier objeto. Ahora, ¿qué es esto? Voy a colocar en un marcador aquí o voy a colocar en un comentario aquí y cómo agregas comentarios, puedes agregar comentarios de esta manera. Voy a comentar usando códigos de viaje. Ahora bien, esto es para paginación. Tenga en cuenta que esto es para paginación. Esto es muy importante, chicos. Esto es muy, muy importante. Esto es para paginación. Si esto no se hace, si no tienes esto, vas a tener errores. Ahora bien, ¿dónde se sentaría esto? Necesitas saber dónde se sienta. Necesitas acudir a tu entidad. Entonces ve a tu entidad, a la entidad empleada. Al final del día, ¿qué vas a volver? Vas a estar regresando al empleado, o vas a estar devolviendo el subcontratado porque esos son los dos detalles con los que queremos trabajar realmente Quiere ser empleado va a estar regresando al empleado o básicamente estará regresando el subcontratado, ¿verdad? Todo bien. Entonces, tengan en cuenta, chicos, esto es muy importante. Esto es muy importante. Entonces traerás una réplica de esto, trayendo una réplica de esto. Esta vez sin los implementos pero este va a ser empleado que coincide exactamente con el mismo nombre de entidad. Vamos a hacer coincidir este nombre exasivo de entidad. Por favor, chicos, esto resultaría en una flecha. Obtendrás la flecha. Si no haces esto, obtienes el error y el error sería, creo que lo deshice en alguna parte, solo lo estoy trayendo. Obtienes este error. El error indica que el empleado de campo no está presente al resolver la ventaja del empleado. ¿Por qué? Si intentas devolver la DTU del empleado, recuerda, cuando estés syping tu conexión cuando tu conexión está regresando, quiere vincular la gráfica QL, la entidad gráfica QL, esta entidad, para seleccionar esta con el tipo que creaste en tus scripts, que es DGs va a convertir realmente para a convertir realmente Si no encuentra exactamente el mismo tipo, resultará en este error. Tenga en cuenta que esto es muy importante. Sólo voy a poner en otro comentario y comentario es, estoy agregando esto esto para la paginación Para la paginación, de lo contrario, se produce el siguiente error. Adelante y pruébalo, intenta devolver solo esto sin devolver esto y verás el error. ¿Por qué no pudo? Probablemente podríamos simplemente traerlo para que podamos ver exactamente cómo funciona. Ahora bien, la directiva que trajeron aquí, esta directiva que agregó entonces entra aquí como el factor de conexión con este empleado. Vas a decir, quiero que este sea mi tipo de devolución por depaginación Cuando consulto tabla de empleados, devuelvo esto como la conexión. Si no encuentra este factor de conexión, esto se romperá. Obtendrás un error. Estoy pasando con mucho cuidado Gas Necesito pasar por el video una vez más y traer esto. Recuerda, también vamos a estar liberando la fuente. Nosotros teniendo lo mismo. Voy a entrar aquí. O como título. Vamos a sacarte. Voy a entrar aquí, traeré el deber. Ahora, ven aquí abajo. Aparente no estoy implementando esto. Me voy a poner solo subcontratada voy a traer la conexión artística Por favor, amablemente conozcan a estos chicos. Esto es lo estoy tomando paso a paso. En el siguiente video, voy a construir sobre lo que acabamos de hacer ahora. Los veo en el siguiente video. 78. Paginación, parte 2: Impresionante. Es bueno tenerlos de vuelta, chicos. Creo que podemos proceder de donde en realidad nos detuvimos. He podido conectar esto y también he podido conectar esto, que sería nuestra salida para la paginación Ahora pensémoslo. Tenemos que consultar. Cuando estás paginando, los principales activos o la principal belleza de paginación es que sabemos pasar algún conjunto de parámetros y si coincide y si existe, realmente quieres sacar esos detalles de tu base de datos y regresar a tus y regresar Para empleado, vamos a traer algún conjunto de detalles, por qué vamos a estar buscando. Recuerda, cuando estás haciendo una en Quete, siempre debes ir con entradas. Si vas a tener parámetros, habrá un conjunto de datos o lo que sea, un conjunto de datos u objetos, tiene que ser un Impute Recuerda, discutimos que en videos anteriores en realidad estamos haciendo nuestros bits de consulta o cuando en realidad estamos haciendo el bit de mutación. S cualquier cosa que estés trayendo debe ser un inque si quieres usarlo, si es un parámetro que entra en la aplicación, debe ser una Estamos teniendo imputes de búsqueda de empleados. Búsqueda de empleados imputes. Bien. Insumos. Creo que esto funciona. Todo bien. Entonces vamos a tener algunos datos, ¿no? Entonces, vamos a consultar por nombre. Va a ser una cuerda. Consulta vamos a consultar por DOB. Diré que comienza DOB. Entonces DOB empiezan a ser las fechas. Recuerdas lo que realmente vinculamos esa fecha hass? Por favor no se olviden chicos, fechas lo mismo que esta aquí, Fechas locales, ¿verdad? Así que sigo siguiendo exactamente lo mismo en lo que construimos. Construimos en el último video, así que solo estoy construyendo sobre lo mismo. Fecha fechas de inicio y fin de fecha de finalización. Significa que queremos buscar datos con un rango, justo un rango de bits de datos. Entonces vamos a hacer lo mismo aquí, s está bien. Entonces vamos a buscar por género. Digamos que queremos buscar por género. Ahora, por favor, recuerden que vamos a hacer que todo esto no sea obligatorio. Yo para no ser obligatorio, que en caso de que ninguno de ellos coincida, todavía obtengamos algún conjunto de datos, probablemente los primeros diez o los primeros 20, ¿bien? Después, a continuación, vamos a consultar por salario. Recuerda, solo estoy tratando de que esto sea lo más flexible posible. Puedes consultar por cualquier cosa, cualquier columna que exista en tu base de datos yo sueldo de, quiero un rango. Al parecer no es diciembre grande, y voy a decir salario también. Sueldo también. ¿Bien? Esto funciona. También usa un decimal grande. Bien, entonces voy a decir ge, empieza. Entonces usaré un int positivo. Recuerda, si solo revisas esto correctamente. Entonces si ves edge es positivo int. Estoy siguiendo la misma estructura. Diré H fin. Solo quieres establecer, es lo mismo que de te , ¿verdad? Lo mismo, pensé que lo agregas. Terminó, ¿verdad? Entonces esto también es positivo int, ¿verdad? Entonces, por último, usemos una fila, fila, el papel del empleado. Así que esto es genial, ¿ verdad? Esto es bastante genial. Ahora, creo que esto es básicamente todo lo que necesitamos, pero voy a agregar una cosa más aquí, que volvería a explicar más tarde chicos. Volveré a explicarte esto. Ahora, solo quiero seguir adelante y terminar todo lo que tenemos que ver con el escocés para que cuando volvamos, solo estemos haciendo más implementación de código Vamos a tener un tipo llamado paginación de empleados. Por favor, no se confundan, chicos. Este es el Esto es para el Bien, voy a simplemente seguir adelante y luego explicar, ¿verdad? Tener conexión con los empleados. Ya ves cómo entra la conexión. Esto parecerá como si se estuviera rompiendo, pero notas, chicos, no se está rompiendo. Conexión de empleados. Disbuir. Es una resolución. Pero al igual que no se reconoce, pero es una resolución. Entonces página Int, ¿verdad? Obligatorio. Vamos a decir talla. Int. Volveremos a esto, luego a la página total. Estás familiarizado con la paginación, te darás cuenta de todos los detalles, el uso de la paginación en HTTP normal, Y por último, voy a decir elemento total. Esos elementos, debería ser largo porque va a ser podría ser bastante largo. Ahora, voy a agregar estos detalles en. No nos preocupamos por estos tipos, pero déjeme ponerla comentando aquí. Esta será la implementación para la paginación de JPA. La pregenación de paginación JPA estará bien. Así que recuerda que estamos tratando de pasar por el concepto de progenación gráfica donde estamos usando la conexión de borde, Esto en realidad caerá en JPA. Este es el segundo aspecto del que estoy tratando de hablar. Así que adelante implementar las primeras partes. Entonces éste para que todo esté disponible, entonces volveré a explicar esto de verdad. Bien. Entonces con esto hecho, veamos entonces a los subcontratados Para externalizar, ¿por qué quieres consultar? ¿Todo bien? Simplemente pausaré rápidamente el video, y rápidamente traeré eso para que en realidad no dediquemos tiempo codificando. Bien. Todo bien. Entonces entrar en realidad, es lo mismo, ¿verdad? Acabo de agregar lo mismo, que es la imputa de búsqueda subcontratada, eso es lo mismo que hicimos por el empleado Pero agregué algo extra. Si miras esto, estoy agregando algo llamado stim putes Este tipo de entrada es básicamente quiero saber el campo por el que quieres ordenar y la dirección que queremos ordenar Y esta dirección definitivamente será una enumeración. Hagámoslo innum Podemos tener dos direcciones podemos ordenar, yo lo llamaré tipo Dirección. Entonces los dos, que o bien serán ascendentes o descendentes. Recuerden, estoy usando deliberadamente comercio y no lo uso porque no importa. Si decides agregarlo, decides no agregarlo. Quiero demostrar que lo estás usando o no usarlo no hace ninguna diferencia. Podrías agregar una lista de ciertos puts, es decir, podría decidir decir que quiero sofocar con muchos campos o campos diferentes Por eso lo estoy haciendo una lista aquí. Para cada uno de ellos, estoy diciendo que también quiero una dirección ascendente o descendente, así que en realidad va a traer todo adentro. Bien, así que hemos podido traer todos los detalles que necesitamos, ¿verdad, para el guión, verdad? Entonces vamos a construir y empezar a ver cómo todo se junta. Saben, chicos, si construyen ahí mismo, esto va a fallar, ¿verdad? Esto básicamente va a fallar y ¿por qué? Porque recuerden, tenemos esto estamos usando constantes de excavaciones En el momento en que comencemos a construir o empecemos a compilar, ya no encontrará esto. Entonces de la misma manera, coméntalo. Comentar hacia fuera. No tenemos que hacer esto en producción, así que no tengas miedo. Es solo con fines de desarrollo. Pero en el momento en que termines con todo lo que necesitas hacer, entonces simplemente puedes dejarlo B y básicamente funciona. Sigamos adelante y construir.vn compilar. Creo que quiero cancelar esto. En primer lugar, sí. Quiero eliminar la carpeta de destino. Recuerda carpeta de destino, también nos das algunos problemas. Sí. Yo sólo voy a seguir adelante, compilo. Espero que esto no se rompa. Todo va a necesitar ser traído. Se va a hacer realidad, se va a hacer realidad. Bien, creo que todavía tenemos algunos detalles. Ahora, estamos diciendo que la referencia al empleado es ambigua. referencia al empleado es ambigua porque la referencia, vamos a arreglar esto Como puedes ver, la razón es porque tenemos esto en nuestro mapa en YouTube y nuestro mapper DT no conoce al empleado del que estás hablando Recuerda, este empleado es para la entidad, vamos a traerlo entidad, no el de Cogen El de cogen que añadimos al guión es para chicos de paginación, estrictamente paginación Esto va a estar haciendo referencia a esto internamente. Entonces vamos a seguir adelante y traerlo para entidad. Todo bien para que las entradas puedan funcionar en consecuencia. Lo mismo aquí, nuestras fuentes se quejarán. Estás trayendo para entidad, ¿verdad? Eso fue lo codificamos en.TS para entidad. Me alegro de que esto esté ocurriendo para que podamos ver exactamente en caso de que tenga este problema, no use uno para cogent Recuerda el que agregamos en los scripts que en realidad está componiendo bycgents para la paginación Lo estoy estresando para que no me pierdan los puntos. Todo bien. Ahora traje esto. No creo que nada deba romperse de nuevo. También tenemos un establo poblar. Vamos a arreglar rápidamente ese establo poblado.Esto también se queja. Esto es para entidad. Entidad, cualquiera que otra otra vez. Esto es para entidad. Entidad. Bien, así que esto se ha aclarado. Entonces cancelemos, saquemos esto y construyamos una vez más. Estoy seguro de que ahora deberíamos estar bien. Compilar VN. Eso está pasando por compilar VN. Estaba tratando de compilar todos los detalles. ¿Tenemos algún error? ¿Nosotros? No, no tenemos ningún error. Impresionante, chicos, los veré en el siguiente video. 79. Paginación, parte 3: Hola, chicos, genial tenerlos de vuelta. Recuerda, en realidad construimos la última parte. Hicimos un MBN compilar este campo, solo estoy tratando de resaltar lo que pasó en el último video este campo porque ahora hemos agregado en algunos detalles extra, que es que agregamos algo llamado el empleado nuevamente La aplicación no sabe. Nos estamos refiriendo a la entidad o refiriéndonos a esto, tenemos que especificar para la entidad. Si bien esto es estrictamente para paginación, también es estrictamente para paginación Estos tipos obtienen la diferencia. Esa es la diferencia, chicos, no la mezclen. Y somos capaces de compilar. Recuerda encomiar esto para que podamos compilar sin éxito Voy a traer todo esto de nuevo. ¿Verdad? Por compacto, por lo que ya no debería romperse. Impresionante. Impresionante. Entonces ahora tenemos todo esto hecho. Creo que es genial y ya es hora de que empecemos a marchar las cosas Impresionante, chicos. Impresionante. Entonces ahora, ¿cómo quiero comenzar? Ya hemos traído todos los componentes que necesitamos. Trajimos todos los componentes que necesitamos. Creo que ya es hora de que entonces traemos cosas. ¿Qué es lo siguiente? Automáticamente, recuerda, tenemos que actualizar nuestra consulta. La consulta es lo que usamos porque aparentemente la paginación es una consulta, por lo que necesitamos actualizar nuestra Seguro que entiendes a los chicos del paso. Hagamos un desglose desde el principio. En primer lugar, agregué esto en, para que la conexión de los empleados entienda qué paginación lo que significa Eso en realidad se juega aquí. Cuando agregamos estos bits de paginación donde está la conexión del empleado Esta conexión de empleado no entiende qué conexión es, por lo que debe verificar a través y el mapeo será este relé porque esto es lo que almacena la entidad o los detalles o los nodos o el borde como GAF care lo llama a los clientes Esto es lo que en realidad lo vincula. También mencioné específicamente que esto debería ser para la paginación de JPA Vamos a hacer la paginación de cuidado GF, que va a funcionar y además queremos mostrarte otro que es el GPA tuvo que escribir rápidamente todos los guiones que tengamos todo adentro Entonces dejo un concepto llamado directriz directa es una parte de la conexión que utilizamos para la paginación Hay que especificarlo sobre los elementos de, hay que especificar en el tipo. Desea regresar a través de sus puntos finales o a través su gráfica Q a su servicio a través de la clave gráfica a sus clientes Por eso ves que creé estos bits y agregué esto en. Si bien este empleado es diferente de la entidad, sin embargo, sigue exactamente el mismo modelo, lo mismo que necesitamos que parece que parece una réplica de la entidad. Pero esto es lo que vamos a utilizar para la paginación. Impresionante. También para externalizar, hicimos lo mismo Entonces agregamos en la búsqueda impute aquí vamos a estar usando también agregado en búsqueda impute ¿Verdad? Bien. Entonces con esto hecho, ya hemos podido hacer todo esto. Vamos a agregar en las consultas serán necesarias, ¿ verdad? Serán necesarias las consultas. Entonces voy a decir paginación de empleados, paginación empleados Voy a usar la búsqueda de casos de palabras clave, que estará disponible y traeré entradas de búsqueda de empleados. Insumos de búsqueda de empleados, voy a estar tomando en la página, que será Int, ¿verdad? Y estoy tomando en talla talla, que también es int. Ahora bien, ¿qué significa página? Quiero un medio de talla. Cuando estés desplazándote, solo piensa en ello como un libro, ¿verdad Estás pasando por una cada página tiene un número. Cada página tiene un número, y en cada página tienes algunos contenidos. Lo mismo funciona aquí cuando estás desplazándote por el concepto de paginación Esta página es ¿qué número de página soy? Estás viendo todos tus datos o lista completa como un libro o como una lista o algunos elementos, estás desplazándote por ellos. Para cada página que obtienes por lo que necesitas saber el número de página y el tamaño total que deseas obtener en esa página. Estoy seguro de que en realidad ese concepto realmente funciona ese concepto realmente funciona. Con esto, entonces estaremos regresando la paginación de los empleados. ¿Verdad? Ahora bien, este es el segundo bit que estaremos implementando. El primero, que es el predeterminado para la gráfica QL, es lo que vamos a hacer aquí, que externalizó ¿Llamarlo subcontratado? Paginación. Los estoy usando como dos ejemplos diferentes así que veremos cómo funciona. Ahora bien, esto también tendrá un concepto de búsqueda porque queremos buscar. Estoy buscando por subcontratar imputes de búsqueda. Fresco. Entonces abrazará el concepto del primer elemento. Recuerden que hablamos de elementos anteriores, siguiente elemento, los últimos elementos. Esto exactamente será modelar a través. Tienes el primero en ser un int. Entonces tenemos después, que debería ser una cadena. Entonces tenemos concepto de último, que debería ser la tinta. Tienes el concepto de antes, ser una cuerda. Concepto ante una cadena. ¿Debería ser ethani qué? Conexión subcontratada. En caso de que Beanian subcontratara la conexión. Vaya, creo que no creé esa conexión subcontratada. Conexión externa. Básicamente tenemos que traer esto y veremos venir a Dialy Recuerde, el concepto es conexión subcontratada. No te preocupes por esto. el momento en que realmente implemente, identificará esta conexión subcontratada, lo que en realidad estamos tratando de sacar automáticamente Os voy a mostrar chicos en el próximo video. Bien. Entonces tenemos las cosas básicamente establecidas, creo que luego puedes entrar en esto a la API y llamemos a este controlador de paginación El controlador de donación, sigue a través de los mismos detalles. Sólo voy a robar esto. Voy a robar esto en. Bien. De hecho tenemos esto en. Ese es el primer paso. Ese es el primer paso. Entonces estaremos tomando todo de la externalización patronal Al parecer, esa es la guía que contendrá todo lo final empleado final externalizado Entonces los servicios de origen de empleados de servicio sean el tipo que traiga esto. Ahora, ya que hemos construido, estoy seguro de que en realidad podemos cablear las cosas. Vamos a conectarlo. Recuerda mi favorito un esquema de mapeo. Un mapeo de esquema. Entonces tenemos un nombre tipo. Un tipo serán constantes de excavaciones. Ese es el tipo de consulta. Impresionante. Entonces voy a tener un campo y cava constante. Esa es una consulta que es empleado de paginación de empleados. Paginación de empleados. No me compraron esto en. Vamos a crear este concepto. Esto estaría reflejado a estos chicos. Esto va a estar espejando esto Lo que realmente creamos aquí, esto va a reflejar esto Reflejar esto. Esto sería capaz de ver realmente, queremos este tipo quiero el nombre. Eso va a entrar. Voy a ser construido en un segundo. Vamos a entrar aquí. Esta es la primera parte y esto sería un concepto de paginación de empleados públicos Paginación de empleados. Después paginación de empleados. Eso es genial. Entonces vamos a traer en el entorno de obtención de datos Esto es importante, chicos. Hay que incluir esto. Hay que incluir esto al lado. Tienes que incluir esto lo siento, creo que lo entiendo correctamente. Sí, eso estaría dentro. Tenemos que llevarlo a la par de sus argumentos. Después a las discusiones. Argumento, luego valor. Recuerda, esto es opcional, pero puedes colocarlo en. Si no lo colocas, tu variable num tiene que coincidir exactamente. Voy a usar el concepto de opcional. También podríamos usar opcional. Quiero mostrarte que podríamos usar opcional, pero esto va a ser opcional, pero va a ser un empleado. Búsqueda de empleados impute. Empleado senchiput. Voy a llamarlo Búsqueda imputa. Búsqueda imputada. Bien. A continuación, y voy a traer el siguiente argumento. Va a ser una página. También es opcional. En el momento en que has hecho esto, no necesitas hacer el siguiente entero, la página. Bien. Por último, concepto de argumentos artísticos. Ser un concepto de tamaño, derecho, que también será un tamaño entero, ¿verdad? Esto, básicamente, si revisas coincide con esto. ¿Esto tiene sentido, chicos? Esto en realidad coincide con esto. ¿Todo bien? Entonces esto en realidad coincide con esto. Entonces es por eso que en realidad somos capaces de ver esto, ¿verdad? Entonces esto es chicos bastante chulos. Entonces esto ya coincide con esto. Muy bien, entonces este es un paso. Voy a devolver nulo por ahora. Devolver null por ahora, ¿verdad? Y los veré chicos en el siguiente video. 80. Paginación, parte 4: Oigan, chicos, genial tenerlos de vuelta. He seguido adelante para reconstruir, así que esto ya está bien, ¿ verdad? Esto ahora está bien. Recuerden, sí reconstruimos antes en el último video, no construimos el último video que quería decir. Al reconstruir después de escribir esto y luego reconstruirlo, esto realmente pudo localizarlo Así que básicamente podríamos ver esto ahora paginación de empleados Eso está bien. Eres capaz de traer cosas. Podríamos ser curiosos. ¿Cómo se ve la paginación de los empleados? Rápidamente vayamos a verlo e inspeccionarlo. Entonces comprobamos esto, vamos a comprobarme la paginación de empleados. Ves que tienes un concepto de conexión, y esto se ve como un tipo de conexión de relé gráfico. ¿De dónde viene? Recuerda que lo especificamos diciendo que conexión de los empleados debería ser esta. Si ves la conexión del empleado, hazla de tipo conexión, y ese es el mismo mapeo que realmente se hizo aquí. Eso es mapeo. Las conexiones de empleados de tipo esto. Por favor chico, así es como se junta. Entonces te voy a mostrar una vez más, recuerda que teníamos esto, Esto no sabía dónde encontrarlo. Pero al usar el mapeo de tipos que tiene este mapeo de tipo, podemos conectarlo entre sí. Quiero ser de conexión de relé Graph, y que seamos capaces de resolver. Bien, ¿y las otras partes? Que en realidad lo hicimos, recuerden, también hicimos tipo de imputas de búsqueda de empleados Entonces estás disparado para encontrarlo ahí y todo tiene un constructor si quieres usar el constructor, todo tiene un constructor que viene por defecto para ti. Todo bien. Dicho esto, creo que esto es bastante genial y luego podemos proceder con nuestra implementación. Impresionante. Voy a aclarar esto para que podamos continuar con donde paramos. Así que poder traer esto. Recuerda que esta es la segunda vez. Estoy estresando a estos tipos, por favor no se confundan. Vamos a hacer la paginación Q gráfica normal y paginación JPA Encuentro la paginación JP bastante más simple, pero bastante similar porque tengo el control total Pero para los kios gráficos alguien podría decir, no me agarro completamente esto, es decir voy a implementar ambos Este es el primer paso, pero todavía no vamos a tocar esto. Voy a centrarme en la segunda parte y ver cómo funciona. Conocí a algunos tipos que probablemente podrían encontrar esto mucho más simple. Cualquiera que funcione para ustedes, chicos. Voy a vender esquema y mi apelación. El mismo nombre de tipo lógico, tenemos DGS. La constante DGs debe ser un tipo quivtypequv o disco. Un tipo quiv, entonces tenemos el campo, que sería dgs constante, y vamos a traer en consulta, y vamos a traer en conexión subcontratada Paginación tercerizada, paginación tercerizada, paginación subcontratada . Eso lo vamos a ver en un rato. Entonces debería ser conexión pública. Así es como funciona, chicos. Aquí es donde entra. Esta es la pieza que falta, cómo usar la conexión. Conexión. Entonces estaremos afinando de tipo lo que externalizó Esto tiene sentido. Entonces llámalo paginación subcontratada. Paginación ahora a los parámetros, a los parámetros. Ahora, probamos para igualar. Vamos a traer en el entorno de obtención de datos. Esto es muy importante, chicos. Entorno de obtención de datos, el primer paso. Segundo, argumentos. ¿Qué estamos espejando Creo que tenemos que mostrar esto aquí porque en realidad no se vuelve confuso. Entonces esto es lo que estamos reflejando aquí. ¿Qué traje esta consulta? Sí. Eso es lo que estamos espejando Entonces trajimos nuestra suraginación. Tenemos que rellenar todos estos datos, ¿verdad? Entonces primer detalle, déjame traer esto y sacar esto para que podamos ver uno al lado del otro. Primer detalle, quiero de búsqueda de valor. Búsqueda de valor. ¿Mecanografiar? Bien. Búsqueda de valor. Entonces seré opcional. Quiero ser opcional ahora. ¿Qué estoy haciendo opcional? Para que en caso de que no exista, todavía podremos sacar algunos detalles geniales de ello, ¿verdad? Aún puedes paginar en él. Recuerda, tiene que ser opcional. Esa es toda la idea aquí, ¿verdad? Entonces tenemos nuestras imputas de búsqueda de fuentes. Bien, esto es genial. Yo lo llamaré imput ¿Imputa? Un argumento. Recuerda que el argumento tiene valor de nombre, me apegaré al nombre, a tu elección , lo que quieras traerlo como se le llama primero Voy a llamarlo primero, que es un entero. Entero primero, genial. Esto es bastante agradable. Auto completa, pero esto no es lo que quiero. Voy a traerlo hacia abajo. Yo me lo saltaría aquí para que sepas que es lo mismo. Voy a usar el tipo último. Este tipo dura. Escriba el último. Después en tament. Cuál es la siguiente cadena. Cadena para este tipo, que es después y antes, justo después y antes. Después creo que será mejor para después de todos modos, lo que funcione, luego cadena antes ¿Ves? De inmediato terminamos esto surgió. Esto surgió, tal vez lo completó. Voy a mover esto al grifo. Mi a vino solo quiero traer esto antes de esto. Entonces esto funciona. Pueden ver chicos, esto es bastante simple, en realidad hemos podido traer esto. Esto es bastante genial. Esto es bastante genial. Ahora ya ves cómo se conecta. Bien convirtiendo fuente de tipo apagando una conexión fuera de tipo fuente. Aquí es donde entra, ¿verdad? No sabe qué es esto, pero por qué estamos haciendo esto ahora puede inferir, puedo inferir. Esto es realmente genial. Podría decirse, cuál es la diferencia entre esto y la paginación de los empleados La diferencia es que esto está dentro de una clase o un tipo. Nunca voy a inferir de dónde viene esto. Por eso entramos a agregarlo aquí. Por eso lo agregamos aquí, esta conexión de relé GAF Q Yo sólo quería mostrarles una diferencia, chicos. ¿Bien? Porque está dentro de esto así que no sabes cómo atar. Pero esta es solo la respuesta. Ahora diga, ¿cuál es la respuesta? El argumento es una cosa importante que coincide y por eso pude inferir Ahora estoy diciendo que me des una conexión tipo. Dame una conexión de tipo tercerizar. Creo que hemos podido hacer esto con éxito. ¿Qué regresamos aquí? ¿Muy cool? Simplemente diga regreso, regreso, empleados luego punto externalizar búsqueda Búsqueda de activos. Esta la vamos a traer. Traeremos el imput. Voy a traer en entornos de obtención de datos. Te va a encontrar tan increíble ¿por qué? ¿Por qué lo encontrarías increíble? Tu hijo es porque te darías cuenta que no usaría esto en absoluto. Pero internamente, internamente, lo que les mostré chicos, documentación de Asgardi, déjame ver si todavía puedo sacarlo Lo que les mostré a ustedes Asgard es documentación, aún así podrá inferirlo T seguirá siendo capaz de inferirlo, ¿verdad? Y en el siguiente video, continuaría. Los veo chicos en el siguiente video. 81. Paginación, parte 5: Bien, volvamos a la documentación. Alguien podría hacerme una pregunta. Y la pregunta será, pensé que dijiste que deberíamos usar tiene anterior, así como esto. Debería ser tiene anterior H siguiente, tiene cursor. ¿Qué significa esto? ¿Significa que tenemos que hacer esto? No, no tenemos que hacerlo. Ahora bien, si lees atentamente la documentación , mira lo que dice. Dice, para tener conexión generador Ty, configurar lo siguiente. Esto se ha hecho por ti en springbot automáticamente. Automáticamente dije esto agregará la siguiente definición de tipo. Dijo lo anterior se sumará. No decía que hay que implementar. Dije lo anterior se sumará. Entonces internamente, esto debería generarse para que puedas igualar. Entonces, ¿cuál es su responsabilidad? Tu responsabilidad es ahora usar este tipo de consulta. ¿Entiende ahora lo que le estoy trayendo? El tipo quavy debe ser de tipo primero, que es de int, después de lo cual es string, last, que es int y antes cual es string. Mira la definición. Usted especifica primero y después argumentos para los clientes de embarazo hacia adelante para los primeros entens de una consola dada por qué el último y antes argumento hacia atrás, para el último para un CsoEquiendo dado la última consola que corresponde exactamente a esta misma cosa, la anterior, la siguiente, la coso de inicio y la La regla es que implementes esto, implementa el tipo que quieras, estamos implementando la externalización patronal En nuestro propio caso, agregarle el bit de conexión. Una vez que lo hayas hecho, es por eso que es capaz de reconocer una conexión estrecha. En el momento en que hayas terminado con eso, cuando estés cuaing asegurarte de usar este formato, estará buscándolo buscará esta estructura primero tras último Sinceramente espero que esto realmente tenga sentido, chicos. Por eso te das cuenta dentro de esto, si entras aquí, estamos usando primero tras último y antes. Así se relacionan. En el momento en que hayamos hecho esto internamente, sería capaz de ver, Bien, te vas de tipo conexión. Bastante genial. Te voy a dar la pagina info. ¿Puedes ver cuál tiene inicio curso o final anterior y como página? Esto es lo que obtendrás. Te he mostrado con la documentación por qué necesitas usar realmente este nombre exacto. De hecho podría cambiar, podría decidir no usar la imagen que puse en esto aquí no está en la mayoría, realidad haces esto y primero, lo llamas de otra manera. Pero esto porque no estoy usando el tipo de valor, en realidad estoy haciendo esto último antes y se debe seguir el nombre exacto. Esta es la diferencia, chicos, Ogther así es como se unen Debes entender este concepto. No es tu lugar. Para implementar realmente esto excepto que quieres crear tu propia cura gráfica desde cero, lo cual está bien. Pero no creo que quieras hacer eso quieres pararte en el hombro de gigantes. Ahora la regla es que dice en el momento en que tienes la conexión tipo, y esto se ha definido, lo cual se hace automáticamente para ti porque hice botas de resorte, bota de resorte auto configure para ti. Esto agregará lo siguiente para agregar lo siguiente. De lo que eres responsable es agregar esto y asegurar que tu conexión de libro esté realmente relacionada, lo cual es de conexión tabú ¿Cómo sabemos que es una conexión tabú? Si notas no lo dijimos explícitamente, más bien, dijimos que quiero que mi empleado sea de conexión tabú y le di una conexión Esto en realidad se traduciría en una conexión con los empleados. Estoy diciendo, oye, también quiero que esto sea de tipo conexión y que seamos capaces de lograr. Espero que esto quede muy claro, chicos. Me estoy tomando mi tiempo para explicar este meollo arenoso para que lo entiendas Por favor, vuelva a ver el video para que pueda ver cómo se unen Por favor tenga en cuenta, no voy a usar a estos chicos. No lo voy a usar. marcar esas palabras. Quiero terminar de implementar. Ves que las cosas seguirán funcionando por defecto porque para inferirlo una vez que entran, los datos están entrando, dice, Oh, tienes este elemento coincidente Impresionante. Yo entro y luego hago todos los ataúdes mágicos anteriores ¿Es el inicio neto así que el último CSO o el CSO final? Por favor, esto es muy importante, chicos. Todo bien. Hemos hecho todo lo que se requiere. Solo entremos y solo implementemos esto. Eso es básicamente todo lo que queda. Eso te parece muy interesante, te parece interesante, sí, también me parece interesante. Yo sólo voy a entrar. Y crea este método, increíble. Esto ha sido creado para nosotros. Impresionante. Esto ha sido creado. Nos está dando la conexión de type code gen, lo cual es bastante correcto, ¿verdad? Que básicamente está entrando. No, no quiero esto. Esto sería un gran error si realmente perseguimos esto. ¿De dónde vendrá el error? Recuerda, lo que queremos devolver es entidad, quieres devolver la entidad, no me confundo. Es la entidad que ha entrado aquí, la entidad que va a salir. Pero internamente, sería capaz de inferir, entonces conectaría Esto lo que estamos trayendo en esto estás trayendo, ¿verdad Esto es lo que está entrando, pero cuando se está volviendo al cliente, este tipo va a ser nuestro objeto que va a volver porque él es la conexión aquí. Por favor, no lo mezcles. Vamos a entrar y poner en práctica esto. Podemos seguir adelante e implementar esto. Recuerden, aquí tenemos varias cosas. Tenemos el aguijón y el s y los gustos. Les voy a enseñar a ustedes cómo usar cada uno de ellos. Vamos a entrar. Recuerda que es opcional. Sólo voy a decir si por entrada la búsqueda está presente. Haz algo. Si no está presente, al parecer no pasamos en ningún detalle. Entonces, si no está presente, vamos a darle un detalle por defecto. Voy a decir un reposito de origen no eliminar. Asurceposit Fino FinDO ahora, FinDO toma todos estos parámetros adicionales porque implementamos la especificación JPA y JPA. Todos estos vienen de la especificación GPA. Tenga en cuenta que los chicos vienen de GP specisfiction. Podrías meterte dentro Vamos con estos tipos. Simplemente te lo mostraré rápidamente porque necesitas saber qué estás usando y por qué lo estás usando. ¿Ves? Encuentra tex en especificación especificación, encuentra todas las tomas y toma paginación Esto será también toma un tex en texto de progenación de especificaciones Esta lata es spec Entonces si ahora vamos al repositorio de JPA y buscamos encontrar ¿bien? Busquemos encontrar, encontrar justo donde te sientas que vaya a paginación y seguro Vayamos a paginación y satinado, pagensatin paginación y cierta epsture Tienes que adentrarte en estas implementaciones de JPA para saber exactamente lo que necesitas Estoy diciendo que si no me proporcionas ninguna especificación, te voy a dar el primer elemento. Eso es lo que voy a hacer porque no quiero que pongas en cola mi base de datos, también que mis aplicaciones. Yo solo voy a seguir adelante y darte el primero , page request stuff. Así es como se corta el pagable. Paginable será una solicitud de página a página. Punto apagado. Alguien podría estar interesado en esto. Vamos a sacar esto para que veas tipo Gon de una persona cero, luego diez, que es el número de página en este. Entonces puedes ver, echa un vistazo a esto. Esto también puede tomar un SOT ahora mismo, digamos, dirección SOTs. Puntos, un fregadero. Hagamos un fregadero aquí, ¿verdad? Un fregadero. Es una estadística Entonces, ¿por qué clasificamos? Tenemos que decirte por qué estamos clasificando. Entonces voy a ordenar por el ID UU. Recuerda, esa es la identificación. Estamos usando UID aquí. Entonces voy a ordenar por UID. Entonces lo que voy a hacer es que voy a llamar a esto quiero hacer esto genérico pero lo voy a colocar aquí por ahora. Entonces solo diré UUID. Voy a externalizar esto más tarde. Así U ID. Entonces, si revisas vi en tipo, ¿ves? Es de solicitud de página, ¿verdad? Esto es de solicitud de página. Y como es de tipo solicitud de página, si lo revisas, solo un minuto. Entonces esta es solicitud de página. Ahora, si profundizas, entremos en el tipo Solicitud de página. Mira Página solicitud extep como solicitud de página. Verás, implementa pagable. Así que básicamente podría decir, así que la solicitud de página también es pagable Recuerden, la relación A, bien, porque está implementada. También podría decir, esto es un pagable. También podría decir que esto es un pagable, ¿verdad? Porque si lo miras, lo que está esperando es un paginable Veamos esto. Fijación de una página. Esto es de typede podría decir esto pgquts de tipo pagable. Es lo mismo chicos. Tenga en cuenta que solo está usando la relación Es. Este video se está haciendo muy largo. Déjame completar esto. Volveré en el siguiente video para realmente h esto abajo. Tenemos esto. Vamos a ensartar a través de la cuerda, las herramientas. Tenemos esto ya acaba de llamar a esto resultados. Los veré chicos en el siguiente video. 82. Paginación, parte 6: Oigan, chicos, es bueno tenerlos de vuelta. No completamos la última implementación. Nosotros somos capaces de hacer esto. Recuerda, necesitamos devolver el tipo de conexión. Ahora, hay un simple hay una clase simple que nos dio código, conexión simple, conexión simple. Esta sencilla conexión toma un tipo de datos de lista, va a pasar en resultados, lo cual está bien. Dot get.Aquí es donde nuestro entorno de obtención de datos viene en ganancias, esto se infiere, esto siempre está disponible en el contexto, y eso es lo que estamos Puedes ver si revisas la implementación, ves que este tipo sencillo implementa esto. Si quieres ir, si quieres entrar, veo que implementa la conexión, implementa la conexión. Chicos, así es como se junta. Ya terminamos con el primer bit. ¿Qué pasa con los segundos bits? ¿Y si está presente? ¿Y si está presente? ¿Qué quieres hacer? Entonces vamos a hacer, vamos a tener algo que se llama una especificación UT, que va a ser una clase de utilidad que va a tomar voy a decir pero órdenes SOT. Ordenar recuerda que pasamos en detalles SOT. Les voy a mostrar chicos en un minuto. Entonces voy a decir imputes consiguen SOT. ¿Correcto? Espero que esto devuelva una especie de lista. Los SAT bastante ordenan con las clases SAT ordenan. Espero que esto devuelva esto voy a llamar a estas órdenes. Derecha. Alguien podría decir, ¿Cuál es esta orden del SAT? Vamos. Recuerden a estos chicos lo que implementamos, que se puede encontrar aquí. Vayamos a lo largo de la salsa. ¿Recuerdas a estos tipos? Esto imputa dirección suave Sí, estamos entendiendo la dirección en la que estamos diciendo que podrías agregarle múltiples campos, ¿verdad? Entonces si los campos de propina que le estamos agregando, Oye, quiero que ordenes ascendentemente, esta descendente. Por eso te estoy dando esto como una lista aquí. Podrías tenerlo como lista en caso de que quieras ordenar por ciertas columnas en tu base de datos, así que para eso es para lo que sirve. Entonces entiende el caso de uso, sé exactamente cómo Field significa cualquier campo, tiene que ser un campo válido. Dale un campo que no existe, realidad te va a dar un error, ¿verdad? La columna debe existir. La columna definitivamente debe existir. Ahora que realmente he podido proporcionar eso, sigamos adelante y creemos nuestra especificación. Vamos a crear nuestro Spec UT, nuestro Specut. Para eso, ya que estamos haciendo una búsqueda, estamos haciendo una búsqueda, voy a llamar a esta búsqueda. Dentro de la búsqueda, voy a proporcionar nuestra especificación UT ahora, si notas correctamente nuestro sello especular, vamos a convertirlo en un plus final porque solo podría llamarse Cuando tienes una clase final, al parecer, ya sabes, una clase final nunca debería ser nunca debería ser nunca debería tener un constructor. Entonces el constructor, si intentas llamar a este constructor, voy a lanzar un nuevo, esto está bien. Pierna decir tiempo de ejecución solo nuevo tiempo de ejecución. Ti sesion, esto es clase ilitica, ¿verdad? No se pueden hojas instantáneas. Digamos, no se pueden instalar hojas. No se puede enfundar instantáneamente. Es obras. Por lo que no se pueden instalar hojas. Entonces, para esto, voy a mostrar mis órdenes de cama, ¿ verdad? Mis órdenes. Entonces para esto, voy a decir estática pública. Estática la lista. Recuerda lo mismo spect. SOT, Orden de puntos. SOT, sí. SOT, sí. Orden de puntos, sí. Ese eres tú vienes de la lista. Todo bien. Diré órdenes de Bud SOT. Recuerda que ese es exactamente el nombre de este nombre aquí. Pero orden de sal, ¿verdad? Orden de clasificación Bew Toma en una lista de imputas SOT. Imputa sal. Yo lo llamaré imputas de sal Eso es lo que se necesita. Ahora, voy a decir, si esto es nulo o está vacío porque podría ser nulo y podría estar vacío. Si es nulo o está vacío, solo quiero devolver una lista vacía, solo lo devuelvo collectis esa lista vacía Eso es todo lo que tenemos que hacer aquí. Entonces si no es eso, así que vamos a transmitir. Entonces haz esto, stream también podrías usar un bucle de cuatro, funciona. Voy a mapear. Vamos a mapearlo a cada fuente. Voy a mapearlo a esto para que en realidad sea corresponsal. Llámalo SRT Entonces dentro de esto, quiero decir que mi punto SRT obtiene dirección, nosotros obtenemos dirección, punto es igual Voy a verificar si la dirección es igual a la dirección de ordenación ascendente. Si es lo mismo, apuesta esto más apuesta esto. Estoy seguro de que entiende esto. Estoy usando diez Ayoperator voy a necesitar una especie AC. Ahora bien, ¿cuál es la propiedad? Recuerda, dijiste la propiedad más específica que estás pasando. ¿Cuál es la propiedad por la que quieres ordenar realmente? Voy a decir del mismo tipo recuerda que pasamos en algunos atributos. Estás pasando algunos atributos, va a ser SRT ¿Qué estoy haciendo mal? No se supone que sea capaz de ver esto. A ver. Oh, bien, esto está cubriendo esto. Esto no es lo que quiero. Por último, SLT, los puntos consiguen campo. Creo que tiene sentido ahora. Entonces aquí, si no está disponible o si es descendente, voy a decir SOT, puntos, o puntos descendentes Entonces todo esto, el ver, esto funciona. Entonces todo junto, ¿verdad? Entonces voy a volver a la lista. Impresionante. Impresionante. Se puede ver cómo funciona esto. ¿Qué hice? Déjame formatear esto correctamente. Vamos a formatear esto correctamente. Permítame hacer que esto traiga esta nueva línea y lleve esto a una nueva línea. ¿Qué hice? Todo lo que hice fue hacer streaming a través de esto Recuerda, ya proporcionamos esto en nuestro gráfico QLs ya campo y así dirección podrías verificar Lo mostré antes. Entonces sólo estoy revisando. Si la dirección que proporcionamos es ascendente, esa es la dirección suave que proporcionamos en num para proporcionar um para esa dirección. Está ascendiendo. Usa esto ahora mira esto. Esto viene de donde viene esto dominio de datos del marco de primavera de primavera. Esto no es de nuestra gráfica Qs. Si es ascendente ASC, ASM ascendente, entonces pon ahí el campo Si está descendiendo o ponlo. Sólo estamos tratando de ver la dirección establecida. Eso es todo lo que tenemos que hacer aquí chicos. Cuando volvamos aquí, entonces puedes conectarlo por cable. Impresionante. Se puede ver que esto funciona. Esto funciona de manera apropiada. Bien chicos, creo que esto ha sido bastante perspicaz Creo que entonces podemos entrar y luego terminar nuestra implementación. Ahora tenemos esto, no lo es. Con esto, ahora tenemos esto. Vamos a resumir rápidamente termino antes de que este video realmente se alargue demasiado. Ahora obtenemos nuestro punto de depósito externalizado find Final, entonces, recuerda, nuestros FinDots en detalles, ¿cuáles queremos usar? Voy a usar algunos ciertos detalles, los cuales solo les voy a mostrar ahora mismo diciendo subcontratar externalizar, punto, Bud, subcontratar params de búsqueda subcontratados Ahora vas a encontrar esto interesante. Esto no es nada complicado, y te voy a mostrar por qué se consiguen los puntos imputes Solo estoy dibujando un método estático para poder luego ver si cada uno de los parámetros realmente existe o no. Eso es lo que voy a hacer aquí. Entonces si es así voy a pasar en los tipos puntos por los demás. Esto es lo que estoy regresando aquí. Voy a devolver a este tipo. Si está disponible o no disponible. ¿Con qué se correlaciona esto? En realidad se correlaciona con nuestra especificación, especificación y fuente. Esto es lo que estoy usando. Aquí es donde ahora vamos a aprovechar el poder de la especificación de GPA Esto va a ser interesante. Es muy interesante. Por favor habla conmigo el siguiente video vamos a completar esto. Lo que voy a hacer finalmente, sólo voy a volver a externalizar aquí Tercerizar. Ahora llama a esto resultados. Esto es lo que vamos a estar regresando va a estar regresando esto. Los veré chicos en el siguiente video. 83. Paginación, parte 7: Oigan, chicos, es bueno tenerlos de vuelta. Todo bien. De hecho empezamos con algo muy interesante. Mientras estamos haciendo la búsqueda, les mostré a ustedes cómo devolver esto rápidamente si esto no está presente. Ves que estamos usando la conexión más simple y esto fue realmente genial. Ahora, te mostré cómo la solicitud de página también es de tipoageable Nosotros ginebra y podemos ver esto y estamos en condiciones de verificar. También es tipo paginable. Por eso podría traer aquí depagable Si usa el hallazgo y el hallazgo que proviene del texto JPA Potry en la paginable, y es por eso que podemos hacer esto y esto Estás diciendo, si no damos ninguna búsqueda put, dame esto. Recuerdo que esto es opcional, bien, así que dame esto. Y por eso si notas de cerca, si miras esto, quiero notarlo de cerca, no hice nada de esto obligatorio. Entonces ahora para esto, estoy diciendo dame una lista de Imputs Creo que debería estar bien. Ni siquiera debería haber hecho esto obligatorio, está bien. Procedamos si nos da un error o lo movemos. ¿Bien? Entonces y luego volviendo aquí, lo veo para completar ahora entrando y creé algo llamado el orden de clasificación B, y esto es muy simple. Todo lo que digo es que estoy pasando si está vacío, dame una lista vacía. Si no está vacío, solo entre, verifique la dirección, luego verifique si es igual a esto. Después usa la implementación desde el dominio de primavera, y comprueba si esta ascendente, obtén el ascenso y obtén el campo por el que quieres ordenar Si la mayoría de lo demás obtienes un error, de lo contrario obtienes descendente, en realidad usas ruta descendente, y así es como lo hicimos aquí y realmente somos capaces de redn esto Estamos en condiciones de implementar esto ahora estamos en esto. Ahora para esto, ahora queremos usar la especificación JPA. Nosotros una vez con especificación GPS. Ahora, verás lo hermosa que es la especificidad del GPS porque la razón por que me encanta es porque me encanta lo que puedo controlar, me encanta lo que puedo controlar Estoy tomando estas imputas. Ahora voy a pasar por cada elemento si existen, o si no existen, entonces para lanzar el error apropiado o para construir apropiadamente. Ahí es exactamente donde vamos a lograr en este video. Voy a entrar. Así que voy a entrar, ¿verdad? Yo llamo a la ¿Cómo volví a llamar a esto? Bien, lo siento, llamo a esto búsqueda subcontratada, subcontratada. Vamos a buscar consulta de origen. Consulta de búsqueda, ¿verdad? Obtuve consulta de búsqueda. Así que entremos y creamos nuestra consulta de búsqueda externalizada. Entonces dentro de esta búsqueda, voy a crear dos paquetes. El primer paquete será para empleado, que sería para la otra paginación JP y estas otras partes Que va a ser subcontratada. Así que separemos las cosas, ¿verdad? Entonces para esto, dentro de este tipo, voy a agregar mi consulta de búsqueda externalizada, que sería externalizar, consulta de búsqueda Impresionante. Entonces mi consulta asociada, voy a convertirla en un componente, ¿verdad? Va a ser un componente porque quiero conectarlo por cable. Por favor, chicos, recuerden usar palabras clave menos estáticas en su aplicación. Todo lo que sea estático permanece en la memoria durante todo el ciclo de vida de la aplicación. Entonces , por favor, recuerda eso. Así que trata de hacer que las cosas sean componentes o que sean fácilmente basura recolectada cada vez. No es caro crear estas cosas, lo cual está bien, ¿de acuerdo? Así que trata de usar menos palabra clave estática. Entonces, lo primero que quiero hacer, recuerda que aquí usamos algo muy clave. Bueno, no. Sí, yo yo nuestro servicio. Entonces esta parte, quiero externalizarla. Quiero externalizarlo y traerlo aquí. Lo llamaré PFS, PSFSPublic static Yo lo llamaré externalizado. Subcontratar la llamada UID, ¿verdad? Voy a pasar esto aquí. Bien, para que luego pueda usar esto directamente aquí. Eso tendría tanto más sentido, ¿de acuerdo? Bien, así que esto funciona en lugar de solo usar la cadena directamente. Entonces ahora tengo esto, lo cual es genial. Ahora el siguiente paso es que voy al público una especificación pública. Ahora entiendes de dónde viene. Especificación, luego externalizar. Recuerda eso así que estamos esperando externalizar. Se necesita para ser la entidad, al parecer porque la especificación tiene que ver con entidad, el dominio, dominio JPA Así que vamos a volver aquí. Ahora, lo llamaré, ¿cómo llamaste a esto Construir params de búsqueda externalizados Voy a traer esto en Build outsource search params. Bien. Todo bien. Bien, entonces toma en nuestra búsqueda externalizada imputa. Yo lo llamaré imputes por simplicidad. Ahora bien, ¿qué vamos a hacer con esto? Así que síganme chicos, comencemos. Entonces digo especificación. Especificación Externalizar especificación, esta así que sea la parte inicial Llámalo especificaciones, ¿verdad? Ahora, voy a decir tercerizar tercerizar Primero, tales especificaciones tales Aún no tenemos este UUID. No. Tenemos que asegurarnos de que el UUID no es porque sabes que el UUID siempre debe estar presente Recuerda, siempre debe estar presente. Asegurar no es nulo. Ahora, ¿de dónde viene este tipo? Os voy a mostrar chicos en un rato. Ahora, el siguiente paso, todavía necesitamos subcontratar especificaciones de búsqueda para prácticamente todo lo que quiera hacer aquí Entonces ahí es donde necesitamos entrar rápidamente y crear nuestras especificaciones de búsqueda de fuentes. Ahora, estoy separando a este tipo para que puedas entender la dinámica de cómo funciona todo, ¿verdad? Para ello, habrá una clase final. Una clase final, por favor síganme de cerca chicos, síganme. Al parecer, no se puede encerrar instantáneamente esto. Si lo crea una instancia, la rotación, la excepción de tiempo de ejecución no se puede crear una instancia, tiempo Una vez salvo que me instancien. Ahora, el primer paso, la especificación estática pública. Voy a estar recogiendo los campos uno por uno. Miradme chicos. Yo me agué. Yo fuente entidad, UUIDnu UUID, no nieve De aquí es de donde viene. No hay nieve, ¿verdad? Ahora bien, ¿qué cont esto? Voy a decir regreso. Para la especificación, usa esto. Utiliza lo que llamamos constructor de criterios, constructor de criterios. Y verán cómo funciona en los pedacitos, chicos. ¿Bien? Sólo me sigues de cerca. Es lo mismo en todas partes. Ahora, Criteria Builder Cb dots contiene prácticamente todo lo que harás si estás escribiendo una consulta nativa. Hay como, ¿verdad? Hay entre, no hay. Ahí está el, ahí está el. Cualquier cosa en consulta nativa que quieras escribir está ahí. Para eso es la prescripción de JP. Toda la dinámica de lo que quieres verificar entre fechas y similares está presente en el uso del constructor de criterios, y eso es lo que vamos a hacer. Voy a decir que no es nulo para esto, ¿verdad? ¿Qué es? ¿Qué estamos comprobando? Estás comprobando la identificación. El ID no debe ser nulo, que es exactamente lo que tenemos aquí. Ahora, si ve, esto se ha resuelto. Todo bien. Genial. Entonces tenemos que terminar algunos pasos extra, ¿verdad? Apenas estamos empezando. Entonces voy a recoger el siguiente que voy a decir público Público. Lo siento, esto se estaba descarriando. Quiero ser turno aquí. Perdón, ¿dónde estaba? Lo siento, Harry, me perdí el punto. Aquí era donde estaba yo. Va a ser público. Sí. Voy a decir nombre contiene. Voy a estar usando el, ¿verdad? Entonces, ¿cómo funcionaría esto? En realidad, voy a decir cadena. Nombre palabra clave. Nombre palabra clave. Ahora, alguien podría estar confundiendo. Sinceramente ya no entiendo lo que está pasando. Sí, puedo llegar tarde. Lo que voy a hacer, voy a entrar aquí. Voy a traer a este tipo lo voy a mostrar en el costado. Vamos a escupir. Dividamos a este tipo a los derechos. Discurso de apertura escribe, dónde está el discurso esta es la derecha dividida. Mientras estamos desarrollando, básicamente podrías entender cómo estamos realmente cableando las cosas en. Ahora estoy en el nombre, voy a escribir algunos criterios sobre el nombre. Voy a ir a fecha de nacimientos. Paso a paso, eso es lo que estamos haciendo. Los veré chicos en el siguiente video. 84. Paginación, parte 8: Oigan, chicos, es bueno tenerlos de vuelta. Ahora, continuemos desde donde paramos. ¿Qué es este UID? UUID es la columna de nuestra entidad Recuerda, es una columna de nuestra entidad. Queremos asegurarnos de que sea lo que sea que estemos buscando, el UUID no sea nulo. Por eso tenemos esto. Siguiente paso, tenemos que asegurar ese constructor de criterios para el nombre, ¿qué queremos hacer con el nombre? Queremos conseguir un nombre que se vea así. No queremos la coincidencia exacta. Podríamos decir que queremos la coincidencia exacta, pero al menos quiere ser un poco flexible. Viene aquí, mismo constructor de criterios. Ya les dije, nada cambia. Mismo concepto, ¿cómo el constructor de criterios? Sí, C B L, se puso como. Estoy seguro de que esto lo está consiguiendo ahora. Ahora bien, cuál es el nombre es la figura del nombre. Cuando hacemos esto, eso ya lo conseguí para mí. Ves, así es exactamente como se ve. Quiero que esto cante, chicos. Para aquellos que realmente revisan, vamos a sincronizar un poco, ¿de dónde viene este nombre El nombre aunque estamos diciendo la palabra clave name. Este teclado de nombre es lo que viene aquí. Estamos diciendo que cualquier nombre que esté pasando por nuestra búsqueda de entrada debe ser exactamente como algo que se parece la entidad, Este nombre. ¿Correcto? Recuerden, digo que esto es una base de datos. Estás consultando tu base de datos, estás escribiendo una consulta nativa, pero más como la estás escribiendo en código, y es por eso que esta carta CB Bida contiene todo lo que podrías querer pensar en la consulta nativa Así que por favor vuelve a ver estos videos en caso de que estés confundido, necesitamos retomar este punto poco a poco. No te quedes al principio, sino que una vez escuchas cómo lo he dicho, y lo que en realidad estoy diciendo, entras naturalmente poco a poco. Ya sabes, si quieres escribir una consulta nativa, lo que vas a hacer es esto probablemente decir seleccionar estrella de decir externalizar, decir la estrella de externalizado Asurce digo O W O punto nombre, y haces esto, ¿verdad? Y luego pasar digamos Ezekio. Tú haces esto. Eso es exactamente lo que estás haciendo aquí. Esta palabra clave de nombre es lo que está pasando aquí. Debería estar entre dos ampersands, entre dos ampersands, perdón, entre dos por ciento, quise decir así un por ciento este es por ciento Esto es un porcentaje. Sí. Entonces entre dos porcentajes, ¿verdad? Estoy pensando. Voy a estar teniendo voy a estar teniendo esto para ser muy repetible. Vamos a estar haciendo esto. Voy a estar haciendo mucho como. ¿Debería quedarme con esto? Para alguna otra parte, ¿ tenemos esto? Hagamos algo genérico aquí. Hagamos algo genérico. Lo que voy a hacer, iré a mi spectil. Vayamos a mi spect y creamos algo más genérico. Probablemente podría tener eso. Decimos que la cadena estática pública contiene, llamemos que contiene contiene la palabra clave de cadena, que es la palabra clave. Sí. Palabra clave. Digamos que giramos formatos de mensaje. Hay un formato de mensaje en Java texto Java, formatos de mensaje, algo así. Pero no exactamente lo que quiero. Formatos de punto, formatos. Diré, dame porcentaje, ¿verdad? Entonces reemplace lo que esté en esta columna, que en este corsé genial con la palabra clave. ¿Cómo tiene sentido eso? No tenemos que estar escribiendo esto, sea lo que sea que tengamos lo coloques así que va a ser colocar detalles para todo este marcador de posición y emparejarlo en el medio Entonces con esto hecho, ¿cuál es la belleza ahora? ¿Cómo puedo usarlo? Entonces la belleza es que entonces puedo entrar aquí, ir a mis especificaciones de subcontratación En lugar de poner esto en, voy a sólo puntos especulativos especulativos contiene, sólo estoy pasando mi palabra clave nombre Espero que esto tenga sentido, chicos. Cuando tengas esto esto va a venir aquí y para reemplazar esto y nosotros tendremos eso. Si compruebas el formato del mensaje, comprueba la definición. A veces solo necesitas ir rápidamente en el cheque la documentación. Dice, cresta el formato del mensaje con un patrón dado es a formatos, argumento dado. Ahora mira esto. Esto equivale a esto, esto, esto, esto. Giramos el objeto pattern strings a formatos. Básicamente, convierte la cadena de formato. Eso es todo lo que hace. Yo solo reemplaza eso reemplaza. Pensé que debería mostrarte esto otra cosa del código. Creo que un metal compartido. Todo bien. Eso es si no lo sabes ya. Es broma, chicos. Todo bien. Entonces, ahora que tenemos un poco, así que te estoy mostrando formas geniales de poder tener a Impute Entonces sigamos adelante y hagamos algo extra. Entonces terminamos con la palabra clave name. Creo que quiero traer de vuelta a este tipo. Oh, volvamos. Buscar imputa, dividir derechos, sacar esto, quitar esto y volver aquí Todo bien. Entonces ahora tenemos esto, ¿verdad? Los empleados establecen especificaciones. El siguiente paso, lo hemos hecho por nombre, qué es lo siguiente que estamos trayendo Estamos trayendo en fecha de nacimiento comienza y fecha de mal final. Entonces ese es el siguiente que queremos hacer. Recuerda que ambas son fechas locales, ¿verdad? Así dicen público, También es especificación en estos momentos. Voy a llamar a esto DOB entre Little bit entre ¿ entre qué? A fecha local una fecha local comienza DOB. Yo sólo voy a mantener el mismo nombre. Comienza el DOB. Me estoy tomando mi tiempo para pasar por estos tipos porque no lo quiero. Quiero que seas capaz de entender este concepto de especificación de canto luego puedas seguir adelante y luego ser muy, muy creativo. Eso es que me estoy tomando el tiempo para explicar esto poco a poco. Ahora, si voy a pasar por cada paso, no voy a saltarme ningún video aquí. No voy a seguir adelante, probablemente escribo en la ganga. Voy a pasar paso a paso. Entonces para cuando termines, ahora empiezas a entender porque habrías repetido algunas cosas una y otra vez, empiezas a pegarte, luego empiezas a entender cómo funciona. Voy a hacer regreso. Regreso, lo mismo. Recuerda, no cambia o caba no cambia. No cambia. No cambia. Creo que se me olvidó mencionar esto. Cuando estás usando entity, entity es lo que usaste para obtener el nombre del campo. Lo siento, creo que olvidé que me salta. Carta Buda es lo que parece tu consulta nativa, que en realidad puedes usar cualquier orperación de consulta nativa La entidad es como obtienes algunos otros detalles sally tus nombres de campo. Esto funciona. Entonces datos B ahora. Para esta parte genial para la fecha, también tenemos puntos entre. También está ahí. Vea cómo tiene sentido, chicos, y los datos B comienzan todo. Te amo para completar. En realidad ha podido obtener esta información pero no la llamamos DOB El campo de entidad se llama fecha de nacimiento. Se llama fecha de nacimiento. ¿Podemos confirmar, por favor? Vamos a confirmar. Vienes aquí, ves que se llama fecha de nacimiento, su mayor coincidencia con este nombre exactamente. Si estás usando una columna y cambiando el nombre, no coincide exactamente con ese nombre. ¿Es este nombre, fecha de nacimiento? Fue partido completamente chicos, eso es lo genial. Esto es genial. Creo que entonces podemos proceder. Ahora, por favor, tengan en cuenta, chicos. Estoy segura. Puede notar una discrepancia aquí. La pregunta es, ¿se supone que esto son fechas, recuerdas? Esto va a ser cambiado a caso serpiente, Fechas subrayado de subrayado Esto es lo que va a quedar en la base de datos. ¿Se supone que debemos usar esto? ¿Se supone que debemos usar las fechas de nacimiento? Esa es la siguiente pregunta que debes hacerte. Pero lo que hay que recordar es que estás usando JPA. Un JPA usará exactamente lo que realmente tienes aquí. Vamos a probarlo y ver cómo se desarrolla, ¿verdad? ¿Bien? A continuación. Escojamos el género. A continuación están los derechos de género, género. Voy a decir, vamos a copiar y pegar y hacer alguna modificación. Déjame solo. Deja ser arnés. Sólo hagámoslo directamente. Lo llamaré género igual porque el género no puede tener un me gusta. Por lo que especificaste, lo que especificaste y lo que deberíamos tener, eres hombre o mujer. Se especifica aquí, género, género, es nombre en clave. El nombre en clave está bien. Género, género, entonces tenemos que devolver esto. Esto es genial. Esto es genial. Entonces todo el mundo piensa igual de género. Esto es exactamente lo que necesitamos. Es genial. A continuación. Hagamos uno más, luego viendo el siguiente video. Hagamos sueldo. Tenemos un sueldo. Se supone que esto se ve exactamente así. Voy a llamarlo salario entre. Salario entre, debería ser grandes arranques decimales. Arranques decimales grandes, salario final decimal grande desde. Solo usaré exactamente el mismo nombre sueldo dos. Sueldo dos grandes decimales, grandes decimales, de, entonces. Entonces el nombre es ¿qué? Recuerda, si revisas, ¿cómo lo llamas? Se llama salario. Así que tráelo. Sospecha ollas, llámalo sueldo chicos, te veré en el siguiente video. 85. Paginación, parte 9: Oigan, chicos, genial tenerlos de vuelta. Esto cuelga ahí dentro. Casi terminado. Lo hemos hecho por el sueldo. Lo hemos hecho por fechas, género, salario. Ahora quiero hacer deber por edad, verdad? Y vamos a darle una paliza. ¿Bien? Entonces para el siguiente paso, recuerden que mencioné, no me voy a saltear nada. Delito quiero saltarme cualquier cosa porque esto es muy importante, chicos Entonces a continuación vamos a hacer edad entre. Edad entre. Entonces esto será ints, el entero derecho. Va a ser ints Int, envejecer desde y empezar Yo uso H start. Mantengamos la misma convención de nomenclatura Inicia H fin. Espero que tenga algunos detalles aquí. Voy a apegarme al entero. Voy a apegarme al entero. Puedo hacer fácilmente una comprobación si H arranca es igual a nulo o esto es igual a n, retorno. Simplemente es esta fase 15, se supone que no debemos hacer nada. Si es igual a no, vuelvo. Debería regresar ahora. Terminemos la implementación. Voy a volver. Entonces si no lo es, voy a hacer lo mismo. Yo solo quiero devolver entidad, edad, quiero decir entre. ¿Verdad? Entre. A medida que envejecemos entre, entonces t obtenemos la edad, la edad pasiva comienza el final de la edad. Se trata de chicos bastante chulos. Yo es bastante genial. Ahora, voy a decir si esto no es snuw Esto no es nieve esto es y esto es ahora hacer esto.Ho me paseo lógica. Déjame ver. N es nieve, vas a devolver una especificación, ¿verdad? Bien, entonces esto es no y esto no es no no, no, no, no. ¿Qué debemos hacer? Nada. No debería hacer nada. Bien, entonces hagamos la lógica en las otras partes, aquí, supongamos que esto no va a entrar aquí. Supongamos que esto no va a entrar aquí. Cuando lleguemos a nuestras partes de consulta, en realidad podemos demostrar que esto no es pase que no llamaríamos a estos chicos. Creo que eso tendría más sentido. Esa lógica sería mejor. Por último, toquemos el deber. Voy a decir estática pública, Especificación externalizada ahora, decir deber es igual Recuerda que nuestro deber es igual. ¿Y esto va a ser deber deber? Deber de miembro para mi cogent o en realidad usamos. Deber de servicio Sí. Voy a decir que giramos, lo mismo. GT es igual a esto. Esto está bien. Todo bien. De hecho, hemos podido escribir todo lo que necesitamos. Ahora bien, ¿cómo es esto posible? Esto está usando especificación. Así es como usas la especificación. Ahora, algunas personas lo hacen de una manera diferente, pero yo solo trato de solo lugares en diferentes en diferentes métodos. Para cada clase que estamos comparando o estamos comparando la base de datos, la hago diferente. Así es como puedes tener fácilmente el control. Podrías haber anidado todo esto dentro del mismo método. Todo esto se puede usar dentro del mismo método como verías podría usar todo el método SSA, pero me gusta dividirlo para que puedas tener control sobre lo que quieres hacer dentro de cada una de las lógicas, genial. Con esto hecho, entonces puedes volver aquí, una consulta de búsqueda, y luego continuar con esto. Esto lo hemos implementado, ahora voy a decir si se le dio el nombre tiene datos, voy a decir string t del springer framework inclina tiene Si esto tiene prueba, que es la imputa obtiene MM, si esto tiene texto, estamos seguros de que no es nulo Vamos a traer esto. ¿Podrías ver cómo está funcionando? ¿Esto es? ¿Sólo vamos a estar encadenando Se llama encadenar. Si miramos esta especificación, solo estamos encadenando todo junto La especificación, podríamos usar todos también. Pero recuerda usar y siempre está especificando. Ahora, lo mismo también. Yo voy aquí, el siguiente paso, si imputa punto DOB inicia, comienza DOB El inicio de imputa o fecha de nacimiento no es nulo. Esto es lo que mencioné donde realmente vamos a hacer el rip in, y esto no es nulo. Entonces estás especificando si es nulo para omitirlo. Entonces, si alguno de ellos es bueno omitirlo, en realidad no se usa en nuestra consulta. Los blancos no lo usan realmente quip una base de datos, y estamos seguros de que esto no afectará Por eso estoy haciendo que cada uno de los elementos no sea obligatorio porque eso es lo que se supone que es el embarazo Entonces, si esto es así voy a decir al menos hay que estar seguro de que el inicio de la base de datos es antes final del bit de datos. Eso es muy importante. Diré I Imputa que el bit de datos obtiene inicia que comienza DOB es, pero es antes Entonces las fechas siempre tienen este concepto. Antes de esto, entonces hacemos otra cosa. Y si no es antes de los dos, no lo sé. Aún así haré otra cosa. ¿Bien? Entonces hagamos esto primero. Voy a decir mis puntos de especificaciones y luego voy a obtener especificaciones. Decir especificaciones punto DOB B recuerda que implementamos esto ahí, entonces voy a pasar esto adentro. Esto funciona. No obstante, dices spec I no es antes, o es lo mismo antes. Si esto no es antes de esto, si el inicio del DOB no es antes del final del DOB, simplemente significa que son las mismas fechas o que este fin de DOB es anterior al inicio del DOB Ese es el significado. Voy a decir especificaciones. Recuerden, esto tiene que ser igualdad de derechos. Hay que volver a ponerlo a igual a esto. Estas especificaciones, puede haber especificaciones. Dot y ahora digo yo fuente sospecha DOB entre, voy a invertirlo. Voy a invertirlo o en vez de invertirlo, solo podría decir perros Imput Voy a decir, esto es antes. Th sería imputes consigue DOB o vamos a mirarlo ahora. Yo sólo voy a trabajar. Esto podría no ser infalible. También podrías hacer algo de lógica aquí, sólo voy a dejarla en esta ahora. Esto completa lo que queremos hacer aquí. Próxima parada. Diré que la próxima parada es sobre género en género. Voy a decir imputes Imput dots consiguen género, su género, autocomputación, Si no es nulo, diré que funciona spec. Esto funciona. Siguiente parada, voy a decir ahora voy a pasar a sueldo. Si sueldo doesimput obtener salario de. Yo sueldo o sueldo de no es nulo, y porque es ambos que estás comprobando y esto no se sabe. Al parecer, decimos especificaciones, es igual a especificaciones y pasando el externalizado Sueldo de puntos entre, se puede ver que esto ya se ha hecho para nosotros, lo cual es genial. A continuación, déjame mover esto. A continuación, déjenme cumplir la edad de los chicos. Déjame decir si lo mismo imputa punto get él inicia no es nulo y edge no es nulo las cosas están todas completas, suspende y luego ponerlo externalizado, luego Ves que esto funciona. Lo estoy tomando paso a paso. Impresionante. Después deber. El último es el deber. Si imputar eso obtiene deber, deber. Obtener deber no es saber. Ahora diga especificaciones, es igual a especificaciones y deber. Esto está bien. Quiero decir las especificaciones de retorno Impresionante. Los veo chicos. He podido pasar paso a paso, y ahora esto es realmente genial. Ahora para terminar rápidamente este video, voy a traer esto, llevarlo a mis respuestas, positue que este tipo sospechando De hecho voy a conectar esto, poner mis respuestas y a este tipo de aquí. Voy a cablear esto. Impresionante, esto ha sido cableado se puede ver esto ya no se queja Entonces tenemos esto en. Los veré chicos en el siguiente video. 86. Paginación, parte 10: Oigan, chicos, vamos a darles lo que hemos hecho hasta ahora. Vamos a darte lo que hemos hecho hasta ahora. ¿Cómo funciona la especificación JPA? suscripción funciona de tal manera que puedes escribir consulta negativa para hacer algún tipo de py Estamos tratando de obtener algún tipo de entradas y queremos usar simplemente muchas cosas. Quiero verificar si uno de los campos existe si es algún objeto es entre algún módulo solo la forma que escribes consultas negativas. Por eso separé las cosas. En primer lugar, escribimos a nuestros sospechosos y un sospechoso está reflejando nuestra base de datos, que es un nombre de campo que tenemos aquí, yo los campo, debes usar este nombre de campo GPA No se confunda aquí este nombre de campo GPA exacto, se supone que debe usar aquí Este nombre de entidad quise decir, estos nombres exactos de entidad JP. Ahora que lo tienes aquí, puedes hacer la lógica. Acabo de hacer lógica sospechosa basada en las entradas que recibiste y la entrada que les mostré entrada chicos. Tiene un concepto de nombre, y poco comienza y termina, género, forma salarial y top, inicio y fin y deber. Y pasé por, les dije chicos que están usando el constructor de criterios, el creador de criterios te da todo lo que básicamente tienes en tu consulta nativa entre y los me gusta. También podrías comprobar que en su lugar son mejores o Las otras cosas. Así que ya ves, hay entre, no hay ninguna matriz, concat, cruce, datos de tiempo actuales Como todo lo que probablemente esperas dentro de una base de datos. Allí existen funciones de Leven. Entonces, si revisas, creo que es una función aquí, ¿verdad? Sí, función. Función de compacidad, mayor o igual a Así que piensa en cualquier cosa. Solo necesitas pensar en lo que sea que hayas escrito en tu consulta nativa. Los chicos de JP o los chicos altos de Barnett han intentado tanto como sea posible poner muchos detalles en esto y JP simplemente aprovechó para usar la especificación JPA Entonces esta especificación GPS hace muchas cosas geniales para ti, ¿ verdad? Un montón de cosas geniales. Así que sólo piénsalo adentro. Ves que hay algunos, ¿verdad? Tenemos prácticamente todo, ¿verdad? Entonces no puedo explicarlo lo suficiente, sino solo mostrar solo una simple pieza de ella para que sepas cómo funciona bellamente. Entonces después de crear esto, separé cada uno de para que nuestra lógica sea diferente. La razón lógica de esto, de la razón lógica de esto, luego reuniéndola en un sospechoso, no estoy pasando en estos detalles. Déjame dividirlo otra vez. Después de hacer esto, ¿qué hicimos realmente sencillo? Luego pasé y estoy validando a cada uno de los hombres chicos. Esto no es caro. Recuerda, el BGO de esto es constante. Para Si check, la O grande es constante, siempre es constante. Entonces estás seguro de que no estás agotando la memoria. Esto es bastante genial porque el BGO es constante. Por eso puedo hacer esto y estoy fallando rápido. ¿Puedo repasar por todo este detalle? Si esto falla, no se molesta en entrar en esto. Esto siente que no implementa toda esta lógica. Entonces veis que esto funciona bastante, chicos. Entonces después de separarlo, ahora hemos podido hacer esto. Ahora he pasado por este paso he pasado paso a paso para que no me falte punto. Estoy seguro que ahora sabes cómo encadenar la especificación. Estoy usando y podrías escribir esto en un solo método y tener todo en. Pero no me gusta hacer eso, como se podría decir, el punto de especificaciones gana algo, luego lo encadena de nuevo, punto gana algo, ese gana algo. Podrías hacer esto, luego lo encadenas de nuevo, ganas algo. La gente escribe código así está bien. Esto está bien. Hasta ahora, estás seguro de que los detalles que estás transmitiendo están disponibles, o has hecho alguna forma de validación en. Por eso lo acabo de dividir. Algunos habrían preferido escribir su especificación en detalles separados y traerla. Pero por eso lo hice por separado aquí y escribí mi especificación por separado, y después de eso, estoy empezando. Podrías cambiarlo así. Hombre, no tienes un lo, tienes todo. Entonces podrías hacer esto, ¿verdad? Entonces estás diciendo otro si el no funciona, el puede funcionar. Entonces ves varios detalles que realmente puedes cambiar, y tienes, y tienes igual. Así que en realidad podrías usar estos tres detalles para unirlo. Bien. Así que he podido explicar lo que hemos hecho hasta ahora. Por favor, repasa los videos una vez más. No estás seguro y ves cómo cambio las cosas paso a paso. Lo puse fuera de esta parte de empleado. Y cuando vaya esto, realmente quiero construir mi param. Entonces este param me va a dar un conjunto de especificaciones como pueden ver Especificación, que están validando cada entrada, ¿verdad? Cada feudo dentro de esta entrada. Voy a repetir de nuevo, cada pocos imputes es validado en realidad y devolvemos una especificación Y especificación es lo que devuelve esto y cada uno de ellos vemos validando por entrar y crear todo esto para cada uno de ellos, reflejamos cada uno de ellos, e intentaremos alguna validación de mezcla para ver si existe o no existe Sólo estamos comprobando comparando y a ver si funciona. Ahora que hemos hecho esto, ¿qué concuerda esto? Ves estos partidos. Si revisan esto, ¿ esta suma se relaciona con si revisas especificación de Control P o Comando P y así ahora voy a mostrar cómo especificar sit es bastante simple, chicos. Con esto a, sólo voy a ser tono, exactamente lo mismo. Quiero decir regreso simple, esto, entonces voy a pasar en mis resultados. Pasar mis resultados, eso es conseguirlo y voy a pasar mi entorno de obtención de datos Esto es prácticamente todo, chicos. Esto es más o menos así. No tenemos ningún error, ¿verdad? No, no tenemos ningún error. Creo que hemos terminado con la implementación de esto si vas adentro, tenemos esto ordenado. Bien chicos, creo que es hora de probar, ¿verdad? Vamos a probarlo y vamos a demostrar que esto está funcionando, ¿verdad? L solo pasa algunos detalles a esta búsqueda de IMPs como si funcionara, y luego podemos pasar al siguiente video porque ahora que hemos hecho lo codificé todo, y esto en realidad se está moviendo bastante genial Lo que voy a hacer, voy a iniciar mi base de datos. Recuerden, solemos compilar como el compositor, quise decir, voy a poner en marcha mi base de datos. Voy a seguir adelante para traer a colación Docker. Docker básicamente se inicia. Entonces mi estibador está funcionando. Esto se pone en marcha. Seamos espectáculo. Bien, aún no está disponible para recibir conexiones. Voy a esperarlo. Bien, esperémoslo. Impresionante. El sistema de base está listo para aceptar la conexión. Con eso, puedo iniciar mi aplicación. Acabo de iniciar la aplicación. Todo bien. Y ojalá no consigamos ningún error. Entonces entonces podemos entrar en Ota para poner en marcha las cosas de verdad. Muy bien chicos. Esto está subiendo, subiendo esto se acerca. A ver. A errores? Bien, entonces hay una flecha. Entonces la flecha, veamos de dónde viene la flecha. Entonces déjame ver esto. Entonces dice externalizar conexión. S el error chicos conexión. Aquí me perdí la C. La conexión de externalización del tipo de campo no está presente. Aquí me perdí la C. Ese es un buen hallazgo. Ese es un buen hallazgo rápido. Yo sólo voy a entrar y veamos dónde cometemos ese error. Déjame ir a mi gráfica QL, mi gráfica QL, mi gráfica QL Comparemos mi gráfica QL. La directiva. Vamos a registrarnos. Vamos a revisar mi entidad, subcontratar Vamos. Es la consulta. Aquí. Como conexión. La conexión de origen era muy del mismo nombre. Recuerda, también en realidad crea el borde en la página para nosotros. Eso es básicamente. Ahora esto ha sido violado. Ya no está disponible. Entonces vamos a hacer, muy sencillo. Voy a entrar voy a entrar aquí. Recuerden, esto en realidad sería timeout porque esto no va a funcionar más bien, quejarse porque necesitamos recompilar por eso estoy haciendo esto Bien. Entonces, finalmente, este tipo, bien, porque está tratando de igualar esto para tener exactamente ese mismo nombre. Yo borro esto. Entonces usaré Mp moviendo compilar. A ver. ¿ Tienes algún error? Bien. A ver. No, no tenemos ningún error. Entonces, volvamos a ejecutar esto. Ojalá, esta vez no obtengamos ningún error , no obtenemos ningún error, entonces realmente podemos volver en el siguiente video y comenzar esta cosa. Déjame ver. ¿Hay algún error? Bien. Date prisa. A ver. Impresionante. Esto se ha puesto en marcha por completo, fue capaz de localizar esto ahí. ¿Puedes ver? Por el error, lo bueno es que pudiste demostrar que eres capaz de probarte a ti mismo que esta USC PAC ahora Eres capaz de probarte a ti mismo que esto era cableado automáticamente. Pero porque cometí un error con la C aquí, nos lo dijo. Seguro que eso es prueba suficiente para que veas que reconoce esto. Se trata de chicos bastante chulos. Voy a detenerlo. Voy a volver. Voy a liberar todo esto para que podamos ponerlo en marcha y luego probarlo. Los veo chicos en el siguiente video. 87. Paginación, parte 11: Oigan, chicos, genial tenerlos de vuelta. Ustedes han sido muy increíbles. De hecho me has metido. Y esto es bastante impresionante chicos, ustedes son desarrolladores increíbles, programadores increíbles De hecho, he podido pasar por esto y estoy seguro de que vas a hacer cosas increíbles y construir sobre todo lo que he hecho hasta ahora. Bien. Entonces ahora que esto es bastante asombroso y lo he podido hacer, te dije que no iba a usar esto para nada, y si, no lo voy a usar. Y veamos si funciona. Voy a pasarlo, vamos a cambiar las cosas, vamos a estar seguros de que guau esto funciona incluso sin usar esto porque internamente, esto se ha hecho por nosotros. Sí, claro, así que vamos a meternos en ello. Lo que voy a hacer, voy a sacar a colación ta. Voy a sacar a colación. Recuerden, chicos, realidad he ido a crear. Voy a crear algunos detalles para nosotros con los que vamos a estar probando. En realidad vas por esta parte o esto es paginación, cty parte para Bien. Esto es una parte de la paginación que creé, vamos a explorarla un poco No estoy usando la paginación de empleados este momento. No lo voy a usar. En realidad preocupado por la paginación externalizada. Puedes ver que estoy usando de la misma manera, la misma manera que he estado haciendo esto pasando una variable y mi nombre de variable es lo que para que puedas mirarlo con cuidado. Entonces no hay mucho espacio. Voy a tener cuidado lo llamo imput dos, primero, último, después, y antes Si lo miras, hay un primero, hay un antes, hay un último, hay un después, genial. Entonces Insumos, mira esto, hay un Imput dos. Este Impute dos corresponde con esto y coincide con nuestro subcontratar Ves que coincide con nuestro subcontratar. OB inicio, B, género, salario de sueldo a borde y esto. ¿Qué es el deber? No voy a pasar el deber. Vamos a comprobarlo. Vamos a comprobarlo. Chicos. Vamos a darle a esto. Veamos lo que acabamos de tener aquí solo paso en algunos detalles extra. A ver si somos capaces de hacer esto. databas inicio debe ser a partir de 1960, y debe ser 1998, masculino debe tener este rango salarial, y este debe ser entre los 23 y 30 años A ver. Qué detalles. Así que mira a estos tipos. Verás, este Coso antes y después se generará automáticamente para ti. Debe ser auto generado. Así que se supone que debes entrar y recogerlo. Se supone que debes entrar y recogerlo para decir, Bien, quiero, voy a elegir esta gama de esta gama y voy a pasar por ella. Entonces lo que voy a hacer, no tengo las ventas. Voy a comenzar a sacarlo. Por lo que no puedes comentar aquí. Yo sólo voy a quitar esto. Voy a quitar esto. Sólo voy a llamar a esto. Sólo llamemos a los diez primeros. Primero diez, estos son los chicos de belleza. Puedes quitar lo que quieras. Solo busquemos y solo llamemos a esto. Bien. Creo que estamos recibiendo un error es que no pude buscar, y veamos de dónde viene mi error . Vamos a comprobar esto. Imagínese, voy a iniciar la aplicación. Entonces ustedes ponen en marcha la aplicación. Empecemos con la aplicación. Entonces lo puse en marcha. Creo que después de comentar comenté, no logré poner en marcha la aplicación. Esto es para arriba, golpea esto otra vez. Dije, increíble. Mira a estos tipos. Esto es hermoso. Esto realmente hermoso. Verás, para los primeros datos que estás recogiendo, Davis dice iniciar Cs y terminar Coso. Ves que cada uno de ellos tiene una ventaja y todos tienen un Cs. Recuerda que te dije dentro de un subconjunto grande, necesitas escoger el porque quieres empezar y terminar con. Lo que voy a hacer, voy a entrar aquí y traer de vuelta todos esos detalles que eliminé. Oh, chico, ¿qué hice aquí? Creo que en realidad. Es una buena manera. Puedes hacerlo aquí atrás, voy a cerrar esto y traerlo de vuelta. Eso me da todo lo que necesitaba. Mis resultados, voy a quitar esto otra vez. Voy a quitar esto. Va a quitar el primero. Dejar de fumar a través de los primeros diez. Rápido a través de los primeros diez. Vamos a golpear esto de nuevo y ese va a ser este tipo Bien. Lo siento, no es la cuerda del valle. Vamos a quitar esto. Todo bien. Esto se puede ver. Hagamos esto. Voy a elegir a este tipo. Voy a traer todo esto de nuevo. Voy a ir rápido de entre esto solo en esto y voy a ir hasta el final y luego elegir esto. Verás, estoy fijando mi inicio y fin. Yo soy el que define las cosas ahora, tengo esto. Entonces tengo, llamémoslo. Quiero los tres primeros. Yo sólo quiero los tres primeros. No quiero cosas que ver con último hagámoslo. No hay nada. No tenemos los tres primeros, no tenemos las. Voy a regresar. Voy a volver a entrar. Voy a decir así que voy a volver a entrar. Déjame quitarle esto y veamos. Quiero estos detalles. Este detalle no me está dando nada. Ahora, quiero que ustedes comparen mientras hago esto. Voy a sacar esto otra vez. Voy a sacar esto otra vez. Yo solo dirijo esto tal como es. Lo siento esta es la cuerda del valle debido a esta llegada final. Ya veo, estoy diciendo dame los cuatro primeros, darme uno, dos, tres, es honrar a estos últimos tres antes de estos cuatro primeros Si llamo a esto cinco, uno, dos, tres, cuatro, uno, dos, uno, dos, tres, cuatro, ¿verdad? ¿Se han dado cuenta de algo, chicos? Esto es bastante tedioso Necesitas buscar la cosa, tienes que esperar a que vuelva la costa antes de empezar a escoger la cosa, ¿verdad? Yo solo quería mostrarles que así es como tendrías las cosas. No se puede conocer el posavasos de antemano. Nunca se puede saber. Yo me ayudo solo llamaré a esto diez, solo llamaré a este diez, solo lo llamaremos 20 solo para darnos más datos. Voy a llamar a esto. En la cuerda del valle, quito esto. Tengo 20 aquí dentro. Genial tener esto. Ahora voy a sacar a colación mi oso mi primer y último antes y después. Entonces escogeré esto aquí. Agrega entonces cos creo que esto cos, Agrega esto en. Déjame consultar de nuevo. Yo saqué esto. Yo quiero esto. ¿Me perdí algo aquí? Déjame mover esto. Antes de esto. Antes de este significado este es el primero antes de esto. Realmente no hay nada antes porque son los primeros cuatro esto no es nada antes porque consulto la primera cita que recuerdo, dejé el primer teatro. Por eso es tener esto. Y si hago esto, déjame tomar esto. Debe haber datos después de esto creer. Vamos rápido a esto. Veamos esto. ¿Hay algún dato después de esto? ¿Cuál es el total de datos? Creo que me interesa. Veamos cuál es el total de datos aquí? Voy a quitar todo esto. ¿Cuántos datos tenemos para este criterio? Yo tengo uno. Tengo uno, dos, tres, cuatro, cinco, seis, siete, ocho, nueve, diez, 11, 12, 13, 14. Tengo 14, alrededor de 14. Déjame entrar. Vamos a quitar a este tipo. los tres últimos. Quiero los tres últimos. Tengo algo. Entonces quiero los cuatro primeros. Todo bien. Esto está bien. No quiero ninguno quiero los tres primeros. Yo sólo quiero los últimos diez. Dame los últimos diez. Entonces puedo agregar en estos detalles. Dame los últimos diez. Este es el último diez. El último diez, uno, dos, tres, cuatro, cinco, seis , siete, ocho, siete hasta diez, nos da las primeras colas que tiene. Esta es la primera. Mira primero al Coso. Ves que coincide con esto. Entonces este termina el JK, ve todo el camino hasta el final, ves que coincide con JK. Cocuerda con JK. ¿Y si ahora elijo esto? Déjame traer esto de vuelta. Voy a decir, dame este segundo. Yo no quiero antes, quiero después quiero los tres últimos después de este coso, ¿verdad? Eso es lo que voy a hacer. los tres últimos después de este Coso. Últimos tres después de este Coso. Así se puede ver. Pero así es como funciona, ¿verdad? Hay que ser muy cauteloso con el Coso, ¿verdad? Entonces me estoy tomando mi tiempo para explicar esto. Entonces no puedo agotar completamente esto. Entonces si elijo el primero, solo hagamos este primero, quiero los dos primeros después de esta cosa. Los dos primeros después para que pueda cambiar quiero los dos primeros después de esta cosa, ¿verdad? Así que estoy seguro de que ahora te estás acostumbrando , ¿verdad? Hay que tener en cuenta dónde está la cosa. C ya ves? Entonces esto funciona. Entonces, chicos, ya ves, no conoces la cosa de antemano y usas la cosa para determinar realmente las cosas para. Entonces es tu elección. Si quieres esto. Esto es bastante genial. Voy a meter esto. Entonces siendo el guión del cartero y tu guión, ¿verdad? Los veré chicos en el siguiente video. 88. Paginación, parte 12: Hola, chicos. Las desventajas, realmente no sabes el número total de elementos que vas a obtener si estás usando esto. Estoy revisando. Hay que aprender qué co tamaño entre los cuales empiezo a usar alguna lógica para definir esto. No lo sé de antemano. ¿Verdad? Si se reinicia la aplicación, vas a obtener una nueva, obtienes un nuevo conjunto de código Se genera para tu narración automática. Realmente no me gusta este enfoque, B no lo sabes. Ni siquiera sabes cómo hacer consultas. Ni siquiera conoces el elemento total. Algunas personas podrían preferir este enfoque. No me gusta este enfoque. Esto es personal. Es mi opinión personal. No me gusta este enfoque, que es lo que nos va a desplazar a los siguientes detalles. Los siguientes detalles, y vamos a ver cómo funciona esto donde tenemos el control total de estas cosas que entran y decidir cómo queremos que sea. Los chicos increíbles son geniales. Todo bien. Ya he ah añadir en el post manuscrito, así que si quieres usar cola o el postmanscript, por favor sé mi invitado, usa a cualquiera que realmente prefiero Ahora que hemos hecho esto, ahora expongo esto para que veas que todo entra. Puedes estar seguro de que obtiene los detalles. Como se podría decir, no cambié los parámetros. ¿Estás seguro de que está funcionando? Bien, vamos a revisar los parámetros. Tantos detalles que conseguimos aquí. Cambiemos y esta es una hembra. Recuerda, todo lo que vamos ahí es macho macho macho, cambiémoslo por hembra. Vamos a desechar esto. Bien, veamos esto. Entonces no tengo esto, voy a quitar todo esto porque esta cosa podría no existir. Entonces solo quiero quave con esto. Oh, lo siento, empleado. Lo siento, yo PML o se supone que debo elegir esto. Cómo salsa Bien. Sí, para que veas, tienes prácticamente muchos detalles, ¿verdad? Entonces si voy y agrego esto adentro, para que veas que cambia. Ahora, que esto llegue primero. Podrías hacer la misma dinámica y cambiar Sart. Y el costo de tres después de esto, cuatro antes de esto, podría empezar a recoger así, ¿verdad? Entonces empiezas a cambiar igual que hicimos en el último video. Sólo voy a ajustar esto un poco. Sólo quiero mostrarte que todo funciona. Bien, entonces vamos a quitar estos dos detalles, ¿verdad? Para ver que funciona. Vamos a darle a esto. ¿Podías ver? Tenemos estos detalles. Si no especificas tenemos H de dos, no especificamos g y tenemos todo esto, ¿verdad? Esta está siendo limitada porque aquí definí esto. Vamos a entrar aquí. Voy a quitar. Creo que me muevo aquí H, voy a quitar H. Voy a quitar esto primero y último. Entonces volvamos a consultar esto. Para que puedan ver, tengo muchos más detalles. Porque lo trunca, aquí todo es opcional, que es lo asombroso Ambos implementamos chicos. Lo cual está bien. También podría aumentar esto a tal vez 15050, esto a 150. Llevemos esto a 120. Ojalá tengamos algunas cantidades en el medio entonces, ¿verdad? Cien 50,000 mil mil. A ver, ¿tienes algo? No, nosotros no. Déjame quitar esto. A lo mejor conseguiremos algunos detalles. ¿Nosotros? No, nosotros no. No hay criterios que coincidan con esto, así que tal vez tengamos que reducirlo. Déjame reducir esto 40 40,000. ¿Tenemos hombre? Tenemos algunos. Es un tres. Estoy seguro de que ustedes ya entienden la idea central ahora de cómo funciona esto Te he podido mostrar chicos primero antes del último después de que la cosa funcione ahora ya sabes cómo funcionan los detalles. Ahora bien, esto no es realmente factura. No lo sé. Realmente no se puede decir esto programáticamente porque tantos detalles, excepto que quieres ignorarlo totalmente Entonces todo lo que tienes que pasar son estos detalles sobre los que tienes control y criterios de búsqueda entre ellos. No tienes que molestarte por este cosoping y solo usar esto solo. Esto es crítico. Pero la idea es que si haces esto y tienes unos 100 datos, ¿cómo quieres por dónde empezar, dónde devolverlos? Cosas así. Quieres saber yo quiero los primeros diez, la última prueba, tú quieres eso. Ahora, podrías hacerlo haciendo caso omiso estos cursos y solo probablemente pasar los primeros diez que se te ocurra Les mostré antes, algo como esto, ¿verdad? Si haces esto, ¿verdad? No consigo ningún detalle. No hay detalles existentes. Entonces cambiemos esto a 40 40 mil. Bien, entonces tengo algunos detalles. Quiero decir, conducir, devolver uno, dos, tres , cuatro, cinco, seis, siete, ocho, nueve, diez. Entonces primero diez. Así que siempre puedes hacer esto. Entonces la siguiente parada, se podría decir, quiero Así que cuando lo hagas Primeros diez, tienes que mirar donde termina esto. Entonces eliges la parte del motor de esto. Entonces entonces hay que poner los otros bits, ¿verdad? Entonces tienes después. Entonces coloca después, ¿verdad? Quiero el primero el después de este Coso. Recuerda que esto termina con un JK, así que tenemos otro Coso aquí. Entonces, ¿ves que esto es ahora lo que EJ cinco? Esto es definitivamente antes de ahí es donde se puede ver. Entonces si lo haces ves ahora termina con JK. Esto es JK. Entonces digamos el último. Diré el último antes último el último antes de esto, estoy seguro que esas deberían ser las cosas de JK que vimos antes. Bytes. Creo que no estoy muy segura. Después de esto antes, antes debería antes, antes. Bytes antes de esto. S estamos de vuelta a ello. Podrías simplemente jugar por ahí. Podría empezar a entender el concepto, por favor mira los videos para poder entender el concepto de último primero, antes y después, en realidad he podido deletrear esto. Sólo voy a volver al original que tengo. Por favor, juegue con esto, asegúrese de entenderlo correctamente , y lo hará, podrá implementar realmente más cosa de código. Entonces he vuelto a entrar en este video para explicar algunos detalles extra como respecto a esto, ¿verdad? Porque quería que ustedes entendieran bien el concepto. Entonces ahora que hemos hecho esto, ahora es el momento de pasar ahora a la paginación de empleados, que es mi favorita. Podría ser tu favorito. Podría ser el favorito de otra persona. Prefiero esto esto. Pero esto también es bastante genial, ¿verdad? Porque la desventaja es que no se conoce el número total de elementos. No se puede decir. Excepto para eliminar todos estos y consultar todo lo que devuelve, pero te pones todo cargado y no creo que eso sea realmente lo mejor. Excepto que empiezas a usar tal vez cosas como primero diez, último esto, aquello, luego el primer turno para darte los primeros diez. Entonces hay que anotar el Coso que fue escrito y buscar el siguiente turno después Entonces es esgramaticalmente posible. Podrías hacer eso, ¿verdad? Pero simplemente realmente es demasiado trabajo. Veamos el segundo paso, segundo tipo de paginación, y luego podrás decidir cuál es mejor Los veré chicos en el siguiente video. 89. Paginación, parte 13: Oigan, chicos. Noté el extraño comportamiento con Cartero de la última información que di Pensé que en realidad lo corrigía, no quiero que nadie se equivoque y piense que no está funcionando. He agregado una variable ahora, intenté hacer clic en esto. Esperaba que esto realmente desaparecería para no ser resaltado, pero desafortunadamente se destacó. Lo que tienes que hacer si estás usando Postman es que solo tienes que sacar esto. Usando esto, entonces usted puede simplemente hacer clic y usted es capaz de obtener sus datos, su respone realmente consentimiento Entonces no pudiste consultar como antes. Pensé que en realidad debería mencionar esto para aquellos que van a usar Postman, así que en realidad no obtienes descubrimiento para pensar que las cosas no están funcionando Entonces te quitas las notas de parte usando en este momento y usas la otra, ¿verdad? Pensé que en realidad debería compartir esto. Bien. Entonces con eso dicho, entonces creo que luego continuar con la degenación de empleados Bien, entonces voy a detener el servidor. Voy a detener el servidor. Antes de comenzar, en realidad voy a pausar rápidamente el video y verificar esto y llamarlo en el primer paso, lo llamaré externalizar paginación Las otras partes serán la paginación del empleado para que puedas ver los códigos que agregamos en. Sólo un minuto. He entrado en agregar esto en. Yo lo llamo paginación, gráfica estilo Queer. De hecho, puedo verlo en. Esto es a lo que me refiero. Lo tengo adentro, hecho lo he comprometido en. Voy a entrar y comenzar los demás detalles. Ahora voy a terminar con esto, sólo voy a quitar las otras pestañas. Esos otros grifos, estamos comenzando desde este punto. Creo que es bastante bueno. Esto es bastante bueno. Ahora podemos proceder desde donde duramos pasos. Voy a llamar a este empleado Bing esto en Employeesurce service dot Empleado SEC Búsqueda de empleados. Passpputails, yo pasando la página. Pasando la página, pasando el tamaño. Pasando el tamaño, sin pasar los datos, obteniendo entornos. Esto ya está en conflicto con una búsqueda de empleados, que es esta parte Pero lo bueno es que en realidad podríamos usar un método sobrecargado, realmente no hay jamón Voy a entrar voy a crear otro conjunto de empleados de un tipo. Voy a crear este tipo que tenga todos estos detalles, funciona. Podrías llamarlo inicio de página de empleado. Sólo voy a usar un método sobrecargado. De hecho podría tener esto funcionando para nosotros. Tenemos que hacer alguna validación antes de hacer las cosas principales. Cuales son las validaciones voy a decir que página es igual a nula porque recuerda que es posible, se pasa un nulo o alguien podría ponerse muy complicado con nosotros y pasando una página negativa. Si page es nulo o es negativo significa menos de uno, cualquiera que sea, y solo vamos a ponerla por defecto a cero Entonces la página es igual a cero, ¿verdad? Así que básicamente deberíamos coincidir con lo que hicimos aquí, número de página y tamaño de pago. Pero el tamaño de la página también debería ser tamaño o decir, si el tamaño es error, si el tamaño es nulo o la página esto, solo voy a devolver la primera vez. Creo que esto funciona ¿verdad? Todo bien. Entonces vamos a tener esto. Entonces vamos a obtener la dirección de nuestra página. Voy a decir pagable. Paginable, paginable es igual a nuestra solicitud de página que somos diez para pasar el tamaño de la página Ahora para este tipo, vamos a hacer que la página acepte que esto sea cero, así que va a ser cero. Pero recuerden, si esto no es cero, recuerden, el momento en que están pasando esto es posible ahí ahora pasando un dato aquí, si éste no es mayor que uno. Ahora vamos a verlo objetivamente. Si no pasan, si pasan esto adentro, si esto es nulo o esto o menor que cero o por defecto a cero No obstante, ¿y si es mayor? ¿Y si es mayor? Si están pasando en cero, están pasando en cero, todavía cae dentro de este criterio, y estamos diciendo que incumplieron a cero Pero si están pasando en uno, recuerden, si están pasando en uno, JPA entiende que ese uno es cero Sé que entiendes porque tiene un concepto de comenzar cada página desde cero. Bueno, los clientes pueden pensar que la página comenzará desde una. Es para decirles así. Supongamos que el que supongamos es uno que están pasando y están empezando a ser la primera página. Sólo tenemos que restar uno para mí. Lo que voy a hacer en vez de pasar esto, voy a pasar esto como uno solo. Sea cual sea el paso, voy a asumir si es menor que cero o si es negativo, hágalo uno. Sólo diré una página menos una. Espero que este concepto realmente funcione chicos. Es decir, si es menor que uno, lo voy por defecto a uno, si es mayor que uno, usaré lo que sean pero restaré uno porque tenemos una página basada en Zio Espero que esto en realidad esté claro. Para ello, voy a usar empleado. Empleado, empleado UUID. Estoy seguro que ustedes que ya entienden por qué estoy haciendo esto. Creo que es hora de que empecemos. Es hora de que comencemos nuestros detalles. Voy a decir pSearchNPSearch, ese mapa. Vamos a hacer algunos mapeos. Vamos a decir búsqueda de P de empleado, búsqueda de entrada de empleados, y queremos retener esto. Entonces para que el empleado busque el mapa, voy a decir empleado APC empleado post punto Find O Find O, deberíamos tomar al parecer una especificación. Voy a decir empleado. Es el mismo concepto chicos, consulta de búsqueda de empleados. Consulta de investigación punto Bard, empleado. Buscar params. Params de búsqueda de empleados, ¿verdad? Voy a pars en empleado empleado búsqueda imputes, Estoy seguro de que entiende este consejo. Hace de la misma manera que lo hicimos para la consulta, la externalización, ¿verdad Entonces voy a pasar en la paginable. Paso en el paginable. Entonces voy a revisar a través de esto. Entonces voy a decir, después de tener esto, voy a comprobar que voy a tener esto. Ahora voy a revisar o de lo contrario. Si esto es lo voy a decir o de lo contrario, porque está ahí o no está ahí, voy a mostrar una excepción. En lugar de remolcar una excepción, podría simplemente obtener un valor predeterminado Entonces un defecto, sólo voy a decir, ¿sabes qué? Si no está ahí, si no tenemos la misma búsqueda p, solo deme el empleado reposit dot find, y solo pasa mi pagable adentro Esto también funciona. Sólo voy a conseguir esto, esto básicamente me va a dar un lanzamiento. Me va a dar una página de empleado. Página del empleado. Página del empleado. Y lo llamaré página a los empleados. Bien. Entonces esto todo lo que deberíamos estar esperando. Entonces este deberíamos estar esperando. Regreso de memoria y opcional. Entonces para un opcional, entonces para un opcional, podríamos decir esto opcional. Recuerda opcional también tienen el concepto de else gets y los likes, ¿verdad? Pero opcional, voy a decir si está presente, dame esto. Si no está presente, dame un default. En lugar de mostrar una excepción, sólo voy a diciembre hicimos esto aquí. Podrías haber dicho, yo estoy presente para hacer esto, de lo contrario, nosotros hacemos esto, podríamos avis style, pero solo te estoy mostrando otro estilo aquí. Aquí vamos a usar otro estilo. Con eso, entonces vamos a regresar. Creo que es hora de que hoy devolvamos esto. Pero antes de que regresemos esto, también hay algunos detalles que tienes que pasar aquí. Eso lo hacemos en el siguiente video. 90. Paginación, parte 14: Oigan, chicos, genial tenerlos de vuelta. Bien. Entonces antes de entrar en implementar esto, ya sabemos exactamente cómo va a quedar, justo ya conscientes porque lo hemos hecho para el subcontratar Así que vamos a completar esto rápidamente. Entonces ahora vamos a volver a la paginación de empleados, a la paginación de empleados Voy a devolver la paginación del empleado establece la conexión, la conexión del empleado , ¿verdad Porque voy a conseguir una conexión de esto. Y la conexión al parecer es solo una lista. Entonces vamos a decir Mw simple lista de conexión, pasar la página probada los empleados obtienen contenidos. El contenido nos dará una lista de empleados. Entonces al parecer luego pasarlo obtiene datos, obtienen datos recuperando el entorno Entonces esto nos dará el empleado de contenido. Entonces esto puede entrar en la conexión de los empleados, ¿verdad? Entonces tenemos los conceptos de conjuntos de puntos. Impresionante. Página. Desea establecer el tamaño, el conjunto de elementos totales. Esa es la cosa genial chicos. Podríamos establecer los elementos totales. Podríamos establecer el conjunto total de elementos totales. Ya ves, obtenemos el elemento total de los elementos de la página. Esa es la diferencia entre los otros chicos para que podamos saber cómo paginar, luego establecer página. Tenemos todos los regresando en ese entonces regreso emplear paginación Entonces esta es la diferencia, cierto, porque ahora podríamos conocer los elementos totales antemano y podríamos saber cuántos elementos existen en función del tamaño que estamos estableciendo. Entonces, si estás fijando diez, podrías tener 1,000, estás configurando 20 para que se corten por la mitad, así que serán 500. Entonces esta es la diferencia, chicos. Es una diferencia. Ahora tenemos mejor control sobre esto, ¿de acuerdo? Tienes un mejor control sobre esto. Bien, así que hemos seguido adelante para implementar todo lo que necesitábamos Así que vamos a entrar y luego construir estas son las especificaciones de búsqueda y búsqueda de nuestros empleados. Entonces ya sabes que va a seguir el mismo formato de ejercer que este, ¿verdad? Va a seguir el formato exa sme como este, ¿verdad? El formato Exactive Entonces para esto, ya sabes que va a ser lo mismo y te he explicado este paso a paso y último video. Entonces creo que debería llevar bastante tiempo tener que repetir lo mismo porque vas a obtener exactamente los mismos detalles. Así que deja pasar rápidamente el video y tráelo, ¿verdad? Oigan, chicos. He ido a traerlo. Trají el empleado si especificaciones y consulta de empleado. Simplemente hagamos rápidamente la comparación porque es exactamente el mismo código. Ahora hagamos la comparación. Si lo miras, tenemos el nombre, tenemos la fecha de nacimiento, tenemos el género, tenemos el salario, y tenemos esto, y tenemos todo lo que viene del conjunto la especificación utils la especificación que es un contenido, la primera parte que usamos Y el segundo en realidad viene de si revisas. Esto se está utilizando entonces en la búsqueda de empleados, ¿verdad? Entonces estás poniendo búsqueda de empleados contiene fechas de búsqueda de empleados entre. Lo mismo que hicimos chicos, nada diferente. Estoy seguro de que esto realmente se desarrolla. En realidad no quería volver a hacer esto y verlos ver exactamente cómo estoy codificando esto paso a paso porque ya lo hicimos en el último video o en los videos anteriores. ¿Todo bien? Entonces entraré en mi capa de servicio. Capa de servicio, y luego cablear esto. Este es básicamente el camino que me estoy perdiendo ahora. Luego entro y luego lo conecté por cable. Esto al parecer es una consulta de búsqueda de empleados. Eso realmente resuelve esto. Ya tenemos esto adentro si vienes aquí, el UUID, voy a traer esto también El UID, como pueden ver, es solo esto. Voy en la lógica no cambia, la lógica no cambia. Acabo de traer los detalles exactos para que pudiéramos ver cómo funcionaba realmente. Todo bien. Genial. No creas que en realidad código esto muy rápido. Codificas muy rápido. Al parecer, mientras desarrollaba el curso, la reparación que usé ya tenía los mismos detalles ahí, así que me fue más fácil traer. Pero ya sabes, no me gustaría aburrirlos chicos porque ustedes fueron muy pacientes conmigo por qué en realidad traemos esto. Escribiéndolo paso a paso, ¿verdad? Entonces solo pienso que no deberíamos repetir exactamente lo mismo otra vez porque ustedes ya tienen el concepto. Muchas gracias. Podemos proceder. Ahora tenemos todo traído. Ya he entrado para traer esto en realidad. Recuerda, hicimos concepto agregado el concepto de paginación de empleados y la paginación, si lo miras, paginación de empleados dentro de nuestra consulta, dentro de nuestra consulta Tener la paginación del empleado que devuelve que toma int y tamaño y devuelve la paginación del empleado, que tiene preocupación de página, tamaño, elementos totales, y página total, que se casa o que es exactamente lo que obtenemos de la página, que es la primavera la página de dominio de datos de primavera que nos da exactamente los mismos detalles Solo estamos lanzando exactamente estos mismos detalles. Con este giro hecho, creo que es el momento. Podemos probar un poco. Voy a poner en marcha la aplicación. Saca esto y vamos a iniciar la aplicación. Bien, entonces se acerca. Se acerca la aplicación. Bien. Impresionante. Entonces la aplicación comenzó con éxito. Vamos a AA. Todo bien. Entonces los mismos detalles. Ahora sólo me voy a centrar en esto. Aquí ven la belleza, chicos. Pero vamos a tomarlo en página y tamaño. Conocemos los elementos totales de antemano porque la respuesta que obtenemos la primera respuesta obtenemos nos da la página total que nos existe en función del tamaño que metemos. Entonces con esto, sólo voy a darle a esta primera guía. Entonces vamos a darle. Impresionante. ¿Ves? Tenemos un elemento total existente es 29 basado en el parámetro que pasamos. Esto nos da una buena idea en caso de que quieras hacer la siguiente paginación y cómo estructurar realmente las cosas Quiero más detalles. No quiero poner en rollo porque este papel podría estar limitando las cosas. Elimino rollo, y le pego de nuevo a esto. Verás, ahora tenemos 82. Podría decir que quiero que sean diez de cada diez. Al parecer, probablemente deberían ser diez. ¿Ves cuántos tenemos ahora? Ver ahora tenemos tamaño, la tercera página es nueve. Cuando era 20, ¿cuál era la página total? La página superior probablemente debería ser aproximadamente la mitad, ¿ves? Al poner esto la página superior es cinco. Bien, entonces creo que entiendes el concepto, chicos, realidad no quiero repasar por todos los detalles, pero ahora ya ves cómo funciona. Entonces podría variar esto, elimino el papel que realmente podrías jugar con esto, jugar con esto, quitar el papel. También podría decir, ¿sabes qué?, eliminar todos estos criterios. Pero esto va a ser malos. Entonces, si vas a quitar todo esto, no voy a pasar nada, surge stile Verás, tenemos 24.001, pero esto en realidad lo limita. Estamos seguros de que esto inmediatamente limita así que vamos a tener entonces podemos empezar a consultar a través, ¿verdad Entonces te estoy mostrando que todo es opcional. Todo es opcional, ¿verdad? Podría decir, no quiero esto. No quiero esto. Sólo quiero mujer, ¿ verdad? Este solo femenino. Verás, consígalo. Obtienes exactamente lo que pedimos por todas las mujeres. Seguro que ahí tienes el concepto. Bonita creo que esto es bastante manejable. Manejable en el sentido de que conocemos el elemento total de antemano. No sé BC basado en ningún criterio que estemos pasando. Estás pasando cualquier criterio, sabemos a lo que nos estamos metiendo y luego podemos usar esa información informada para hacer lo que quiera. Ahora bien, algunos solo prefiero usar un tamaño de página de cinco, el uno es salario entre 30 mil y tal vez 100 100 100 mil vamos a buscarlo. Bien, entonces vemos que estos son todos los detalles escritos. Entonces esto es bastante genial. Esto es bonito, bastante genial. Entonces puedes usar esto para luego mostrar tu pantalla y mostrar para la interfaz de usuario, el front-end para mostrar lo que quieres. Muestro elemento total disponible porque esta es información suficiente para ti. En base a cualquier consulta que pases en la primera vez, vuelve con el elemento total. Entonces puedes usar eso para decir, Este es el número total de página en caso de que quieras ver más detalles en la página, o puedes querer ver 20 y pasar 20 y cuando vuelvas a golpear esto y esto funciona. Ahora, sé que lo mencioné para mí, esto es preferible también les he demostrado chicos que podrían lograr lo mismo con estos primeros bits, que es para el subcontratar Te mostré que podrías usar lo mismo para el subcontratar Pero solo eso recuperarás el concepto de co fuente. Y ahora tienes que estar navegando por la cofuente de principio a fin, pero seguro no sabes el número total de elementos que existen. Eso no se puede determinar. Pero esto le da el elemento total que existe, por lo que podrías saber cuántas veces necesitas consultar. ¿Todo bien? Espero que esto realmente converse a menudo. Entonces esto es todo el riesgo para la paginación. Entonces te doy estrella, elige cualquier estrella que quieras. Ahora, otra cosa que no hice, que es toda la belleza de la paginación Podrías comentar algunas cosas. Se podría decir, no necesito el UUID. No necesito la identificación del empleado. No necesito el género, no necesito fechas de nacimiento. Pero sin embargo, cuando califique esto, solo dame este elemento, nombre, salario, rol, edad, y si está activo. A ver. Y puede ver, eso es exactamente lo que vemos, que es la funcionalidad o ventaja central central que GAF QL ofrece sobre los demás Necesito mostrar esto porque en realidad he pasado por mostrarte cómo funcionan las dos paginaciones Necesito mostrarles que esto sigue funcionando igual. Imagine un conjunto de datos rápido y grande. No quiero fastidiar tu sistema, eliminar los detalles que no necesitas y solo recuperar lo que necesites. T Los veré en los próximos medios 91. ExceptionHandling, parte 1: Oigan, chicos, es bueno tenerlos de vuelta. Justo en esta sección, estaremos hablando o implementando excepciones, manejo de excepciones. Ese es el foco central de esta sección en particular. Seguro que vas a disfrutar de la misma manera. Disfruté creando este curso. Todo bien. Vamos a sumergirnos . Vamos a sumergirnos. Lo que vamos a hacer para preceder realmente a esto, quiero crear algunas excepciones Vamos a crear un paquete llamado exception. Todo bien. Voy a entrar y crear un paquete llamado exception. Impresionante. Tienes un paquete llamado exception, dentro vas a crear algunos detalles extra, algunas excepciones. Vamos a tomar en una excepción no encontrada. No se encontró ninguna excepción como excepción personalizada. Entonces vamos a uh voy a extender la excepción de tiempo de ejecución. La excepción de tiempo de ejecución. Sigamos adelante y anulemos. Vamos a anular solo dos detalles. Así que voy a decir insertar método de anulación. Solo anulemos esto y anulemos Anulemos la base y anulemos la cadena. Creo que esto funciona. Bien. Esto está bien. Sigamos de nuevo e implementemos también la excepción de proceso. Vamos a tener una excepción llamada excepción de proceso. Más como excepción que ocurre dentro un proceso también tenemos esto que está bien. Creo que deberías seguir adelante y también implementar. Intentemos implementar intentemos implementar la excepción Acceso denegado. Vamos a quedarnos con esos tres por ahora. Excepción de acceso denegado. Evaluar la excepción nueve. Todo bien. Entonces ahora tenemos unas excepciones personalizadas. Entonces con esto ahora, vamos ahora a entrar en todos los lugares donde hemos implementado algunas excepciones y empecemos ahora a reemplazar. Sustituyamos cada una de ellas con estas excepciones. Bien, entonces voy a revisar el servicio de dirección. ¿ Tenemos alguna excepción? No. Comprobemos el servicio común. ¿Tenemos una excepción? Oh, sí. Entonces aquí tenemos una excepción. Al parecer, estamos tratando encontrar mi identificación si no está disponible, apostamos en no encontrado. Entonces, una excepción no encontrada, que en realidad hemos creado una excepción no encontrada. ¿Bien? Ya ves, se remonta a nuestros detalles todavía. Fresco. Nosotros tenemos esto. Comprobemos también. Aquí estamos tratando de encontrar por nombre. Si el nombre no existe, vamos a usar la misma excepción no encontrada. Esto funciona. Vamos a revisar. Acudir al servicio de la empresa. No tenemos una excepción lanzada. Comprobemos aquí. No tenemos una excepción lanzada. Conferencia al servicio de detalle del empleado. Empecemos desde arriba. ¿Nosotros? Oh, sí, lo hacemos. Aquí dices aparentemente es una excepción de proceso porque no encaja en lo que esperas. Llamemos a esto una excepción de proceso. Vamos a entrar. Si no, ¿qué más? ¿Tenemos una excepción? Ah, sí. Tenemos una excepción aquí. Simplemente no lo encontré. Esta será una excepción no encontrada. ¿Qué pasa con esto? Esto ya existe, esto debería ser una excepción de proceso. ¿Qué más? ¿Qué más? A ver. Aquí habrá una excepción no encontrada. Sí, en realidad estamos rastreando y cambiando todos los detalles aquí también será una excepción no encontrada. Genial, genial, genial, genial. Bien. Así que hemos seguido adelante para cambiar realmente la mayoría de estos detalles, lo cual es bastante genial. Comprobemos donde tenemos convertidor um. Hicimos algunas cosas aquí, ¿verdad? Entonces aquí donde estamos lanzando la excepción ilegal, entremos y lanzemos podemos simplemente la excepción de proceso, una excepción de proceso. Reemplazar excepción Neil, ¿verdad? Esto va a funcionar también. Sí, así que estamos estandarizando todo para usar ahora nuestras excepciones personalizadas Entonces ahora tenemos el control sobre él. Como en realidad declaramos excepciones personalizadas, vamos a atrapar todas las excepciones. Bien, creo que esto es genial por ahora. ¿Hay algún otro lugar? Comprobemos la tabla de poblar. ¿Entrenamos una excepción aquí? No, no lo hicimos. ¿Lo hicimos? No, no entrenamos una excepción. Más bien, acabamos de cortar toda la excepción. Estoy revisando mi T, la MPA T, no lo creo. Aquí no tenemos ninguna excepción. Bien, así que hola, chicos, en realidad hemos podido hacer eso. Ahora vamos a probarlo. Vamos a probarlo. Probemos la excepción sin manejar nada, veamos cómo se ve. Voy a traer a mi Docker. Voy a traer a mi Dockers Dockers acercándose. Después en la siguiente pieza de paso, vamos a comprobar con cuál queremos probar. Bien, con que queremos probar más bien. Esto crea empleado. Cuando estamos tratando de crear empleado, esperamos que tengamos una identificación de empleado, número de departamento, correo electrónico, se requiere rol. Uno de ellos debe estar disponible. Si está disponible, en realidad lanzamos un error que en realidad estamos tratando de pretar esto Esto es muy importante. Vamos a usar esto. Vamos a hacer, voy a entrar voy a usar mi componer para comenzar en el docker a menos que se demuestre que ha comenzado con éxito Voy a entrar aquí para comprobar si ha comenzado. Sí Dice listo para empezar a aceptar conexión. Esto es genial. Esto chicos bastante chulos. Voy a volver a esto está bien. Volveré al servicio. De hecho estoy usando esto está bien, comencemos tu aplicación. Voy a iniciar la aplicación. Bien, entonces estamos iniciando la aplicación. Entonces voy a hacer una prueba, y vamos a ver exactamente cómo surge esto. Entonces, ¿por qué publicar video en parte en realidad aparece? Todo bien. Por lo que se ha puesto en marcha con éxito. Bien, así que entremos. Entonces, cuando estamos tratando de crear, ¿qué esperamos aquí? Entonces dos detalles, ¿de acuerdo? Podemos probar con esto lo que vas a hacer y también podemos probar con Vamos a verificar los detalles. Si el ID de empleado no es tarifa tratando actualizar una dirección de identificación de empleado, y no se encuentra. La idea es solo mostrarte cómo saldrá la excepción si no se maneja adecuadamente, y vas a ver que no es realmente bonita en absoluto. Entonces lo que voy a hacer Bien, así que volvamos a nuestra colección. Así que voy a volver a nuestra colección. Ahora estamos tratando de crear empleado. Estamos tratando de crear empleado, crear el empleado. Este es el nuevo empleado. Respetar a la persona tiene un papel, tiene lo que voy a hacer, voy a sacar esto, voy a sacar esto. Dejémoslo en esto y probablemente solo pondré 11 aquí. La idea es sólo simt una excepción. Intentemos crear este empleado eso es lo que nos da. Bien, es un error del servidor de Internet. Se puede ver, pero obtener error del servidor de Internet, no sabemos exactamente qué pasó. Sólo estamos diciendo un error del servidor de Internet porque básicamente no sabemos lo que hemos hecho excepto para ahora ir a revisar los registros y esto no es bonito para el usuario. ¿Ves? Se requiere el rol del departamento de ID de correo electrónico. Esto es lo que esperamos ont estamos viendo un error del servidor de Internet. Esto no es lo suficientemente descriptivo. Significa que tenemos que hacer algún trabajo extra. Necesitamos al menos mostrarle al cliente o los clientes lo que están haciendo mal, y eso es exactamente lo que queremos lograr. Probemos uno más. Probemos uno más. Cuando estamos tratando de actualizar la dirección, estamos tratando de actualizar la dirección existente, ¿verdad? Solo volveré y leeré sobre esto para que no arruine mi colección. Estamos tratando de actualizar la dirección. Actualizar dirección esperamos que este ID de entidad esté disponible, así que solo voy a estropearlo un poco. Aquí también voy a estropearlo un poco. Intentemos actualizar una dirección existente y veamos qué pasa. Vamos a darle a esta flecha de servidor de Internet. Verán, chicos, estamos recibiendo la flecha del servidor de Internet. Intentamos dejar de trabajar y actualizar temporalmente, solo estamos obteniendo la flecha del servidor de Internet. Ese es el básico que obtienes. Eso es todo lo que obtienes. Si ves, ahora esto es decir UUID picadura demasiado grande. Aquí estamos consiguiendo cadena EID demasiado como, vamos a probar otra. Vamos a reemplazar esto. Vamos a traer esto de vuelta a la aleta normal, vamos a estropearlo un poco. Vamos a estropearlo. Bien, vamos a darle a esto. Error interno del servidor. Estamos recibiendo un error del servidor de Internet, veamos el tipo de error es cierto. ¿Ves? Ajustar para con ID de entidad no encontrada. Ajustar para empleado con identificación, esto no encontrado. Debería haber sido un error apropiado. Estamos recibiendo un error que no está bien. Voy a dejar esto de la misma manera, vamos a probarlo de nuevo. Pero en esta ocasión, implementemos ahora un manejo adecuado de excepciones. Los veré chicos en el siguiente video. 92. ExceptionHandling, parte 2: Oigan, chicos, es bueno tenerlos de vuelta. Todo bien. Entonces vamos a entrar ahora mismo para que implemente el manejo adecuado de excepciones. Entonces vamos a hacer hay dos formas en las que podemos implementar el manejo de excepciones. Podría ser moderno para mí porque en realidad hay varias formas de hacer las cosas en primavera. Te voy a mostrar dos maneras. Déjame ponerlo de esa manera. Te mostraré dos formas de implementar realmente el manejo de excepciones. Pero sin embargo, prefiero el segundo método porque es más declarativo, ¿verdad? Es más decorativo. Yo uso la palabra declativo porque pone las cosas en una perspectiva o en un contexto particular Y eso lo vamos a ver. En primer lugar, usemos la forma genérica, ¿verdad? Yo voy a crear esto. Voy a llamar a esto. Voy a llamar a esto, solo llamo a esto, ¿cómo debería llamarlo? Lo llamaré manejador de excepciones. Vamos a llamarlo alterno. Quiero llamarlo manejador de excepciones alternativo. Vamos a llamarlo manejador Alternativo de Excepciones Alternativas. Número el nombre realmente no importa, pero debería ser lo suficientemente descriptivo. Debería ser lo suficientemente descriptivo para decir exactamente lo que estás tratando de lograr. Ahora con esto, se extendería. Extendería el fetcher de datos. Excepción de búsqueda de datos. Excepción, adaptador de resolución. Tienes que hacer esto. Creo que no deletreé esto correctamente, así que solo lo deletrearé. Adelante y renombrar este refactorial esta alternativa. Es por ello que es necesario incorporar la excepción de la característica de datos es sobre el adaptador y básicamente lo convierte en un componente, tiene que ser visto como un haz. Ahora, entonces anularemos algunos métodos. Vamos a traer esto para que podamos anular. Ahora, como puede ver, podemos anular dos métodos. Número uno, se puede ver que está a la altura de soltero, genial. En segundo lugar, también podemos anular es hasta múltiples errores. Estos son los dos detalles que realmente necesitas anular. Estos dos detalles. Es hasta single ands a múltiples errores. Ahora, yo haría esta nota. Esto toma los más altos precedentes, los más altos precedentes. Por favor, tenga esto en cuenta. Si tienes precedex pienso pre precedencia. Si tienes estos dos, implementando el mismo tipo de error, tomaría esto primero antes de asumir esto. Favor de avisar amablemente. Si tienes una flecha ya definida aquí que esta está cogiendo una flecha y esta también está atrapando la flecha, esto tendrá prioridad Bien, pruébalo. Lo que voy a hacer, voy a comenzar esto antes que nada, para que veas cómo funciona Y en realidad vamos a trabajar en esto. Entonces digo que voy a decir si la excepción, ¿verdad? Instancia de ¿cuáles son las excepciones con que estamos probando testnelia Vamos a confirmar. ¿No lo encontré? ¿Qué hay de aquí? Cualquier proceso, no se encontró ningún proceso. Entonces usemos esos dos. Si se trata de una instancia de excepción de proceso, ¿ verdad? Entonces, ¿qué hacemos? Bien devolver una gráfica QL ern error. Este es este tipo lo que se espera. Vamos a devolver esto. Bien, ¿puedo darle mucho más detalle? Cuáles son los detalles que le puedes dar. Pero el regreso está en lugar de este mensaje, voy a elegir la excepción. Diré que el punto de excepción obtiene mensaje localizado. Eso nos dará el error exacto que masticamos, Obtener mensaje localizado mensaje localizado Entonces esto está bien. Entonces también podemos definir algo llamado el tipo de error. El tipo de error podría darnos el tipo de error que código. Al parecer, fue un mal pedido. Si tienes una excepción de proceso, supongamos que es un mal registro porque es posible que se trate básicamente de un error de servidor de Internet. Pero voy a guardarlo como una mala petición. Diré flecha. También tienes este tipo de error. Tipo, puntos mala solicitud, tipo de error, solicitud mala. Esto viene de lo que necesito. Esto debería estar viniendo de entonces la señal. Entonces debería venir del marco de primavera, error. ¿Tipo? Sí. Sí. Lo necesitamos de spring framework, Graph Que ejecución, tipo error. Puntos mal pedido. Eso es genial. Entonces podemos establecer el camino. La parte al parecer, ni siquiera sé interpretar este camino, pero básicamente nos dan la opción de interpretar realmente partes. Obtenemos ejecución. Obtener el paso de cution infos get path. Yo solo te muestro un camino claro. Entonces también podemos hacer el concepto de ubicación. Ubicación, sólo hay que poner la misma ENV, que viene de este entorno de obtención de datos, chicos que viene de este entorno de obtención de datos, chicos. Viene de aquí. ENV, digamos que eso se ve. Vamos a ir a la casa. Entonces vamos a obtener la ubicación de origen. Esto está bien. Esto es genial. Hagamos lo mismo. Si esto es así de bien, entonces solo quiero hacer un fallar rápido. Si no coincide con esto, no debería pasar por él solo debería saltarse ya. Hagamos esto también. Si sólo voy a traer esto en no. Entonces, en lugar de usar IL, vamos a rellenar primero. Si no se encuentra, no se encuentra excepción hará lo mismo. También es un mal pedido. Creo que esto también está bien, ¿verdad? Estamos escogiendo el exacto. Entonces si no coincide con nada, entonces devolvamos uno genérico. Nos volvemos algo genérico, no podemos encontrar nada. No concuerda con nada, que mach algo genérico. Esto sería esto, ¿verdad? Entonces podemos hacer esta Sara interna porque no coincide con nada, ¿verdad? Esto es bastante genial. Comencemos con esta aplicación. Reiniciemos la aplicación. A medida que empezamos, la aplicación ya que empezamos bastante genial. Bastante genial. Próximamente. ¿Se acerca esto? Genial. Esto ha comenzado con éxito. Entremos de nuevo y probemos esto. Voy a volver a crear al empleado, crear al empleado, quitando los detalles que agregué antes. Los detalles que agregué antes, estos detalles porque esperamos que esté ahí. Voy a sacar esto. Voy a sacar esto. Ahora vamos a darle otra vez. Como puedes ver, esto es genial chicos. Ahora tenemos el error particular que es ID de empleado, departamento, rol de correo electrónico se requiere, que es exactamente lo que estamos esperando. Si nos fijamos en esto, es exactamente lo que estamos esperando aquí. Aquí, es exactamente lo que esperamos. Se puede ver que esto funciona bastante bien. Ahora la parte es solo la parte del empleado aunque no sé cómo interpreta esto , pero está bien La clasificación es una mala petición. Entonces puedes escoger esto y empujar a tus clientes para que en caso de que sean errores, les des esta definición o este esquema, ellos puedan mirarlo para saber interpretar los errores. Normalmente, si no hay error, esta parte de error siempre será nula. Los errores siempre serán pero si hay una flecha, ya sea nula o vacía matriz vacía. Pero si hay una flecha, al parecer obtienes estos formatos. Bastante genial. Ahora hagamos lo mismo. Para ID de entidad. Voy a decir entidad, no voy a cambiar nada. Lo que espero que diga es el ID de entidad no encontrado, algo en esa línea. Vamos a darle a esto otra vez. Puedes ver dirección o empleado con DNI no encontrado. Se trata de chicos bastante chulos. Estoy seguro que ahora ves cómo funciona. Ahora, menos común en el siguiente video para implementar para múltiples errores. Tenemos también para múltiples errores. Te dije que hay dos formas, que es una única resolver el error único y el error múltiple. Los veré chicos en el siguiente video. 93. ExceptionHandling, parte 3: Oigan, chicos, es bueno tenerlos de vuelta. Todo bien. Ahora hemos podido demostrar que esto está funcionando como sospechado. Ahora, vamos a implementar para múltiples. Quiero mostrarles que esto tiene más prioridad que esto Entonces voy a traer exactamente el mismo error, derecho, exactamente la misma flecha. ¿Y qué voy a hacer? Voy a elegir esto todo como es, ¿ verdad? Todo tal como es. Pero recuerde, esta ahora se convierte en una lista mientras que ésta devuelve un solo objeto. Entonces, lo que voy a hacer no es difícil. Sólo voy a traer esto y lo envolveré dentro de una lista lista punto off. Todo bien. Voy a tener esto está bien. Esto igualmente, la lista punteó apagado. uso real esa es una de las cosas hermosas del nivel Java, usas una lista de por último, estas partes. Entonces presiona esto en la lista punto off. Ahora bien, ¿cómo vemos cuál tiene prioridad? La mejor manera de ver es ejecutar en modo de depuración. Voy a ejecutar esto en modo de depuración. Voy a colocar esto aquí. Voy a colocar esto aquí y voy a colocar esto aquí. Al parecer son los dos errores, así que solo lo colocaré y lo colocaré aquí. Colóquelo aquí, coloquemos aquí, y presionémoslo aquí. Presionémoslo aquí y vamos a probarlo aquí. Verás, estoy presionando en esto. Veamos cuál realmente tiene prioridad. Dije que esto va a tener prioridad, y lo creo así Comencemos la aplicación en el modo bug. Una vez que entra, podemos ver cuál de ellos realmente nos da exactamente lo que estamos buscando. Estamos iniciando la aplicación, manera que en realidad comenzó con éxito. Oh, sí. Sigamos adelante y golpeemos vamos a darle a esto. Comienza con el último que probamos. Vamos a darle a esto. Bien, ahora ya se puede ver. Si entras, puedes ver que ignoró esta es una sola flecha e hizo de ésta un precedente superior Si revisas la documentación, ahí está escrita. He podido demostrar que esto tiene mucha prioridad. Hagamos también por el otro. Hagamos por la otra, estas partes o vamos a crear. Veo que esto también tiene prioridad. Espero que esto quede claro, chicos. A, esto es bastante genial. Voy a liberarlo. Volveré a ajustar mi esquema porque mi hotel porque no quiero perder los datos cuando estoy compartiendo el guión, ¿de acuerdo? Bien, así que esto es genial, chicos. Esto es bastante genial. Bien, así que he podido demostrar que realmente tienes podrías usar esto para realmente disolver tu error Imagínese si tiene 20 errores. Entonces significa que hay que estar comprobando la instancia de cada uno de los errores personalizados. No creo que esté bien. Esto funciona bien. No tiene ningún problema, ¿verdad? Pero creo que también hay una mejor manera de lidiar con ello, que es lo que les voy a mostrar en el siguiente video. Los veo chicos en el siguiente video. 94. ExceptionHandling, parte 4: Oigan, chicos, genial tenerlos de vuelta, ¿verdad? Así que hemos podido mostrar una forma de atrapar realmente nuestra excepción, que está extendiendo este adaptador zoa de excepción de búsqueda de datos zoa de excepción de búsqueda de Vaya, eso es un bocado. Todo bien. Así que en realidad hemos podido hacer eso, y esto funciona como se esperaba. Bien. Entonces la otra opción o la alternativa para hacer que eso funcione, necesitamos eliminar realmente el componente aquí. Entonces esto ya no se ve como un ben, ¿ verdad? Hay que encomiar esto. Ya no se ve como una viga. Entonces ahora vamos a explorar realmente las otras aperturas. Así que voy a llamar a este controlador de excepciones globales porque eso es básicamente lo que quiero que sea un controlador de excepciones globales, un controlador de excepciones globales No hace falta que hagas nada elegante, sólo voy a seguir el mismo patrón de primavera, que ya sabes. Sólo voy a agregar en consejo de controlador. En Asesoría del Contralor. Un consejo de controlador, increíble. Impresionante. Voy a tener en consejo de controlador. Ahora, en esta ocasión, utilizará una anotación llamada en GraphQL, un controlador de excepciones GraphQL un Después pasando el tipo de excepción que quieres atrapar. Verás, toma en una clase, toma en una clase que extiende un triable Como puedes ver, todas nuestras clases, esto es extender un tiempo único y verificar una vez, extender la excepción, excepción es extender los agudos Entonces simplemente significa que una excepción de proceso también es un trob entre comillas Lo que vamos a hacer aquí mismo, vamos a colocar nuestra PSExeception, o Impresionante. Dices público, devuelven ese tipo, la flecha Graph Queer como ya conocemos , flecha Graph Queer. Luego también devolvemos nuestro entorno final de obtención de datos. Recuerde, esto está disponible para lo que siempre está disponible en contexto. Voy a llamar a este proceso excepción. Esta es una descripción del proceso bastante genial. Todo bien. Voy a traer esto, luego voy a regresar voy a regresar. Son solo los mismos formatos, chicos, así que probablemente solo voy exactamente el mismo formato que esperar. Simplemente voy a hacer clic en este formato aquí. Voy a entrar aquí y sólo lo devuelvo directamente. Entonces aquí va a ser llamemos a esto X, entonces x, mal pedido, y todo simplemente sabe igual. la misma manera, solo voy a hacer lo mismo por lo mismo para excepción excepción, ¿verdad? Tiene que ser reconocido. La parte que espera. Esto tiene que ser reconocido, ¿verdad? Excepción. Entonces Excepción, puede tener para que veas que el nombre está diciendo, Oh, esto es diferente. Entonces para esto, voy a cogerte no encontraste excepción. No es divertido excepción o clase. Espero que venga de lo mismo. Sí, eso es correcto. No es una excepción divertida. No va a ser una excepción divertida. Esto está bien. Sólo va a parecer un método sobrecargado, ¿de acuerdo? Esto es lo mismo, ¿verdad? Voy a dejar esto aquí. Entonces vamos a atrapar también. ¿Qué más podemos atrapar? ¿Qué más podemos atrapar? No podemos sentarnos tenemos el error genérico, cualquier error de tiempo de ejecución, ejecutar cualquier cosa que no se corte, vamos a atraparlo en la excepción de tiempo de ejecución incorrecto, una excepción de tiempo de ejecución, al parecer va a ser un error de servidor de Internet. Entonces lo mismo, vamos a atrapar una excepción en sí. Excepción. Solo estoy mostrando las diversas formas en las que podrías personalizarlo según sea necesario. A estos también voy a llamar. Esto es básicamente todo lo que necesitas hacer. Con esto, corramos en el modo bug. Ejecutando el modo bug, va a colocar esto aquí o colocar esto aquí y se puede ver que esto funciona igual. Esto es más contextual. Creo que este lugar en realidad este se ve hermoso. Realmente no sale fuera de lo que ya tú. ¿Correcto? Ves usar exactamente el mismo formato. A diferencia de si está desarrollando un barco oscilante tradicional, usaría un manejador de excepciones Quiero decir, el HTTP más bien. Se utiliza el manejador de excepciones Aquí está utilizando un controlador de excepciones GraphQL. Entremos y golpeemos el mismo método. Voy a estropearlo también. Voy a estropearlo esta parte , vamos a llamarlo. Como pueden ver, este fue Cott Ooma sc. ¿Ves que esto funciona, chicos? Impresionante. Esto funciona solo podría congelarlo. Si verificas, nos da la definición exacta. Esto no se encuentra. De igual manera para los últimos bits. Los últimos pedacitos para el plan Nian, voy a sacar esto. Saquemos el departamento y vamos a darle a esto. Bien, puedes ver que atrapa la excepción del proceso que se mostró. Voy a liberarlo y vemos correctamente, dice que esto se adquiere. Todo bien. Hemos podido probar esto y esto funciona maravillosamente. Podrías entrar. Si vemos alguna otra excepción ves que está cortada dentro la aplicación que no está contabilizada y quieres mostrar el mensaje a tu cliente. Solo necesitas atrapar esa excepción exacta. Vamos a estar agregando seguridad agregando seguridad. Al parecer, algunos errores podrían ser arrojados en la capa de seguridad. También quiero mostrar algunos tal vez una mala autenticación, mala credencial Solo necesitamos entrar y solo agregar el tipo de clúster que se mostró y solo resolverlo por ti. Esto es chicos bastante chulos, y eso es todo lo que hay que manejar con excepción. No es nada difícil. Básicamente obtienes solo necesitas definir tu excepción personalizada. Usa este método, este método, que es el resultado a un solo nivel si lo eliges, tienes que estar comprobando la instancia de o verificas los múltiples errores y usar instancia de pero recuerda, el resultado a múltiples errores tiene más prioridad que esto O alternativamente, no usas esto a pesar de todo, solo usas el estilo HTTP de primavera. Pero esta vez, usas un dispositivo controlador y realmente traes un manejador de excepciones QL de brecha de arte Eso es todo lo que hay al manejo de excepciones. Los veré chicos en el siguiente video. 95. Validación, parte 1: Oigan, chicos, es bueno tenerlos de vuelta, ¿verdad? Es realmente increíble que hayas regresado y oigas realmente presenciar esta sección. En esta sección, estaremos hablando de validación. Derecha. Validación. Ahora lo sé virtualmente, mayoría de la gente habría estado preguntando, ¿de acuerdo? Realmente me encanta graph Co. Pero el punto es, ¿puedes hacer alguna forma de validación hiperida Es posible oh, sí, tenemos eso realmente disponible para nosotros, y eso es lo que discutimos en esta sección o implementando. Entonces, si iniciaste el curso desde el principio, te dije específicamente por qué estoy usando Java 22. Y una de las razones básicas por las que estoy usando Java 22 es porque quería que apoyara la validación extendida de Graph co Java. Guau, tal bocado. Sólo tienes nombres largos. ¿Bien? Entonces, ¿cómo qué soporta esto? Como puedes ver, la última versión sólo soporta Java 22. Ahora sé que Java 23 está fuera ya que en este momento, realidad estaba grabando este video, pero aún no tienen soporte para ello. Intenté usar Java 21. Me hubiera encantado apegarme a la versión LTS. No obstante, descubrí que esto no estaba funcionando como se pretendía, estoy trabajando como se pretendía. Vas a entrar y traer esta dependencia y luego comenzar nuestro proceso de validación. Impresionante. Bien, chicos, entremos en ello. Lo primero que vamos a hacer, voy a entrar y simplemente aclarar esto. Toma esto. Después entraré en mi PandXL mi Ponder XML. Voy a traer voy a traer la validación, la validación. Yo sólo refresco esto. Para quienes están bastante interesados en resolver vulnerabilidades, esta vulnerabilidad se disolvió como resultado. Solo necesitas moverte a Creo que lo último la última versión de primavera a partir de este momento es Springbok 335, ¿verdad Solo necesitas pasar a esa versión y todo esto se habrá ido, ¿ verdad? Todo esto se habrá ido. Prácticamente podría mostrarte ahora mismo. Este soy yo que chicos un poco. De alcance. Pero quiero mostrar para aquellos que en realidad están implementando un sistema empresarial y eres muy particular sobre las vulnerabilidades y quieres eliminarlo todo. Así es como resolverlo. Una vez que colocas esto en 335, esto va cómo resolver realmente todo. Y cuando regreses, verías que todos esos errores se han ido. Esos errores han desaparecido. También podríamos trabajar con 335 y eso básicamente va a funcionar. Entonces, por favor, no se alarme. Sólo te estoy enseñando cómo hacerlo. Voy a volver a lo que ya usamos. ¿Verdad? Tres o tres o cuatro. Eso es con lo que comencé un curso y sería genial terminar realmente con eso. Yo querría cambiar la versión, Nat y ella, bien, porque algo en alguna parte podría funcionar. Entonces voy a sacar esto. Voy a refrescar esto, y pueden ver que esto realmente va a volver, todas nuestras vulnerabilidades. Si realmente venimos, en realidad está de vuelta. Todo bien. Así que vamos a añadir el primer paso, que es la validación extendida. Esto es bastante genial. Así que ya hemos podido completar ese paso. Comprobemos la documentación y veamos qué hacemos en realidad. ¿Cómo se espera que utilicemos esto? Bajemos. Lo primero que tenemos que declarar, queremos tener algo que se llame directiva. Recuerden, esto no debería ser extraño para ustedes. Usamos la misma directiva cuando estamos tratando hacer paginación. Vamos a entrar. Bien, así que vamos a entrar en nuestra carpeta, esta carpeta de recursos, y vamos a revisar nuestra directiva. Recuerden, yo introduje esto donde estamos tratando de llevar directiva, ¿verdad? Estamos tratando de hacer paginación más bien, ¿verdad? La directiva de conexión At. Lo mismo que hay que usar aquí ahora, hay varias directivas aquí, ¿verdad? Varias directivas. Entonces necesitas decidir cuál quieres usar, solo tienes que agotarte. Como pueden ver, hay una directiva. Hay una directiva, veamos. Hay una directiva para un máximo decimal si eso es lo que necesitas para un conjunto cae para una media decimal, un dígito, al máximo, en la media, en error negativo o negativo, no contenedor vacío patrón vacío además esto es realmente cierto para saber exactamente lo que necesitas. También está en blanco, ¿verdad? También está en blanco. Entonces vas a traer lo que necesites, y eso es lo que vas a aplicar a tu sistema. Necesariamente no necesitas de todo, ¿verdad? Simplemente elija exactamente lo que necesita e impleméntelo. Te voy a enseñar cómo hacerlo enseguida, ¿de acuerdo? Entonces esto ya está disponible. Agregué esto a la descripción. Entonces en caso de que quieras ir ahí, ¿verdad? Así que en realidad voy a entrar ahora mismo y luego comenzar a agregar todo lo que necesitamos en. Todo bien. Entonces entremos. Entonces la propina directa, tienes la propina directa. Impresionante. Entonces ya tienes la directiva, así que entremos y traemos esto. Lo primero que quiero traer, quiero traer directiva, directiva llamada AX M a mí. Para el a mi, tengo valor, ¿verdad? Tener un valor, que va a estar en int y la tinta antes de que sea cero significa el mínimo quiero ser cero entonces también quiero el mensaje. Quiero darle un mensaje personalizado. Debes poder declarar tu mensaje, lo cual está bien. Cadena de mensaje, tiene que seguir el mismo formato, chicos. No estoy generando esto, ya está hecho en documentación. T solo ve a Admin. Yo sólo voy a Min. Veo que Min T dice que acabo de traer todo esto. ¿Esto es todo lo que necesitas para traer? Simplemente puede copiar esto directamente, en lugar de simplemente escribir. Podría traer esto , pero creo que deberían ser formatos mob. Sólo lo estoy formateando de la manera adecuada. ¿Verdad? Ahora, dices que esto es todo lo que necesitas hacer, ¿verdad? Esto es todo lo que necesitas hacer. Ahora bien, esto ya lo trae. Entonces cuando quieras usarlo, ves exactamente cómo vas a aplicar. Así que entremos y llevemos las otras cosas que necesitamos. Todo bien. Solo publiquemos el video, solo traigo a los otros chicos. Todo bien. Entonces hagamos una más. Yo les voy a enseñar a ustedes sus otras cosas. Simplemente publicaré rápidamente el video y traeré las otras cosas que necesitamos. Este video no llega a registrar. Todo bien. Entonces necesitamos para el tamaño, en realidad podrías traer NN Va a ser un ocho, cero. Oh hombre, no me gusta escribir, ¿verdad? Soy un desarrollador perezoso. Desarrollador de Lesia en realidad implementa aplicaciones bastante geniales así que no tengo que escribir. Esto es por talla, sólo voy a traer esto en lo que necesito aquí. Voy a traer esto. Voy a traer esto, traer esto. Entonces para MATT, luego para enmascarar esto. Déjame pausar el video y traer tus dorsales dia. Ustedes. Me metí y compré las otras cosas con dian lo he estado necesitando no en blanco. Esto es solo esto. Recuerden, chicos, lo hice chiflados. Esto es una locura. En realidad no tienes que almejar nada. Hay alguna documentación. Mira el espacio en blanco. Veamos en blanco. Blank dice directiva, no en blanco, este mensaje y esto es exactamente lo mismo. Acabo de reformatear, es exactamente lo mismo que necesitas. Este es el primer paso que necesitamos. Recuerda, agregas en la bomba dictML llevar la bomba directa sumando más bien la dependencia me refiero en la bomba dictMLG a directiva, poner en directiva Directriz es lo mismo que tienes cuando en realidad, lo que tratamos de hacer pigination Ahora estamos haciendo lo mismo ahora estamos tratando de hacer validación Con esto hecho, vamos a verte en el siguiente video y luego continuar con este proceso. Los veré chicos en el siguiente video. 96. Validación, parte 2: Oigan, chicos, genial tenerlos de vuelta. Todo bien. Hemos entrado, hemos agregado la dependencia. Compramos en los tipos que usarás. Recuerda que muchos de ellos por si hay algunos que aún quieras usar, por favor tráigalos. Ahora bien, ¿cómo usamos esto? Esa es la siguiente pregunta. ¿Cómo usamos esto? Eso es lo que vamos a abordar en este video. Todo bien. Ahora, antes de seguir adelante para usar esto, hay algo muy importante a lo que debemos prestar atención. Volvamos a la documentación, paso a paso. Ir a la cima. Dice, Si estás usando botas de primavera, veamos, hay un camino para springbot Si estás usando botas de primavera, entonces él dice, si estás usando Graph Q DSL, entonces hablas algo de inglés te dice que deberías usar esto, intenta usar esto, Deberías tratar de traer esto y eso estaría bien. No necesitas molestarte por todo esto, ¿verdad? Solo trae esto solo cable esto, ¿ verdad? Y eso estaría bien ahora. Por favor, preste mucha atención reglas de validación, val nuevas reglas sobre estrategia de error de validación, no nulo, ¿verdad? Así que ten esto en mente, y se supone que debo cablearlo como un cable de runt Ahora bien, si estuviste bastante observador, te has dado cuenta de que ya tenemos algo hecho así para nuestro escalar extendido, y eso es a lo que vamos a ir rápidamente Vayamos a nuestra configuración. Gap queer configure, veo que ya tiene un configurador de cableado equivocado Solo vas a entrar y solo traer estos detalles adicionales que realmente se requieren, y eso es lo que activamos o básicamente, eso es lo que ponemos en marcha, hacemos validación activa. Eso es lo que vamos a hacer bien. Entonces entramos ya aquí, luego entramos y luego traemos los detalles. Ahora, en base a la biblioteca o a la dependencia que trajimos, ya está disponible para decir validación. Esquema de validación de validación, cableado de esquema, cableado de esquema es igual a nueva validación, cableado de esquema. Entonces traigo esto en reglas de validación. Así es como entra. Validw reglas, la barba, voy a decir validación recuerda lo que vimos en la estrategia de validación, yo ern Entonces solo estamos viendo lo mismo, nada diferente. Ahora que trajimos esto, esto es básicamente todo lo que necesitamos. Justo ahora lo cableamos a esta parte. Voy a traer esto aquí. Yo sólo traeré esto aquí. Yo sólo diré puntos. Cableado directo y solo trae esto y eso sería exactamente lo que necesitamos. Impresionante. Ves esto es squa feliz Ahora hemos podido hacer esto, y esto ya es un.El siguiente paso para nosotros es ahora entrar y empezar a traer los detalles que necesitamos. Para ello, para hacer una nota de validación, no sucede dentro de nuestros objetos. Sucede dentro de nuestra gráfica QL o nuestra gráfica QL. Entonces todas las reglas de validación que están trayendo sucede dentro de nuestra gráfica QUS y eso es exactamente lo que estamos obteniendo Todo bien. Entonces saltamos justo adentro. Entonces el primero así que quiero apuntar es nuestra empresa. Recuerda, es la entrada donde estás validando son los puntos de entrada, ¿verdad Por favor, tenlo en cuenta. Son los puntos de entrada. ¿Y cuál es el punto de entrada aquí? ¿El imputado? Recuerden, la imputa es lo que entra aquí. Así que vamos a nuestra API. El incluse es lo que viene aquí. Entonces esto es lo que se validará. Así que ten esto en mente. Entonces, ¿cómo se validaría? Para empleado, si estás usando departamentos, esto será validado. Es simplemente de la misma manera que tienes en tu HTTP tradicional de primavera, ¿verdad? Para empleado, esta será una guía que será validada, esta guía aquí. ¿Todo bien? Para dirección, tenemos dirección también, debe ser la guía que se validará. Así que por favor tenlo en cuenta. Entonces voy a cerrar todo. Bien, vamos a cerrar todo a la derecha. Entonces uso el tintineo derecho, cierro todas las tapas a la derecha. ¿Bien? Todo bien. Así que entremos y agreguemos aquí nuestras validaciones. Ahora bien, la validación es bastante sencilla. Todo lo que tengo que hacer, es. Recuerda que te dije que la coma es importante o no importante, lo que sea así que solo la voy a quitar aquí Voy a decir en no negro. No quiero que el nombre sea negro. Entonces ya ves que podría poner un mensaje. Impresionante el mensaje estaría en com en Company Name bien, déjame ver. Yo solo digo el nombre de la compañía. Nombre de la empresa. Déjenme darle un espacio. Se requiere el nombre de la empresa, ¿verdad? Se requiere el nombre de la empresa. Entonces también usaré el tamaño en él. Yo quiero decidir. ¿Qué talla quiero darle bien? Diré mínimo. El solo decir mínimo, debería tener dos caracteres, ¿verdad? Mínimo dos caracteres. Entonces un mensaje. Podría ser el mayor tiempo posible. Entonces el mensaje voy a decir nombre de la empresa. Comminme debe ser mayor que digamos cuatro Digamos cuatro. Digamos que debe ser mayor. Digamos cuatro. Pongamos cinco aquí. Pongamos cinco aquí. Antes de cinco años, estaban diciendo que la cosechadora debe llegar alrededor de cuatro, esta obra debe ser mayor de cuatro. Obtener alrededor de cuatro serán cinco. Creo que esto funciona muy bien. Más de cuatro, pongamos caracteres de palabra clave. Hagamos esto por esto. Entonces puedes poner tu coma aquí. Esto funciona. Pon tu coma aquí. Entonces probablemente elegiré no usar cómics. Cualquiera que sea el trabajoSeverJ elija no usarlo aquí. Entonces también voy a hacer lo mismo aquí. Yo sólo voy a poner todo esto, voy a usar lo mismo. No me gusta escribir demasiado. Copiarlo encima. Aquí estará el número RC. Se requiere el número RC para no estar en blanco. Entonces debería haber un mínimo de cuatro. A pesar de que recuerdo seis, lo pusimos dos, cuatro está bien. Digamos, el número RC debe salir de cuatro personajes, estoy seguro de que alguien ya está burbujeando Guau, esto también es posible aquí Sí, es posible. Voy a agregar lo mismo aquí, agregar lo mismo aquí. Tenga en cuenta que si agrega su coma aquí, no cambia nada porque ni siquiera se reconoce en primer lugar, ¿verdad Yo solo en realidad hago las cosas más descriptivas. Entonces, por favor, tenga en cuenta eso. Puedes poner esto aquí, probarlo para que funcione, ¿verdad? Lo probé mientras me desarrollaba, así que confiaba en trabajar. Bien, así que aquí vamos a decir oficina central. Se adquiere la oficina central, S oficina central. Oficina central cuatro bien, ponte en cuatro personajes, que puede ser así. Y por último, vamos a validar esto. Diré que este es un país País país se requiere. Un país quiere que se haga cuatro personajes. Todo bien. Entonces, ¿qué pasa con el tipo de negocio? Podrías hacer algo como esto. Podrías entrar. ¿Hay algo como no nulo? C, ¿es algo así como no nulo? No no en blanco, ¿verdad? No en blanco tiene que ver con cuerdas. Solo busca no nulo. No tenemos un no ahora. Es necesario aclarar alrededor para ver cuál básicamente encaja. Podrías usar cosas como patrón, ¿verdad? Podrías usar contenedor tiene que ver con lista. Te dice lo que aplica eso. Verá que esto se aplica a los objetos de entrada. Podría asegurar que esto no Mt también podría funcionar porque se aplica a las ideas de cuerdas. No creo que esto vaya a funcionar porque necesitamos algo tiene que ver con los objetos. Por lo que esto se aplicará para no objetar. Entonces esto está bien. El patrón solo se puede aplicar a la cadena de forma idente. Entonces, por favor, sé muy sensible. Cuando intentas usarlo y estás viendo esto, si no lo haces, solo imaginarías que tu validación no está funcionando, o porque no le prestaste atención necesitas prestar atención a lo que aplica. Wh aplica a eso va a funcionar realmente. En realidad necesito señalarlo. Esto es muy crucial chicos. Bien. Lo he hecho por compañía, estos videos ya se hacen demasiado largos. Dejemos de marcar el siguiente video y sumar para los otros chicos. Los veré chicos en el siguiente video. 97. Validación, parte 3: Oigan, chicos, genial tenerlos de vuelta. A continuación, al siguiente al que realmente quiero aplicar esto. Apliquemos a empleado. Vayamos a empleado empleado. Voy a aplicar a empleado Impute. ¿Por qué usas estos empleados Impute? Seamos muy claros. ¿Por qué usas Employee Imputes Déjame verificar empleado Imputar empleado Imputes. ¿Llegaste a usar empleado Impute? Utilizamos putes de actualización, utilizamos la dirección imputes ¿Usaste alguna imputa de empleado? Déjame estar seguro. Comprobemos encasillamiento No, no utilizamos insumos de empleados. Al parecer, no quieres colocar nada aquí porque si colocas esto, va a ser estricto para tu paginación, así que no quieres tener nada aquí Bien. Creo que podemos hacer por los insumos de los empleados. Cuando estamos tratando de crear, creo que esto sería genial, Esto sería genial. Vamos a entrar. Pongamos las actualizaciones de los empleados. Sí, sé que usamos actualizaciones de empleados. Voy a hacer esto no en blanco y no en blanco. Te dije que si pones una coma, no importa, así que sólo voy a dejarla aquí porque muestra de qué otras formas esto seguirá funcionando Digo identificación de empleado. Se requiere. Entonces para esto por sueldo, voy a usar dígitos en cifras. Voy a poner el mensaje, diría yo, salario no puede superar la longitud, diez, y máximo decimal cuatro. Explicaré lo que eso significa en un poco Explica lo que eso significa. Bien. Voy a tener aquí voy a tener aquí el entero. El entero será diez, luego una fracción. Ahora bien, lo que esto significa es, te traeré bota. Digamos que tienes esta cantidad. Cuando se cuenta esta cantidad, los dos son de longitud deben ser uno, dos, tres, cuatro, cinco, seis, siete Este es este es seis y un dígito aquí es dos. Digo, no quiero que un dígito supere los cuatro. Por eso tiene una fracción de cuatro. La longitud de esto básicamente debería ser de diez, ¿verdad? Entonces por eso si tienes algo mayor que esto, al parecer, ese es un salario de suma mareado Significa que el salario es muy muy caro, ¿verdad? Quiero decir, ese salario es realmente una locura, ¿verdad? Entonces no queremos usar eso, ¿verdad? Entonces imagina que tenemos uno, cero, cero, 00, eso es cinco, uno, dos, tres, cuatro, cinco. Al parecer, no será un salario muy válido, ¿verdad? Todo bien. Probablemente si lo conviertes a alguna moneda, sí, podría ser, pero dejémoslo en esto. Bien. Uh, entonces tenemos insumos de empleados. ¿Qué más podemos validar aquí? ¿Qué más podemos validar? Creo que solo lo dejaré en esto para las entradas de búsqueda, entradas de búsqueda de empleados. ¿Quiero validar esto? No creo que quiera validar esto. Volvamos a nuestra AP. Cuando estamos creando, utilizamos el empleado subcontratado impute Cuando utilizamos imputas subcontratadas por empleados, todos estos tipos dependen probablemente del empleado Pero estamos seguros de que cosas como el salario de género, estos son muy importantes. Sólo voy a poner probablemente dos validaciones, el nombre y el salario, el nombre y el salario. Eso es lo que voy a hacer. Nombre y sueldo. Voy a entrar aquí, lo que lo llamamos de nuevo es empleado subcontratar empleado subcontratado imputar Busquemos imputes subcontratados por empleados. Empleado tercerizado. Empleado tercerizado imputa. ¿Lo tenemos en un lugar genérico? Déjame comprobarlo. Lo reemplazarás, empleado subcontratado Yo salsa tales imputas. Esta es nuestra salsa. Nuestra salsa. Veamos, uh, Persona, persona tiene persona, empleado tiene esto. ¿Por qué te quedaste con esto? ¿Por qué es difícil de encontrar? Creo que probablemente debería poder encontrarla aquí. Esta es la consulta. Vayamos a la mutación, creamos empleado. Este patrón tiene imputa, genial, genial, genial. Es un independiente. Es autónomo generar puse. Sólo voy a colocar esto aquí, no pongo en blanco aquí. No estoy en blanco. Voy a poner en el mensaje. Diré que se requiere nombre. Hagamos para esto también, yo uso un dígito. Mensaje, voy a poner el entero, pongamos diez, la fracción, pongamos cuatro, y el mensaje, veamos, solo voy a escoger el mensaje del último. No me gusta tanto escribir. ¿Dónde lo coloqué? Yo sólo escogeré esto aquí. Impresionante. Yo sólo reemplazaré esto. Esto funciona muy bien. Ya agregué esto en. Recuerden, necesitamos construir esto, necesitamos reconstruirlo ahora para que lo patee. Voy a entrar y voy a comentar todo esto. Recuerda, porque yo uso constantes de excavaciones. Y las constantes DGS no sonreirán cuando no pueda encontrar esas constantes, Después eliminaré la carpeta de destino, luego traeré esto de nuevo. Diré NBN compilar. Por lo que esto debería compilarse sin ningún error. Una vez que lo haga, entraré y traeré esto nuevo y les traeré de vuelta las cosas comentadas. Así que vamos a llamarlo. Impresionante. Entonces esto está de vuelta, así que sólo voy a regresar, quitar esto entra aquí, quita esto. Entra aquí, quita esto y entrando aquí, quita esto. Y por último, entro aquí y me quito esto. Bien. Entonces con esto hecho, creo que somos lo suficientemente buenos para comenzar a probar. Voy a iniciar la aplicación. La aplicación se inicia con éxito. Y vuelve en el siguiente video para comenzar a probar porque tenemos todo, todos nuestros detalles correctamente echados al lado y agregamos todo lo que necesitamos agregar, y estamos bien para probar. Impresionante. Así que esto en realidad está surgiendo. Sí, esto lo declaró con éxito, y no hay ningún error. Los veré chicos en el siguiente video. 98. Validación, parte 4: Oigan, chicos, genial tenerlos de vuelta. Este es el momento en el que nos hacemos la prueba, ¿de acuerdo? Aquí es donde obtenemos los tintes de prueba. Todo bien. Entonces, lo que he hecho antes de este video es que entré para agregar también detalles para las entradas de dirección. Entonces para las entradas de dirección, también tenemos entradas de dirección, algunos detalles en porque esto también es muy válido. Entonces, ¿qué voy a hacer bien? Entonces lo que voy a hacer es que voy a detener esto y luego intentar reconstruir de nuevo. Tan rápido, rápido, detén esto. Intenta reconstruir de nuevo. Recuerda de la misma manera. Les estoy mostrando que en caso de que estén haciendo lo mismo, saben exactamente cómo hacer esto, ¿verdad? No, no esta A. Borraré mi carpeta de destino. Todo bien. Después reconstruyo compilar VN. Detén esto. Yo debería ser compilar NVN Todo bien. Entonces mientras se acerca esto, sólo voy a seguir adelante y luego volver a esta parte y empezar a comentar algunos Todo bien. Bien, bien. Por lo comentado, comentado, comentado, comentado, descomentado Lo genial es que ahora tenemos todo traído para nosotros para que podamos probar que tenemos dirección y los me gusta, dirección y los me gusta. Entonces esto sigue siendo lo mismo, aquí no cambié nada, los empleados siguen siendo los mismos, no cambié nada, agregando más detalles a la entrada de dirección que también pudiéramos probar las entradas de dirección. Bien, así que vamos a probar a estos tipos. Bien. Entonces, lo que vamos a hacer por la compañía, estamos tratando de crear compañía. Voy a estropear esto y quitar esto. Voy a quitar esto voy a quitar esto. Volvamos a validar. La validación para los estados de la empresa, debe ser de al menos cuatro, al menos cuatro. Voy a quitar esto. Voy a hacer estos tres. Voy a hacer esto. Lo que hago esto solo digo, M dos. Entonces voy a quitar esto por completo. Vamos a darle a esto. ¿Qué obtenemos? ¿ Mi aplicación está arriba? No, la aplicación está arriba. Empecemos con la aplicación. La aplicación está tratando de salir. Bien, entonces la aplicación ya está arriba. Entonces volvamos a pegarle. Entonces golpeamos esto, boom. Se requiere país, lo cual es muy cool. Se requiere nombre común, lo cual es muy chulo. país debe ser rallado en cuatro caracteres, lo cual es muy chulo. ¿Cuál es la otra parte? El número de Con C debe obtener un cuatro caracteres. Número LC no puedes ver si notaste que no viste la parte del número C no requerida, ¿verdad? Eso no va a ver. Entonces, para probarlo, volvamos a agregar todos estos detalles. Bien, así que sólo voy a poner aquí solo dos personajes vamos a darle a esto. ¿Nos puede ver el número era mayor que cuatro caracteres? Escojo exactamente la misma validación, la misma manera que tienes la validación de banda. Y grandes obras chicos, esto es bastante genial. Es bastante genial. ¿Cuál es el siguiente paso? Pidamos dirección. Por dirección, lo mismo. Recuerda que agregamos validación en el salario. Voy adelante para hacer esto más largo que diez. Vamos a darle a esto. Tratemos de crear esto. El sueldo no puede superar el lente diez y marcar los mismos cuatro y usted confirma, lo cual es bastante correcto. Esto es mayor a diez. Eso es un poco. Vamos a reducir esto. Para los detalles del número. Déjame tratar de alargar ahí. Vamos a darle a esto otra vez. ¿Podrías ver que el decimal máximo aquí es mayor que diez, y por eso estamos teniendo esta flecha Estoy seguro que esto es muy claro chicos, así podemos ver que todas las flechas están dando patadas Ahora bien, para la dirección imputa para la dirección imputa nosotros buttes ¿cuáles son las validaciones que agregamos en la agregamos Sólo vamos a confirmar. El ID de entidad no debe ser negro. Déjame eliminar ID de entidad. Aquí. Todo bien. Todo claro esto. Voy a quitar probablemente me voy a dejar por aquí. Tres, me voy a ir por aquí. Vamos a darle a esto. Se puede ver, también recoge la validación. También recoge la validación dentro de la lista. Esto funciona también chicos. Esta salsa de trabajo también quería mostrarles chicos ustedes ven tiimos entre estos Y esto básicamente funciona según se requiera. Bien, necesito mostrarles que esto está funcionando como se esperaba. Voy a entrar y quitar esto completamente eliminar esto completamente, así que un día, vamos a darle. ¿Ves? Ciudad debe estar entre cuatro a este personaje. Esto básicamente funciona, chicos. Les he enseñado a hacer validación y esto funciona muy bien. En realidad puedes extenderlo a los demás componentes que tengas. Pero recuerda, solo puedes agregarlo para tus entradas, las entradas son tu parámetro. Básicamente, lo que haces como un cuerpo de solicitud y los gustos las cosas que entran en tu sistema y ahí es donde colocas tu validación. Espero que eso quede claro, chicos, espero que eso sea muy, muy claro y esto ha sido emocionante para ustedes. Lo mismo con ha sido emocionante para mí. Adelante, extiéndalo y podrás ver realmente cosas increíbles en tu aplicación. Los veo chicos en el siguiente video. 99. Teoría de sockets web: Oigan, chicos, genial tenerlos de vuelta. Todo bien. Entonces en esta sección, pasaremos a los sockets web, ¿verdad? Entonces estoy mostrando este diagrama en la pantalla solo para mostrar un poco de lo que trata el socket web, y entremos rápidamente en él. Impresionante. Bien. Entonces en una aplicación HTP tradicional, tienes un solicitante de HTP, que es tu cliente hace una solicitud, y es por eso que ves doble flecha Es decir, hacer una solicitud y obtener una respuesta de vuelta. Hacer una solicitud y obtener una respuesta. Básicamente, así es como funciona. Lo mismo para Graph care hacemos nuestra petición, al parecer, usamos Postman, hacemos un post y los likes y en realidad recuperamos las cosas, pero solo una cura en Graph, no tenemos ese concepto de post, para llegar a usar esta mutación o una consulta, que ya explicamos en sección anterior Pero necesito realmente armar esto para poder entender. Ahora, ¿y si? Queremos notificar a nuestros clientes sin que ellos hagan una solicitud. Queremos exponer algún tipo de información para que una vez que la información esté disponible, simplemente se la transmitamos. Como muchos que realmente estén conectados a la aplicación o estén escuchando en ese gráfico en particular puntos de Kellen solo obtendrían la notificación Un ejemplo típico para que esto sea más claro sería que realmente estás en un banco o dices una empresa o sitio web roto de acciones, los ves cambiando la moneda, la cantidad de moneda por tiempo, solo sigue actualizándose en función de los precios del mercado de valores. Tienes eso realmente pasando. Eso de alguna manera no está controlado por la solicitud del cliente. Básicamente, solo están liberando esa información y haciéndola actualizada o deberíamos entrar en un salón bancario. Algunos de ellos sí tienen todos estos medidor de pantalla que muestra el cambio de moneda por tiempo. Lo mismo debería considerar aquí, donde acabamos de publicar. Es un concepto de cancelación de suscripción de publicación. Publicaremos y cuantas personas estén suscritas a ese canal lo escucharán Otro ejemplo típico sería que estés sintonizado en una estación de radio o canal de televisión. Si estás enfocado en ese canal en ese momento, cualquier información que te estén dando la recibirá. Por lo que no depende de que hagas que esas solicitudes solo estén disponibles desde la aplicación. Lo mismo que vamos a hacer aquí donde vamos a estar liberando algún conjunto de información, uh y nuestros consumidores que en realidad están suscritos a nosotros solo lo darán para obtener esa información. Entonces es un concepto de que publiques la información y quien sea suscriptor, en realidad solo podrá leer esa información. Ahora bien, ¿cuál es el caso de uso? ¿Cuáles son los casos de uso típicos? Es caso de uso porque B, te has dado cuenta de que los clientes solo están siendo creados en tu plataforma sin la documentación adecuada, y quieres informar, digamos un equipo, un equipo de regulación para poder escrutar cada vez que se crea un cliente Una buena manera es que en realidad podrías hacer una aplicación GAF Quel, proporcionar asegurar que el equipo de regulación esté suscrito En el momento en que creas un nuevo cliente, reciben una notificación, ¿verdad? Reciben una notificación, como, Oye, se ha creado un nuevo cliente, y podrían entrar y simplemente verificar, ¿verdad? Entonces esa es una muy buena manera ver realmente hacer eso. Otro ejemplo que puedo pensar Pascua, hay alguna información que quieres liberar regularmente de tu aplicación, y los suscriptores quieren realmente entrar o realmente creas un gráfico QL en realidad creas una aplicación GAF QL para probablemente una cervecería o para algún tipo de cliente, mayorista, quieres que tus minoristas sepan que los productos están disponibles para el tomar. En el momento en que obtienes la mercancía, probablemente solo digas, Oye, la mercancía está disponible. Simplemente lo empujas y los datos que te suscribí en su aplicación solo serán notificados Eso es lo mismo que ves en un teléfono móvil, solo aparece alguna notificación. Es como un empujón. Probablemente deberías empujarles y quien esté suscrito usando esa aplicación solo podrá recibirla Creo que típicamente exclusivo. Ahora bien, ¿por qué tenemos algo llamado búfer de contrapresión? Ahora hay formas típicas, hay varias formas en las que podrías conectarte a un socket web. Pero esté utilizando algo llamado búfer de contrapresión. Ahora la razón por la que estamos usando el búfer de contrapresión es porque nos da un almacenamiento de memoria para poder almacenar el mensaje o el mensaje que se está publicando Almacena en el estuche, esto es muy importante. En el caso de que no haya suscriptor, se guarda, podemos determinar cuántos queremos guardar. Te mostraré en la aplicación cómo podrías realmente aumentar el valor predeterminado o mostrarte cómo aumentar el valor predeterminado. Pero sin embargo, esto es básicamente lo que harás para tener realmente guardado el mensaje y quien sea el suscriptor cada vez que una persona se suscriba, libera toda la información en absoluto Esto lo voy a demostrar. Vamos a dar a conocer varios datos, y aún no conectaríamos a ningún suscriptor. Ves en el momento en que te suscribes, solo lees todo. Sin embargo, en el momento en que un nuevo suscriptor, digamos que ahora tenemos un suscriptor existente y alguien más entra entonces a la suscripción, ¿verdad? No vería información previa. Verá los nuevos contenidos que se están publicando. Sólo el primer suscriptor verá todo lo que se está publicando. Ese es el caso donde se están publicando varias notificaciones o mensajes, pero no se suscribe a nadie, lo enviará en búfer, o una vez que una persona lo lea, vacía esta cola Bien, sin que se diga, entremos en el código y tengamos esto escrito. Bien, chicos, los veré en el siguiente video. 100. Websocket, parte 1: Oigan, chicos, genial tenerlos de vuelta. Todo bien. Con base en la sección de teoría se basan en el video de teoría que tuvimos el último video que era teoría. Ahora entremos en los detalles prácticos. Ahora, ¿cómo empezamos? Para traer realmente socket web a tu aplicación, lo primero es que tienes que agregar una dependencia. Esto es muy crítico, chicos. Hay que agregar una dependencia para que esto funcione y ¿cómo entra esto? Traer una dependencia. Trayendo una dependencia. Voy a ir a la sección de dependencia. Recuerdo que mencioné la última vez, si quieres clari por errores como este, cuando ves un error como significa que hay una vulnerabilidad Solo necesitas actualizar. Estoy seguro los springers siempre hacen un seguimiento y son tan buenos Lleve un conector web de arranque de arranque de resorte. Este es el socket web de arranque tra Spingot. No necesitas manejar la versión, probablemente la versión será traída. Ahora bien, ¿cómo se relaciona esto? Porque mencioné pedacitos de teoría. ¿Cómo se relaciona esto? Ahora, tenemos mutación, ¿verdad? Tenemos cuavy. Este socket web se relaciona con la suscripción. Si recuerdan vívidamente, chicos, hablamos de suscripción Cuando miramos al auditor. Todos los tipos de datos al principio desde el costo, hablamos de esto, ¿verdad? Esto es suscripción donde. Así que aquí es donde Websce realmente juega el papel muy importante, Entonces también, si revisas nuestra entidad, tenemos nuestra entidad que realmente suscribe tienen esos datos. Ahora, seguimos adelante para luego crear una ruta de suscripción. Ahora, recuerden que tenemos mutación, tenemos consulta, así que en realidad tenemos que hacer eso. Todo bien. Entonces este es el primer paso que tenemos que manejar. Bien, así que lo siguiente que necesitamos realmente ahora tomar conocimiento es un Bueno, realidad no tengo esto Recuerda lo último que hicimos por mutación y consulta, si no cambiamos el nombre, el nombre va a entrar en conflicto. Entonces voy a venir aquí, solo di que cambio esto a muestra. Voy a cambiarlo a muestra, ¿no? Así que en realidad se alinea. Entonces no entra en conflicto con lo que vamos a usar. Ahora voy a crear. Después voy a crear una suscripción, suscripciones de suscripción brafqls Gráfica QLS. Bien. Muy bien, genial. Entonces tenemos esto ya agregado. Entonces este es el siguiente paso que pensamos. Así que tomándolo paso a paso. Ahora bien, cuáles son las cosas en las que nos vamos a centrar. Así que básicamente vamos a estar centrándonos en crear nueva empresa se crea, estas son la descripción que estoy usando. Cuando se crea una nueva empresa, cuando quieres recibir una notificación y cuando se crea un nuevo empleado , no recibimos ninguna notificación. Creo que eso debería ser suficiente. La idea es enseñar realmente el concepto para que tu uso llegue a donde necesitas notificar a tu cliente sin que ellos necesariamente se conecten, ¿verdad? Sin necesariamente hacer solicitudes, quien esté realmente conectado en ese canal podrá recibir notificación. ¿Todo bien? Así que en realidad usamos Create company. Empresa rápida. Bien. Copia rápida. Todo bien. Yo básicamente estamos haciendo un DT de empresa lo cual es importante, y también estamos tomando empleado de Cuick, ¿verdad Empleado y vamos a liberar empleado DTL. Recuerda, no puedes liberar a la entidad, ¿verdad? Debe liberar un tipo que defina su gráfica QL. Recuerda que tenemos una ruta de mapa para convertir la entidad a la DTL. Esto es genial chicos. Hemos podido realmente lograr esta parte para ellos para crear realmente hemos agregado la dependencia, hemos agregado esto en. ¿Cuál es el siguiente paso? El siguiente paso básicamente es que necesitas ir a tus recursos o mejor dicho a tu aplicación, las propiedades la aplicación de propiedades, ¿verdad? Necesito definir un concepto. Ahora bien, estos chicos, recuerden que los separé aquí por las cosas que realmente vas a usar para cobonts porque esto es un También tengo estas pruebas por defecto, ¿verdad? Si miras esto con claridad, no te mezcles esto. No estás usando un perfil local o usando un perfil local. Tenga en cuenta que si no quiere hacer esto, esta es una actualización. Si no quieres hacer perfil Spring local, solo puedes agregarlo aquí. Esto es lo mismo aquí. Este perfil lo hará por ti automáticamente. Entonces solo agregas perfil y eso va a hacer eso. Bob sin embargo, la razón por la que fui por esta ruta de perfil primaveral Local es porque no la definí aquí. Entonces esto se cargaría automáticamente como local, ¿verdad? Pero si no definí esto en absoluto, necesitas realmente por defecto, crear una variable de entorno y eso básicamente entrará en acción, pero la estoy controlando manualmente para que en nuestro archivo cubant, se junte Estoy seguro de que lo consigues justo y en realidad lo verás venir. Lo siguiente que vas a hacer para GraphQL, tenemos que traer realmente, tenemos que decirle a la aplicación donde queremos escuchar Estar escuchando en websircuts Estoy listando en el sitio web llamado paths En esta ocasión, solo quiero usar el valor por defecto. Estoy seguro de que esto es por defecto solo confirme. Trayectoria. Bien, así que estas son las almohadillas. No hay ningún defecto. Utilice la suscripción. Nos vamos a apegar a la suscripción predeterminada. Vamos a agregar esto. vamos a usar una suscripción. Esto en realidad juega un papel importante. Estoy seguro de que esto es genial, chicos. Entonces vas a cambiar esto, y este es el camino que vamos a usar, ¿verdad? Bastante genial. Bastante genial, chicos. Todo bien. Entonces esto es así que en realidad hemos tocado otro aspecto, la dependencia, hemos agregado en el tipo. Hemos añadido en esta parte vamos a escuchar. Entonces, cuando iniciemos la aplicación, aquí es donde estaremos escuchando para realmente hacer esa actualización. Bien, entonces creo que ese es un buen progreso desde mi parte. Lo siguiente en lo que tenemos que enfocarnos, ¿verdad? En lo siguiente en lo que debemos enfocarnos, vamos a la empresa Creates, ¿verdad? Vayamos a la compañía crea y en realidad detengamos la etiqueta. De hecho, vamos a crear el esqueleto que necesitamos. Recuerda, antes de hacer eso, necesitamos construir esto para que esto pueda conectarse, ¿ verdad? Esto se puede cablear. De lo contrario, el gen de código podrá construir realmente esto. Recuerden el concepto que les mencioné a ustedes que en realidad comentan constantes indigosas que están usando no falla Por eso en realidad estoy comentando esto. Entraré o eliminaré mi carpeta de destino. Entonces voy a ejecutar V y comparar eso básicamente debería pasar por. Eso está pasando. Esto está hecho. Yo publico el video solo tengo esto, esto está hecho. Puedes entrar y traer esto de vuelta. Viniendo aquí. Está bien la escuela, así que tenemos este empaque, y es realmente genial. Recuerda que agregamos dos detalles. Número uno, agregamos en compañía. Entonces esto sería en el controlador de la empresa y agregamos el empleado. Tho sería el controlador empleado. Podrías decidir crear un controlador diferente, digamos, llamarlo controlador de suscripción. Entonces, cualquiera que funcione para ti, ¿de acuerdo? Eso es genial, ¿verdad? Entonces, básicamente entremos y luego agreguemos esto. Así que en realidad nos dirigiremos al controlador de la compañía y realmente haremos esto. Voy a los controladores de la empresa es controlador de la empresa. Ahora el controlador de la empresa y luego crea el esqueleto. Contamos con mapeo de esquemas. Como prestar atención. Tienes typename Un nombre de tipo será constante DGS. Ahora bien, este debería ser del tipo de suscripción porque uso suscripción. Es un tipo de suscripción bastante genial. Entonces, ¿cuál es el nombre? Tenemos este campo, algunos utilizamos DGs constante suscripción Dot Estás siguiendo el mismo patrón de suscripción. Punto estoy seguro que lo adivinaste, crea compañía. Crear empresa. Bien, esto es genial. Tenemos esto ya ala ahora vamos a traer esto en realidad. Recuerda, estamos listando al final de lo que estamos listando commit DTU Porque estás listando cometer DTU cantar algo llamado déjame rematarlo. Voy a tener más sentido aquí. Entonces lanzamos algo llamado flujo, ¿verdad? Un flujo es un concepto en una programación reactiva que permite ala uno o más datos. Se puede liberar en más datos. Ahora bien, si quieres liberar solo un dato, puedes usar un concepto llamado mono concept llamado mono voy a usar un flux aquí porque al parecer, duramos solo un objeto, pero por favor, puedes usar flux, puedes usar Mono, ¿verdad? No me estoy metiendo en detalles de programación reactiva, pero así es como lo consigues, solo para mostrarte el concepto de cómo funciona Webflux Entonces si llegamos a abrir la definición, Esta es una cosa que me encanta hacer. Me gusta descompilar cuando no entiendo como funciona algo, descompilo para poder ver como básicamente funciona Una vez descompilamos esto y si verificas, si realmente lees, ¿qué dice? Pero el mono. De hecho , saqué esto, ¿verdad? Todo bien. El tipo de valor de las fuentes de datos. Bien, así que vamos a entrar en los datos. Se trata de un h. El editor de flujo act con operadores RX que emite de cero a n elementos, cero a N elementos, uno o muchos o de cero a muchos, en realidad podría ser cero o podría ser muchos También tienes el concepto llamado mono. También podrías usar mono. Mono es lo mismo, pero mono es solo de cero a uno si lo miras. Si miras a este tipo, dice, básico reactivo que más emite un ítem, es decir, cero a uno Estoy seguro de que ese concepto es claro chicos. Envuelva rápidamente este video. Vamos a terminar rápidamente Shopper lo que estamos haciendo. Terminemos Shopper nuestro stubbing o nuestra creación de esqueleto Recuerda empresa de leasing DTO al final del día empresa DTO que tenemos crea No hace falta ningún argumento porque al parecer, esto no depende de los clientes. Depende de la aplicación, nosotros la arrendamos. Yo sólo voy a devolver yo nulo. Bien, con esto, te veré en el siguiente video. 101. Websocket, parte 2: Oigan, chicos, genial tenerlos de vuelta. Bien, así que hemos sido capaces de hacer esto, y lo que hemos podido hacer es que hemos sido capaces de detenerlo de hecho. Se puede ver esto así que ya lo ha encontrado, esto existe. Esto es exacto. Entonces, si vas ahí, puedes ver que esto está bien. Entonces vayamos a la sección de empleados y hagamos lo mismo. No me gusta escribir mucho código. Te voy a detener todo esto, ¿de acuerdo? Vamos a la sección de empleados. Acabo de darle a esto la sección de empleados. Bien, entonces este es el empleado. Ahora lo que voy a hacer es que voy a cambiar esto a palabras crear empleado. Crear empleado, cambiar para crear empleado. Todo bien. Entonces ahora si revisas esto, puedes ver que está apuntando al segundo tipo. Entonces esa es la primera parte que hay que completar realmente ese bit. Bien, así que vayamos a la implementación. Entonces vamos a hacer, voy a venir aquí y voy a decir, dentro del mismo tipo, Bien, no quiero perder ni un punto. Creo que es genial mostrárselos chicos. La forma en que tenemos el mapeo de mutaciones, podrías haber adivinado. Recuerda que te dije que hay otra manera de escribir una alternativa. También tienes algo llamado mapeo de suscripción. Por lo que esto también está disponible en el mapeo de suscripción. Mapeo de suscripción. Estos están disponibles, así que sé que tienes justo lo que va a ser. Al parecer, echaremos de menos este primero y este tipo solo va a ser de valor yo solo trayendo las constantes DGS, Esto cava constantes Se trata de chicos bastante chulos. Bien, así que también podrías tener esto lo que prefieras el tiempo que usen Sólo voy a comenzar a salir. Así que vayamos dentro de un servicio de empresa. Lo que voy a hacer es que voy a crear Empresa. Entonces dentro de la Compañía, voy a llamarlo punto Empresa DTO flux Empresa DTO flux. Sólo llámalo darle empresa DTO flux. Creo que esto funciona. Voy a entrar y luego crear esto. Vamos a crearlo. He podido crear un flujo DTO de la empresa. Ahora bien, ¿cómo funcionaría esto? ¿Cómo funcionaría esto? Seguro que ustedes tienen curiosidad por saber cómo funcionaría esto. Cómo es este trabajo, tenemos que decir que queremos tener la memoria. Queremos conservar la memoria una vez que se haya creado un nuevo ga. Recuerda que te dije el diagrama que mostré antes, esa daga, ese búfer de contrapresión Tenemos que crearlo aquí trayéndolo final. Una final. Tienes algo llamado sincronismo. ¿Correcto? Lo primero que siempre voy a aconsejar a la gente que realmente quiere saber exactamente cómo realmente cosas nuevas, siempre trate de verificar la documentación. Entonces este tipo toma un tipo, que sería una compañía tipo DTO, entonces lo llamaré compañía Sync Llamémoslo sincronización de compañía si sincronizo compañía. Sincronización de la empresa. Todo bien. Ver esto es di creado para nosotros. Esto es decir sincronizar muchos multicast. Ahora bien, esta multidifusión ya debería darte una idea, es decir, para muchos suscriptores, vamos a comprobar la definición. ¿Ves? Esto dice que Badcast señala a múltiples suscriptores, por favor tenlo en cuenta Podrías usar unicast. Esto sería para un solo suscriptor. Pero como queremos que mucha gente se conecte, entra este tipo. Pero recuerda el concepto si entra una persona al menos una persona, ambas, todo saldrá. Pero sin embargo, si solo quieres una persona, nos vendría bien esto. Ahora hay otros conceptos que podríamos guardar en la memoria dónde entra realmente la nueva persona y queremos determinar qué partes quieren entrar realmente, qué datos quieren liberar la cantidad de datos. Pero no voy a discutir eso aquí, ¿verdad? Claramente sugeriría que busques programación reactiva, ¿ verdad? Springboards programación reactiva Se llama Venus en Eudmi que realmente hace un buen trabajo al explicar realmente la distancia Así que en realidad lo recomendaría. Bien. Bien, entonces tenemos a este tipo. Lo que pasaría es que cuando creamos una nueva compañía aquí, necesitamos actualizar a este tipo. Creamos una nueva empresa, diríamos, fregadero de compañía Sincronización de compañía. Entonces intentamos emite. Ahora tal vez te estés preguntando por qué estamos usando tri emit. Te voy a mostrar. Esto ya se ha hecho. Esto es realmente genial. Gracias por completar. A ver. ¿Por qué probar emite? Prueba EI dice que tratamos de emitir intentar emitir no elemento generar una señal ness. La idea es que es psits intenta decir caso se le da una flecha a ros El valor emite no nulo. Compruebo que no sea nulo, al menos un Mutron Yo digo trow unchecked excepción, los últimos resultados y las mentiras Quiero que ustedes solo pasen por esto. Todo lo que estás diciendo es que hay una función emite. En realidad se puede comprobar que hay un emite, ¿verdad? Hay un emite siguiente, pero estamos usando el tri em para que en caso de que ocurra un error, también podrías atrapar esa flecha. También podrías usar el error tri emit en caso de que estés seguro de que básicamente se producirá un error . Este básicamente funciona, recuerda que no es sincronizar muchos multicast múltiples suscriptores entonces vamos a ver este búfer de contrapresión Si nos fijamos en este búfer de contrapresión, ¿qué dice? Entra a decir, recuerda hasta Q, es decir, puede ahorrar hasta el tamaño el tamaño que mencioné. Este es el tamaño. Puedo ahorrar hasta este tamaño, guardar este lado, ¿pueden ver los datos? ¿Puedo ahorrar 256? Puedo ahorrar 256. Podría establecer esta propiedad para cambiarla. Probablemente podrías simplemente hacer esto y cambiar su comportamiento. Podríamos decir, Oye, quiero cambiar este comportamiento cuando esto esté sucediendo. Puedo hacer una propiedad fija. Entonces hago una propiedad set set. Entonces voy a hacer set property, y puedo decir, no quiero que ahorre 256, quiero ahorrar 1,000. Entonces, en el momento en que hagas esto, debería poder ahorrar más, ¿verdad? Pero por favor ten en cuenta, si tienes un pequeño carnero y no tienes mucho espacio, apégate al predeterminado. Pero si sabes que quieres poder quedarte más, por favor, adelante y siéntete libre de hacerlo. Siempre considere cuidadosamente si está ejecutando una aplicación distribuida, ejecutando una aplicación distribuida, tenga cuidado en cómo usa esto, ¿de acuerdo? Cuidado con la forma en que usas esto. Bien, así que esto es genial. Bien, entonces he podido mostrarle esto cómo establecer el valor en caso de que quiera aumentar el búfer, pero el búfer, el búfer de lista es 256, ¿de acuerdo? Ahora, tal vez se esté preguntando este búfer de lista. Por favor, es posible que desee verificar esto claramente. Bien, esta parte que mencioné, mencioné que ves que dice solo reenvía a un suscriptor, el elemento han sido empujados a la sincronización después. Verás, esto era una letra mayúscula para hacer realmente muy fuerte esta declaración después de que el suscriptor se haya suscrito, al menos una persona debe suscribirse Todos los elementos han sido amortiguados debido al calentamiento de contrapresión. Digo, digamos que en realidad puedes contener datos de syste y empujaste alrededor de 20, estás seguro de que es el último sistema realmente tienes en tu cola Esto es muy importante saberlo. Esto es muy, muy importante de saber. ¿Correcto? No copias tanto y esperando que todo se publique. Si quieres que todo sea capturado, entonces tienes que aumentar el tamaño del búfer usando el sistema que establece propiedad que acabo de mostrarte antes. Si estás confundido, para encontrarlo, vuelve aquí búfer de contrapresión, ¿verdad? Esta parte en particular de aquí, este tipo, abre este tipo esta propiedad aquí, tienes que configurarla para insertarla para poder recogerla de verdad Bien. Bien, así que creo que voy a poder cubrir esto, lo cual es bastante genial. Ahora, sigamos adelante y completemos el servicio. Ahora que tenemos realmente enviando esta sincronización podría estar guardando la memoria este dado. Al parecer ya que estamos aludiendo a Mat Cali de ella, así que no va a causarnos ningún problema de desempeño Probablemente se va a someter a huella porque estamos seguros de que habrá suscriptores. Aquí mismo, entonces llamaré a ese Sync de la Compañía. Entonces llamo a esa sincronización de compañía como flujo. Voy a volver a visitar As flux, así que solo libero todos los datos que tiene un flujo Muy bien con esto, te veré en el siguiente video. 102. Websocket, parte 3: Bien, así que sigamos adelante. bueno que ustedes trabajen. Entonces sigamos adelante para terminar con el empleado. Crear parte de empleado. Todavía me voy a apegar al servicio, y sólo voy a hacer lo mismo. Digamos empleado como empleado DTO, ¿verdad? Vamos solo empleado DPtoFlux. Aquí sólo vamos a ser consistentes. Entonces flujo, entonces lo crearé. Oh, esto se supone que es empleado. Guau. Los males de copiar y pegar Estoy seguro de que ya se dieron cuenta, ¿verdad? Malos de copiar y pegar. Es el empleado DTO. Tenemos esto, tenemos el tipo de suscripción de empleado , Esto es increíble. ¿Bien? Así que vamos a reventar a este tipo. Todo bien. Hacemos lo mismo que hicimos antes, solo entramos y creamos ese detalle que realmente hicimos. Vamos a la cima y creamos todo lo que necesitamos. Sincronización final privada punto Muchos va a tomar empleado DTO empleado DTO aquí, luego Empleado fregadero Custer empleado fregadero, ¿verdad? Equivale a los sumideros, las muchas contrapresiones. Bien, entonces tenemos esto. Es genial, chicos. Entonces cuando creamos un empleado, cuando creamos un empleado aquí, y creamos un empleado o creamos un subcontratar, básicamente lo mismo, ¿verdad? Creamos un empleado y creamos un subcontratar, queremos notificar Queremos notificar. Oye, esto ha sido creado con éxito. Entonces haz esto. No intentes y mit, ellos traerán en el mapa que vendes y nosotros traemos en el mapa detalle empleado y empleado persistido Entonces esto es genial. Luego irán a nuestra implementación, llegamos al fregadero de empleados. Lee a los empleados como flujo. Bien, entonces eso básicamente completa la implementación. Bien. Bien, esto básicamente completa la implementación, así podemos entonces básicamente seguir adelante y hacer que las cosas funcionen. Bien, así que es hora básicamente de probar. Sí. Entonces traeré a colación la bota que voy a usar, ¿de acuerdo? Así que trae un ti como jure. ¿Verdad? Traer t. genial. Entonces después de sacar a colación. Entonces lo que voy a hacer es seguir adelante y crear múltiples empresas, ¿verdad? Voy a crear múltiples empresas, ¿verdad? Así que crea múltiples empresas y ya veremos cómo va a ser. Aún no conectaríamos nada. Simplemente permitimos permanecer en la memoria. Entonces en el momento en que conectes al suscriptor, veas que cyp obtendrá todo de inmediato Luego volverán a entonces crear lo siento, crean la empresa luego volverán para luego crear la compañía y nosotros volvemos, vemos leer primero el valor, ¿de acuerdo? Entonces esto es bastante genial. Así que comencemos tu solicitud. Voy a sacar a colación mi instancia más oscura. En mi instancia de Doka para conseguir realmente pasadores y rodantes. Entonces mientras eso se acerca, voy a hacer sólo un poco de limpieza. Yo sólo voy a aclarar esto. Eso es genial. ¿Este tipo está levantado? Bien. Sí, este tipo está levantado. Yo solo voy a ejecutar mi componer recordar no es componer componer el amo. Lo enrollo para ponerlo en marcha de verdad. Eso ha comenzado con éxito. Así que vamos a verificar si está disponible para recibir conexiones. Sí, está listo para aceptar la conexión. Así que bastante genial. Comienzo de la aplicación, se acerca la aplicación de la aplicación. Fresco. Entonces mientras eso se acerca, solo voy a entrar aquí comentando solo entra aquí para ver cómo vamos a estar interactuando con. Todo bien. Aquí es donde estaremos creando una empresa, así que solo crea algún conjunto de empresas y solo mira cómo entra realmente. La primera prueba es que queremos crear empresas, ¿verdad? Queremos crear empresas, y queremos que se reciba. Eso es básicamente lo que queremos hacer. hacer clic en comp Quiero ver ser recibido. Entonces voy a cambiar esto. Llamemos a esto, sólo voy a dejar esto. Yo sólo voy a llamar a este, así que solo haz un seguimiento. Entonces llamemos a esto RB. Esa es una empresa ficticia. Vamos a llamarlo RB Vsical. Bien. Pido disculpas por el ruido de fondo si es posible que hayas escuchado alguno. Bien, con esto, creo que entonces podemos proceder. Yo creo solo llámelo a este RB como mencioné. Sólo voy a cambiar esto un poco para que podamos simplemente subrastrear. Voy a llamar a esto, digamos, un cinco, entonces solo lo llamaré SS BV. Sólo para mantenerlo diferente. Sólo voy a dejar esto como lo mismo, ¿verdad? Voy a dejar esto como lo mismo, así que probablemente comencemos con 22, para que luego podamos rastrear desde ahí. Derecha. Todo bien. Entonces tenemos esto. Nuestra aplicación ha comenzado con éxito como puedes ver, vamos a crear algunos detalles. Quieres crear recuerda que no nos hemos suscrito, no nos hemos suscrito a ninguno de ellos en absoluto Entonces, si quieres buscar la suscripción, cómo se hace, antes de que empecemos a crear esto, veamos, pero no nos conectaremos, no nos conectaremos. Tenemos esto, si revisas, voy a poner esto va a estar disponible. Vamos a tener suscripción. Entonces como puedes ver, tenemos suscripción. Esto básicamente cómo recordar que estamos esperando Empresa GTO. Porque estás esperando que la empresa DTU tenga estos detalles Entonces estos son detalles que vas a estar recibiendo. Entonces, ¿cómo funciona realmente? Hay algo muy importante. Hay que prestar atención a que seguro está en el hotel. Pero si no le prestas atención, tal vez descubran que esto no está funcionando como realmente se esperaba. Básicamente vas a Handler. Verás, vas a manejadores, esto es muy importante. Ir a manejadores. Entonces cuando llegues al manejador, tienes que especificar, ¿verdad Pones tu URL de suscripción, que es esta. Esta es una URL de suscripción, que es correcta. Tiene que ser WS, que es web sockets, ¿verdad? Tienes esta configuración. Esto es muy correcto. Entonces , por favor amable, sé esto. Voy a publicar 3 segundos aquí, uno, dos, tres, así que ya ves esto. Puedes publicar esto para escribir esto con claridad. También voy a publicar esto va a estar disponible en la descripción donde solo puedes copiar y pegar. Entonces hay que configurar esto para que sea web socket. Esto tiene que ser un socket web. Esto tiene que ser un socket web. Bien, sin embargo, tiene que ser un socket web GQL. Si lo haces en socket web normal, esto no funcionará. ¿Todo bien? Esto no va a funcionar. Lo intenté un par de veces. Tiene que ser un socket web GAF QL. Entonces, cuando tienes un socket web GAP, puedes asegurarte de que las cosas van a funcionar en consecuencia. Así que voy a salvar esto, ¿verdad? Ya tienen esto ya disponible. Vuelvo a ti otra vez, vuelvo a ello otra vez, voy a Handler Handler, vaya al socket web, ¿no? Zócalo Web GraphQL Ws. Este es el que estás esperando, y eso debería ser genial. Todo bien. Bien, así que ahora que tenemos esto en realidad D, recuerda, no voy a ejecutar esto todavía, así que solo voy a seguir adelante y crear. Así que vamos a crear algunas empresas. Adelante y crea esta empresa. Se crea esta empresa. Cambiemos esto a 23. Cambiémoslo a cinco. Entonces volvamos a pegarle. Bien, entonces tenemos algo que en realidad es, básicamente manejamos este error duplicado. Seguro que sabes exactamente cómo manejar esto. Esta es una excepción duplicada que se mostrará dentro de la aplicación. Básicamente, podría simplemente una excepción duplicada y atrapar la excepción duplicada. ¿Así es tu nombre ahora? En nuestra excepción, ven a excepción, crea una excepción duplicada y muestra que estás capturando una excepción duplicada de Hibernate Una vez que lo atrapes entonces podrás interpretar este error correctamente. Este error correctamente. Ahora bien, el error que me viene aquí es decir que el nombre ya existe. El concepto del nombre. Este nombre 23 ya existe. Voy a usar el 25. Cambié esto a cinco, vamos a darle a esto otra vez. Esto se codifica con éxito. Entonces vuelves a entrar, yo voy a llevar a este tipo a seis. Hagamos este seis. T debería ser el tercero. Impresionante. Tenemos tres. Recuerda, aún no nos hemos suscrito. Quiero decir, tres datos quedarán en el búfer. Ahora sigamos adelante y vayamos a nuestra suscripción y conectemos a esto. Comprueba que el servidor esté en funcionamiento, así que esto no se está conectando todavía. ¿Cuál debería ser el problema? Comprobemos esto de nuevo. Depuremos esto. Ya veremos. Bien, así que encontré el error. Entonces el error es que estamos usando suscripción aquí. En tanto, estaba esperando suscripciones. Entonces esa es una gran diferencia, ¿verdad? Entonces, apegémonos a lo que tenemos. Creo que quiero usar suscripciones. Entonces voy a usar ya que ya he empujado algunos datos. Solo guardemos esto, usemos esto. Entonces ese es el error. Entonces el nombre tiene que coincidir exactamente, ¿verdad? Sólo nombre. Yo uso la subcrición Estaba esperando suscripciones por aquí, ¿verdad? Estaba esperando suscripciones por aquí, ¿verdad? En realidad coloco suscripciones por aquí, ¿verdad? Yo uso la suscripción, y en realidad estaba usando la suscripción aquí, así que esa es la razón por la que. Entonces ahora que los lugares y esto básicamente deberían funcionar. Entonces, vamos a darle a esto otra vez. Impresionante. Bien, entonces ahora tenemos algún cambio. Entonces estás diciendo que la suscripción de tipo suscripción no existe, es indefinida. Entonces significa que esto tiene que ver con un graph quo, así que necesitamos ver exactamente cuál es el tema para ver qué hemos cambiado. Entonces estamos esperando una compañía creada y un empleado creado. ¿Ese es el mismo nombre que usamos? Vamos a confirmar. Bien, chicos, así que entraré rápidamente. Vamos a echar un vistazo a este tipo. ¿Qué estamos esperando? ¿Estamos utilizando Crear empresa? ¿Es un error? ¿En lugar de compañía creada? Porque yo quería que fuera pasado decenas deberían crearse pero dijo crea compañía. Este es el error. Voy a cambiar esto. Comprobemos también por empleado. Los empleados también crean empleado. Así que arreglemos este error. Esto va a ser creado, y esto va a ser Crear. Bien, vamos a darle a esto otra vez. Vamos a darle a esto. Todo bien. También está diciendo, creador esta parte aquí, arregla esta parte. Crear. Y este otro bits crea. Ahora coincide. Ahora vamos a darle a este tipo. Todo bien. Se puede ver que tenemos. Ya tenemos tres en la memoria. T ya se ha leído. Sigamos adelante y empujemos otro más. Iré al tímido. Vamos a empujar uno nuevo. Yo cody siete. Voy a llamar a este siete para que en realidad no entre en conflicto y voy a golpear su mayor ahora, vamos a comprobar. ¿Podrías ver, uno, dos, tres, cuatro? Esto en realidad está adentro, y esto es chicos bastante geniales. Ya ves que la primera persona pudo realmente video con ella. Si tienes ahora con diferente suscriptor, el suscriptor de defensa siempre será el nuevo. ¿Cómo lo sé? Cancelemos esto. Mar He cancelado esto vamos a conectarnos de nuevo. Vamos a conectar a este tipo. No encuentro nada. Vamos a impulsar una nueva compañía. Voy a llamar a este ocho. Volvamos aquí. Llamemos a esto ocho. ¿Nos hemos suscrito? A ver, ¿nos suscribimos? No, no nos hemos suscrito. Ven aquí. Vamos a empujar a este tipo. Eso se crea. No nos hemos suscrito, así que vamos a suscribirnos ¿Cuál es el error? cuál es el error. Aquí hay un error. En realidad no es conectar. Bien, volvamos al siguiente video para arreglarlo porque este video se está haciendo bastante largo, chicos. Nos vemos en el siguiente video. 103. Websocket, parte 4 con excepción de clave duplicada: Oigan, chicos, es bueno tenerlos de vuelta. El error ocurrió porque detuve abruptamente el servidor. Se suponía que yo no debía hacer eso. Así que abruptamente lo detuvo. Ahora solo me conecté y esto básicamente está funcionando ahora. De hecho te lo he podido decir, cancelemos esto e intentemos conectarnos de nuevo. ¿Ves? Esto en realidad no va a entrar. Entonces voy a hacer es que tengo que volver a conectar. El servidor ya no honra al equest. Voy a entrar de nuevo y recrear rápidamente esto y empecemos Todo bien. Esto ha comenzado con éxito. Así que vamos a conectar de nuevo. Bien. ¿Podrías ver esto? Entonces esperaba que una vez que tuvieras esa conexión, mantengas esa conexión encendida, ¿verdad? Entonces esto es bastante genial. Entonces solo tomemos un detalle más. Entraré y solo crearé uno más. Ahora vemos que esto está funcionando, podemos hacer nueve y vamos a crear esto. Todo bien. Entonces se crea esto. Tomemos una suscripción y nuestra suscripción lee los detalles. Bien, así que con esto hecho, sigamos adelante y creamos nuestro departamento. Una vez que crees departamento, entonces podrás leer realmente los detalles, ¿verdad? Porque recuerda, sin departamento, no podemos crear un empleado. Entonces, al crear nuestro departamento, vayamos a departamentos. Entonces iré a Departamento iré a departamento. Ya existen los departamentos, probablemente justo lo que ya existe. Vamos con empleado. Vamos al empleador y creamos un nuevo empleado. Simplemente enfocado en. Este empleado ya existe, ¿verdad? Voy a llamar a esto 23. Voy a dejar la edad, voy a dejar esto, sólo voy a cambiar la cantidad, probablemente 26. ¿Qué más podría ser conflictivo? El ID. Cambiemos la identificación para que sea ocho. El número de departamento dejará esto como es porque ya existe. Vamos a crear este empleado. Vamos a crear el empleado. De esta manera de conectar a este tipo. Ya he conectado al empleado. Vamos a crear este empleado. El nombre tiene que ser más largo. Dice la lente que no puede invocar lente de cuerda o nombre. El nombre es nulo. ¿Qué está pasando? Veamos esto otra vez. Bien. Así que hay una identificación duplicada para esta identificación y número de departamento. Recuerden, chicos, les mencioné cómo en realidad podrían hacer esto. Esto es muy sencillo de hacer. En caso de que estés teniendo este error que no se alcanza o está siendo atendido La forma muy sencilla de hacerlo es que se trata de una excepción duplicada. Es una excepción duplicada porque viola la constante. Entonces es una excepción de clave duplicada. La forma más fácil de hacerlo, no quiero centrarme en eso en esta sección es realmente entrar aquí, estallar su controlador global, solo hacer lo mismo. Acabo de copiar esto. Lo mismo, copiarlo aquí. Entonces busca una llave duplicada. Excepción de clave duplicada. Tienes una excepción de clave duplicada. Esto viene de Spring Framework DAO, excepción de clave duplicada. Voy a coger una llave duplicada. Esto debería manejar más o menos el caso, ¿verdad? Porque no estoy viendo la clave exacta que se mostró aquí, pero estoy seguro de que es una excepción de clave duplicada. Podríamos simplemente reiniciar el servidor. Porque viene con bastante frecuencia porque estás creando múltiples entidades con los mismos detalles. Atrapemos eso rápidamente ya no tengamos que pasar por ese error. C correctamente y correctamente error de ir bien. Vamos a entrar, vamos a tratar de crear lo mismo. Bien, entonces no estoy captando el error correcto aquí. Entonces, ¿cuál es el error ahora? A ver. Así que la clave ya existe. Estoy teniendo excepción de clave duplicada. No estoy captando la excepción exacta. Eso es que estoy enfrentando este tema. Porque recuerda, si no captas la excepción exacta, en realidad estará usando el error interno del servidor, que es bastante correcto. Entonces veamos ahora, pensemos veamos ¿qué excepción debería ser? Deben ser duplicados clave, pero ¿cuál duplica ¿Cuál duplica la clave? ¿Estaba lanzando? Esta es la excepción de clave duplicada. Esto definitivamente no es de Snake yam. Esto es de spin Do Do pay excepción de clave duplicada. Obtenemos la excepción clave. Vamos a echarle un vistazo. Excepción de clave duplicada, ¿verdad? Entonces voy a colocar un punto de interrupción aquí, así que voy a reiniciar la aplicación Menos demostramos que si entra, realmente somos capaces de conseguirlo, ¿verdad? Esto viene muy a menudo, chicos sifi digresión pero en realidad tenemos que manejar esto porque esto es muy, muy clave, Hola chicos, con un poco de investigación, pude ver, no es clave duplicada, más bien, es una excepción de violación integradora de datos Entonces he podido hacer lo mismo, así que reproduzco el error, así que vamos a darle a esto la compañía ret. ¿Bien? Entonces ves que en realidad se detiene aquí. Entonces podemos usar una expresión. Luego podemos usar la expresión de evaluación o evaluar la expresión para luego traer la excepción. Consigamos un mensaje localizado y llevemos esto. Bien, entonces esto es lo que estamos teniendo. Tienes todos estos grandes jagons, ¿verdad? Estos grandes jagons. Entonces, ¿qué haremos en lugar de soltar todo este detalle, verdad? Ingresa el detalle. Tenemos que encontrar una manera de realmente. Entonces podrías formatear esto para tener esto fuera. Lo que voy a hacer, no quiero mostrar todos esos detalles. Sólo voy a decir, vamos a ver cuál es el mensaje realmente mojado excepto o recibe mensaje. A ver, recibe mensaje. Obtiene mensaje. ¿ Qué escribe? Lo mismo. Yo sólo voy a decir creación de duplicados creación solo decir creación duplicada creación de NTT Eso básicamente debería funcionar. iniciamos la aplicación. Entonces cuando iniciamos la aplicación, una vez que aparece, luego la probamos nuevamente. Entonces se inicia la aplicación. Entonces volvamos a darle a esto y veamos cómo se desarrolla. Yo no vengo aquí y luego le pego otra vez. Bien, esto va bien. Estoy en modo de depuración. Vamos a liberar la depuración, vamos a comprobar. Bien, se puede ver, creación duplicada de entidad. Entonces esto básicamente funciona ahora. Entonces por cada uno de ellos, voy a uplate enTIC creación de nt Entonces probablemente podrías pasarlo, pasar el mensaje, y luego cinco formato es mejor para ellos para mostrar la entidad exacta. Eso es algo que luego puedes hacer desde los objetos. Bien, entonces ahora que iniciamos la aplicación, volvamos al escenario original, que es una suscripción. Así que aquí era donde estábamos y estamos recibiendo algún error mientras en realidad estamos creando la entidad, ¿verdad? Y estos videos ya están llegando tanto tiempo, tenemos que digerirlo rápidamente para resolver este error. Entonces volveremos en el siguiente video para completar esto, bien. Nos vemos en el siguiente video. 104. Websocket, parte 5: Oigan, chicos, genial tenerlos de vuelta. Todo bien. Entonces con esto, creo que luego podemos proceder a luego suscribir a nuestro empleado y luego comenzar con excavaciones en mi empleado, así que básicamente podríamos cubrir el terreno que teníamos antes ¿Bien? Entonces esto ya está funcionando. Entonces déjame conectar la suscripción de empleado. Esto está conectado. Vamos a crear un nuevo empleado, solo para terminar esta sección. Yo diría, esto es genial. Llamemos a esto 25. Entonces vamos a dar la vuelta a esto Vamos a codificar este nueve. Vamos a codificar esto Esto está bien. Uno, dos, tres, 45 está bien. Vamos a codificar esto. Hagamos de esto un pasante. Pasante. Entonces sólo vamos a tejear un poco la dirección Recuerde que la dirección debe coincidir. Esto necesita el partido. Esta entidad, necesito decir necesita una entidad de identificación de jugador de partido, necesito emparejar. Permítanme agregar una ditail más aquí. Déjenme decir sólo uno, dos, tres. Nosotros solo decimos que esto está bien. Creo que esto está bien. Voy a facturar esto como uno, dos. Vamos a gotear esto. Bien, entonces tenemos un ROI dice cadena que longitudes porque nombre es nulo. Entonces, ¿dónde está el nombre? Creo que esto pasó cuando estamos haciendo una validación. ¿Dónde está el nombre? ¿Qué nombre es realmente nulo? Déjame entrar. Y veamos, que en realidad es nulo. Esto dice, déjame jugar este registro a menos que esté seguro de que hemos tomado la aleta. Vuelvo a arcilla esto. Déjame cambiar esto a seis. Cambiemos esto a 70 y lo mismo, cámbielo a 70, vamos a darle a esto y veamos, ¿verdad? Bien, entonces dice que su nombre es nulo, déjame comprobarlo. Al parecer, entonces aquí hay una flecha. Hay una flecha que se está mostrando diciendo que el nombre es nulo, por lo que necesitamos realmente entrar en la aplicación para ver exactamente qué es. Estoy seguro de que esto probablemente provendría de la validación que establecimos, ¿verdad? La validación que establecemos anteriormente. Dice Cano invoca árbol esa longitud porque el nombre es nulo Bien, entonces, ¿cuál de los nombres es nulo? Entonces lo que voy a hacer es que voy a sacar rápidamente a mi empleado. Para la creación, cuando quiero crear un empleado, esto es lo que usamos. Voy a sacar esto a colación. Voy a compartir esto escribe. Vamos a comparar rápidamente todo lo que tenemos para estar seguros de que todo es exacto. Entonces voy a tener esto aquí. Este es nombre, fecha de nacimiento, sexo, salario, luego dirección debajo de la cual se encuentra pull, luego edad, phon, nombre de la empresa, ID del empleado, número de departamento, rollo de correo electrónico. Bien. Ahora vamos a revisar la dirección. Verifiquemos tu dirección. Pero la direcciónponer, vamos a comprobar. Esto es son simples, no pasamos en UID, pasando NTC, calles, ciudad, estados, legales Todo es crítico para mí. ¿De dónde viene el error? Vamos a revisar. Vamos a revisar nuestro guión. Comprobemos nuestros scripts para creación de empleados. Ese es empleado DTO, ¿verdad? Así que vamos también. Veamos esto. Bien, entonces este es el tipo que entra. ¿Bien? Se adquiere el nombre. No se puede conocer el nombre. Esto es correcto. Entonces este es el otro tipo que lo juega. ¿Bien? Esto podría ser 4-10, que está cubierto, vamos a revisar las entradas. Las entradas también para la dirección apenas abastecen para todo esto. Bien, entonces es llamar a string dot length en algo en lo que no estamos usando string dot. Entonces eso es lo que prácticamente queremos observar ahora. Entonces, si compruebo el error para que el error no sea realmente lo suficientemente descriptivo para saber exactamente qué se ha mostrado, entonces tenemos que hacer un poco de depuración, ¿verdad Entonces lo que voy a hacer es que voy a colocar puntos de ruptura en lugares, en realidad voy a hacer eso Voy a publicar este video, averiguarlo y volver a ustedes, ¿verdad Muy bien, chicos. De hecho, he podido averiguar de dónde viene el problema. Entonces el problema básicamente venía de cuando estamos mapeando el ajuste puesto a la entidad a la entidad de ajuste. Entonces este es el punto. Ahora, en realidad estamos esperando Recuerda la parte que realmente estamos recuperando la dirección de la base de datos o estamos mapeando Yo ya estaba haciendo esto. Pero cuando estamos creando una nueva dirección, esto sería nulo y no se puede usar un nulo. No se puede extraer un UUID de Nulo. Ese es el tema. Ahora acabo de agregar este nulo. Si esto no es nulo, entonces esto realmente funcionaría con precisión. Ese fue el error. Entonces, como pueden ver, realidad he podido crear con éxito. Entonces, lo que haría solo ukly concluir esta sección para que podamos realmente terminar a tiempo Acabo de recibir suscripción. Sólo me suscribiré a mi empleado. Bien, así que vamos a eliminar estos puntos de interrupción. Estaba depurando, así que tenía eso. Bien, entonces al parecer, ya tiene listo adentro, así que esa es la razón por la que. Para que puedan ver, porque acabo de conectarme, trajo esto automáticamente. Así que vamos a añadir uno más y vamos a completar esta sección. Entonces tenemos seis. Simplemente llamamos a esto rojo 16. Entraré y solo cambiaré la identificación y solo haré esto. Y vamos a despedir esta petición. Eliminemos todos estos puntos de interrupción, ¿verdad? Todos estos puntos de interrupción se tienen. Quieres mover todos estos puntos de interrupción. Aquí es donde realmente emite, pero mueve todo. Esto se crea con éxito en la suscripción de Chile y ver que la suscripción ya está ahí. Solo agreguemos un detalle más y veremos esto entrando y dx concluirá esta sección. Bien, así que con esto pasando, genial. Impresionante. Tú eres uno, dos, tres. Bien, así que he podido mostrarte cómo funciona Webscare, así que en realidad solo podrías emitir datos y que tus clientes o tu cliente solo obtengan los datos Habrá un suscriptor, un info. Quieres pasar la notificación a tu app y a tu app, esta es la mejor manera de manejarla, ¿verdad? Probablemente podría otra forma en la que básicamente podrías hacer esto. No tiene que ser sobre la creación. Podrías tener solo un punto final, crear un punto final, único punto final que probablemente tengas control sobre el mensaje desde el lado administrativo, pasar los datos al lado administrativo, destinado a mayores solicitudes. Quien esté escuchando en ese canal solo lo recibe directamente. Entonces tu front-end, tu app móvil, todos en realidad solo escuchan esa sospecha en particular y la arreglan. Todo bien. Y lo consiguen en realidad esto lo que quería decir. Todo bien. Entonces con eso, lleguemos al final de este video. Los veré chicos en la siguiente sección. Te veré en el siguiente video. 105. Instrumentación parte 1: Oigan, chicos, genial tenerlos aquí. Todo bien. Hasta ahora ha sido un viaje increíble. Hemos mirado tanto concepto en la gráfica QL, y hemos tocado varios detalles La idea es llevarte realmente de extremo a extremo porque siempre prometí que siempre vas de extremo a extremo para que básicamente pudieras iniciar un proyecto usando GraphQL e iniciarlo hasta que seas capaz de implementar en un servidor o una herramienta de orquestación de Kubernet que básicamente pudieras iniciar un proyecto usando GraphQL e iniciarlo hasta que seas capaz de implementar en un servidor o una herramienta de orquestación de Kubernet, ¿verdad? Y ese es el objetivo. Bien. Todo bien. Entonces en esta sección, estaremos viendo algo que se llama instrumentación. Instrumentación. Ahora bien, ¿qué es la instrumentación? Ahora bien, tenga en cuenta que la instrumentación simplemente significa que desea controlar el tipo de datos o quiere poner alguna medida de control para que su aplicación probablemente pueda funcionar mejor. No quieres exponer algún detalle sensible. Quieres asegurarte de que quieres limitar a tus clientes no puedan acceder a más algún número particular de campos, ¿verdad? Quieres asegurarte de que con base en alguna lógica en la que hayas colocado, tus clientes no puedan obtener realmente algunos detalles. Entonces todo se trata de control, ¿verdad? Todo sobre el control. Así que entremos en Bien, entonces hay algunos controles básicos que ya nos están dados por defecto en GraphQL Voy a entrar, implementar esos básicos, probarlos mouse, luego crear control personalizado. Entonces eso es lo que voy a hacer. Empecemos. Lo primero que voy a hacer, lo primero que voy a hacer dentro de esta configuración, voy a crear algo llamado config de instrumentación. La instrumentación de configuración de instrumentos se trata controlar cosas que realmente quieres revelar, ¿verdad? Control inicial. Como de costumbre, las configuraciones de instrumentación se enfrían. Entonces dejémosle esa configuración. Nada diferente. Ahora, al parecer, voy a traer una papelera, y voy a tener una papelera realmente traída, ¿verdad? Sí. Entonces Bin entonces traes instrumentación. Recuerda que cuando estás definiendo una configuración, no necesitas usar la palabra clave public. Puede ser privado. No es necesario usar una palabra clave public porque miembro va a colocar en el COI La instrumentación es verdadera. Puede ser alguna instrumentación S, instrumentación, la instrumentación de lo que la estamos tomando va a estar viniendo de la instrumentación va a estar viniendo de la gráfica instrumentación de ejecución KWL, es muy bindfulGraph que instrumentación es muy bindfulGraph Tenemos que el primero que vamos a ver se llama instrumentación de rastreo. Llámalo rastreo. Instrumentación. Ahora bien, lo que hace la instrumentación de rastreo es que le da paso más contexto a su aplicación, ¿verdad? Da más contexto a la aplicación. Creo que es la mejor manera solo de mostrarlo. Entonces comencemos con la aplicación, ¿verdad? Entonces, una vez que iniciemos la aplicación, simplemente configuraré rápidamente una gráfica que. Vayamos a cualquiera de las lecturas que hemos hecho. Voy a ir a vamos a la hierba. Sección donde hacemos una consulta. Hicimos una consulta básica aquí. Esto es realmente genial. Vamos a usar esto. Estamos a buscar. Traer vamos a buscar a buscar. Consulta básica. ¿Qué vamos a buscar juego por ID de personal? Esto está bien. Esto se inicia con éxito. Entonces, en un día normal, conoces exactamente todos los aspectos. Ahora, vamos a darle a esto. Vamos a darle a esto Bien, entonces creo que esto ha cambiado. Entonces, vamos a traer la identificación. Vamos a traer una identificación que sea válida. Voy a ir en empleado, obtener una identificación, una identificación válida, una identificación válida, identificación de empleado. Por lo que esta es una identificación de empleado válida. ¿Qué soy yo? Lo siento, creo que en realidad lo presenté. Bien, entonces quiero elegir una identificación de empleado válida. Entonces vamos a entrar en OTA. Aquí hay esta identificación de empleado válida. Entonces bien. Entonces, incluso antes de hacer esto, ya se podían ver todos estos detalles. Tienes detalles para la versión de rastreo, esta hora comienza. Te da muchos detalles, ¿verdad? Muchos de estos y estos se convierten en variables, ¿verdad? Así que por favor considere cuidadosamente si quiere usar esto, ¿verdad? Si es algo que crees que es necesario para que lo uses. Entonces, vamos a darle a esto otra vez. ¿Correcto? Ves que está agregando mucho más contexto para mostrarlo para mostrar instrumentación, y esto contiene muchos detalles. El tipo padre, la etiqueta de retorno, el nombre del campo. Podrías necesitar alguna información, varios datos aquí. Puedes explorar esto agrega muchos detalles aquí, ves al empleado DTO, ves el género Ves el tipo de devolución, ves el nombre del campo. Para cada uno de ellos, cada uno de estos campos, cada uno de ellos tiene algún detalle a especificar. Vayamos a buscar espuma. Si lo miras con atención, probablemente encuentres diversión que necesitamos. Bien, esta es la dirección, el teléfono. Verás, teléfono, cadena. Te da detalle de cada campo, ¿verdad? Así que por favor considera si es algo que quieres agregar. Entonces eso es eso. Si no estás al tanto de esto antes, lo que voy a hacer es que voy a ir a la configuración. Comencemos con esto. Voy a comenzar esto, ¿verdad? Elogie esto, reiniciemos su aplicación para que pueda ver la diferencia, pueda ver la diferencia Mientras se acerca esto, entremos rápidamente. Observe amablemente, notará que en realidad se agregó un campo de esta extensión de vales, rastreo y le da todos los detalles Creo que la aplicación se inicia es exitosa. Vamos a darle a esto otra vez. Ves la diferencia, ve la diferencia. No hay detalles adicionales. Eso te da información sobre cada campo. Voy a traer esto. Si es algo que ha estado necesitando y queriendo traer, así que considere usar instrumentación de rastreo. Antes de iniciar la aplicación, la siguiente la traemos. El siguiente que traemos es algo llamado instrumentación de complejidad de consulta MAX. Eso es un múltiplo, pero voy a explicar lo que hace. También es una instrumentación, pero es un estado con un nombre, Max query. El nombre tiene que ser exactamente lo mismo. Consulta solo devuélvete esto. Bien. Ahora bien, lo que esto hace es limitar el número de campos que puede tener un cuerpo de respuesta de consulta. Así que tenlo en cuenta, limita el número de campos que puede tener un cuerpo de respuesta de consulta. Entonces aquí mismo, voy a decir bien para este cuerpo de respuesta, hagamos tal vez cinco. Entonces vamos a hacer cinco. Entonces estudiemos esta aplicación, ¿verdad? Estudiemos esta aplicación y llamemos al punto final y vas a ver que el error va a ser. Te va a decir lo máximo que espera, ¿verdad? Pero mientras tanto en realidad estás permitiendo sólo cinco. Bien, entonces te decimos lo que estás pasando y el maxonal está permitido. Bien, vamos a darle a esto. Ya ves, la complejidad queer máxima superó 19. Tantos 19 es lo que estamos esperando. El número de combustibles que se estaba devolviendo es en realidad mayor de lo que se espera. Entonces entremos y luego pongamos esto a 19. 19 está esperando. 19 es lo que te liberamos el número total de combustibles. Entonces, reiniciemos esta aplicación. Y esto se acerca, ¿verdad? Así que recuerda, ¿qué es esto otra vez? Voy a poner aquí los comentarios para que nos ayude a recordar. Entonces este es un comentario. Entonces dice, limita el número de este tipo o el número de fi un cuerpo de hijo de consulta puede ayudar nota agrego esta instrumentación estresante la va a aumentar porque en un día normal, vamos a observar esto Vamos a extender esto y vamos a darle a esto. Ves que esto funciona. Ahora vamos a contar. Vamos a contar a este tipo. Entonces tenemos un uno, dos, tres, cuatro, cinco, seis, siete. Este es uno, así que no se cuenta el anidado. El siete, ocho, nueve, diez, 11, 12, 13, 14, 15, entonces se puede ver, cada uno de ellos se puede contar 16, 17 , 18, 19, tiene este tipo, creo que tres. Él trae esto. Eso es lo que está contando todo dentro. Pero ve esto como uno, ve esto como uno. Ver esto tiene uno tiene uno, ve este nivel como uno. Si el conteo no tiene sentido, probablemente puedas simplemente verificarlo, pero lo genial es que GAF care te dirá lo que espera Se supone que es este número estamos proporcionando un número que va mucho más allá de lo esperado. W esto hecho, los veré chicos en el siguiente video. 106. Instrumentación parte 2: Bien, así que básicamente somos capaces de ver la consulta la complejidad de la mascarada, más bien, la instrumentación de complejidad de enmascaramiento, y somos capaces de determinar que esta es la Ahora bien, ¿dónde entra esto? Tenga en cuenta amablemente. Si no quieres revelar todos esos detalles, no creo que quieras que tus clientes muestren tu información de rastreo. Entonces no creo que quieras hacer esto, pero solo quería que supieras que existe, ¿verdad? Ahora, lo genial es que si quitamos esto, juguemos un poco con esto y pongamos esto a cinco, verías reducir drásticamente Y entonces te diré exactamente lo que deberías estar haciendo, ¿verdad? Digamos que tienes varios campos e idealmente crees que tu cliente no debería consultar más de siete campos por vez. Podrías poner el límite aquí. Esa es toda la idea. Podrías poner el límite. Si llamas a esto, ya ves, estás esperando 19, pero en realidad estamos lanzando cinco. En realidad estamos lanzando cinco. Necesitas poder decirles realmente, darles exactamente lo que quieren. Yo les doy lo que quieren, asegúrense de que probablemente sean capaces de consultar sólo lo que puedan. Aumentemos a diez. Reiniciemos esto de nuevo. Entonces estaremos iniciando la aplicación. Creo que quiero eliminar el objetivo para eso. No, solo comencemos esto Vamos a poner en marcha esto. Veamos cómo se desarrolla. Entonces esto se acerca. Todo bien. Entonces esto es genial. Ahora, llamemos a este tipo. Bien, entonces dice que todavía esperas 19. Bien, así que sigamos adelante y sumemos 19. Entonces 19 es lo que se espera. Agreguemos 19. Entonces voy a ejecutar esto otra vez. Entonces, volvamos a ejecutar esto. Esto se acerca. Simplemente empuja a través. Bien, eso funciona. Todo bien. Entonces, vamos a poner en marcha esto. Bien, entonces digo esto primero 19. Vamos a contar a este tipo. Uno, dos, tres, cuatro, cinco, seis, siete, ocho, nueve, diez. Creo que empiezo de nuevo. Vamos a contar este uno, dos, tres, cuatro, cinco, seis, siete, ocho, nueve, diez, 11, 12, 13, 14, 15, 16, 17. Diez más el 219. Creo que ahí podría haber un error. El rastreo no le agrega complejidades. Creo que solo se trata de la cantidad de campos que está mirando, ¿de acuerdo? Creo que es una omisión. Oh, eso es una exageración de mi parte. Entonces el rastreo no agrega nada, así que voy a seguir adelante y eliminar este comentario para que no confunda a nadie Bien, entonces el número de, creo que hemos podido averiguar es exactamente el número total, ¿verdad? Entonces 19. Por lo que esperan que el número máximo total sea de 19. Entonces si estás diciendo, Oye, no quiero dejar más de siete, así que déjalos elegir exactamente lo que quiere, entonces. Eso va a estar bien. Entonces, ¿cuál sería la mejor manera de hacer esto? Para este tipo que están esperando, podrías decirles, oye, quita no quiero que agregues un no quiero que agregues nada que tenga que ver con departamentos. Todo bien. Él es mío. Aquí es donde estoy. Yo podría decir, limitar esto a 12. He quitado esto, he quitado esto. Ahora tenemos probablemente un 17. Ahora tengo por aquí, he dicho 16. Sí, vamos a tener 15. Ahora tenemos 15, creo que podemos probarlo y voy a poder realmente conseguir el mensaje. Ponemos esto como 15. Comencemos la aplicación si eso realmente coincide con precisión. Ese es el inicio. Volvamos. En apenas un par de segundos, eso habría comenzado. Creo que empecé con éxito. Vamos a darle a esto otra vez. Vamos a darle a esto otra vez. C no se queja porque contamos uno, dos, tres, cuatro, cinco, seis, siete, ocho, nueve, diez, 11, 12, 13, 14, 15. ¿Estoy contando mal? Es uno, dos, tres, cuatro, cinco, seis, siete, ocho, nueve, diez, 11, 12, 30, 40, 15. Eso es exacto. Vamos a introducir esto nuevo y vamos a darle de nuevo. Se podía ver. Esto realmente lo valida, no debe exceder No debo rebasar. Para que podamos proceder correctamente, voy a seguir adelante y sólo decir el número máximo. Se nos espera. ¿Todo bien? Bien, entonces lo dejaré en eso cualquiera que encontremos con aumento. Entonces el siguiente del que queremos hablar en instrumentación se llama instrumentación profundidad de consulta máxima, instrumentación profundidad de consulta máxima. Entonces simplemente funciona algo similar a esto, pero con una variación. Por lo que esta será consulta max consulta Max. Profundidad máxima de consulta, instrumentación de profundidad de mascarada. Entonces vamos a tener, esto es lo que estoy esperando. Máscara ahora, ¿qué es la instrumentación de profundidad mascud? Significa que hay una serie de muertes. Podemos tener la profundidad máxima que podamos tener. Veamos qué significa profundidad. Así que vamos a encomiar esto de nuevo, ¿verdad? Reiniciemos la aplicación, ¿verdad? Reiniciemos la mutación. Voy a establecer esto a probablemente voy a establecer esto probablemente nueve que volverán. Volveremos también, pongamos esto siete. Pronto estará bien. Solo comencemos la aplicación, luego empecemos a ver qué es eso. Es entonces cuando empiezas a ir dentro de un campo anidado. Cuando vas, cuál es el campo mayor o el máximo anidado que puedes tener Eso es básicamente lo que significa. Si vas ahora, volvamos a ejecutar esto. Ahora bien, esto es anidado dos. Se ve que voy en el siguiente paso dos, todos estos están en el mismo carril, esto es anidado tres Todos estos están en el mismo carril, este está anidado cuatro. El máximo que tiene es de cuatro. El máximo aquí es de cuatro. Lo que voy a hacer es reducir esto a tres. Vamos a reducir esto a tres. No veo el máximo que nos dice que tengamos físicamente si vas a estar usando ese detalle en particular. Dices que ese tipo debería tener tres. Si le pegamos a esto Bien, así que revisemos de nuevo. Uno, uno, dos, creo que dices esto como uno, uno, dos, tres. Creo que vamos a probar esto. Vamos a probar esto. Vamos a balear esto como dos, a menos que iniciemos la aplicación. Creo que eso empezó , vamos a darle a esto y veamos el máximo de muertes que tenemos aquí. Dice el máximo que es tres y en realidad esperamos dos. El máximo que es tres. Inspeccionemos correctamente y contemos correctamente una vez más. Voy a entrar y aumentar esto a tres para que podamos ver cómo funciona esto físicamente. Aumentemos nuestra iniciamos esta aplicación, le permitimos una startup o post. Esto se pone en marcha. Vamos a darle a esto. Bien, entonces tenemos uno, dos. Entonces tenemos uno, dos, tres. Bien, entonces son tres, uno, dos, tres, la profundidad es tres, uno, dos, tres. Entonces cuando tenemos algo mayor, se puede ver que eso probablemente sería un disuasivo para nosotros, Eso va a ser un disuasivo para nosotros. Ahora creo que entiendes lo que hace la instrumentación matemática de profundidad Squami, ¿verdad Bien, entonces voy a dejar esto como esto. Cuando realmente necesitamos algo más agregamos así que lo voy a dejar a las siete que en caso de que no encontremos ningún error para poder verificar realmente los spots. Creo que entiendes la complejidad. Entonces lo que voy a hacer es que voy a simplemente poner un comentario aquí. Voy a poner un comentario aquí. Este es un comentario que usé antes en las pruebas. Traes el pytnin por nombre de acompañamiento. Ahora, vamos a buscar el pykn por nombre de acompañamiento. Creo que eso probablemente debería explicar. Este es probablemente un buen detalle. Yo solo este comentario para que este comentario pueda ser utilizado para rastrear realmente para que sepas exactamente. En este caso, este es uno, dos, tres , cuatro, estoy seguro que son cuatro, entonces los veré chicos en el siguiente video. 107. Instrumentación parte 3: Oigan, chicos, genial tenerlos de vuelta. Bien, entonces instrumentación, veamos instrumentación personalizada. Instrumentación personalizada, básicamente se podría ver esto como otra forma de validación. Digamos que tiene alguna validación que no se puede atender a la vista aparentemente hibernis para atender la mayoría de sus validaciones Hiberni para atender la mayoría de sus validaciones. Pero digamos que para tus imputs, intentas realmente hay una lógica personalizada que quieres implementar que lógica personalizada hibernar no Digamos que la validación, la validación de Hibernate, esa es una validación de arranque de trampolín, realmente no la maneja y quieres agregarle esa cosa en particular Ahí es donde quieres usar la instrumentación personalizada. Sigamos adelante y creamos algo llamado instrumentación personalizada. Configuración de instrumentación. Solo te voy a mostrar una pareja para que solo puedas hacerte la idea de cómo funciona que pones expandirla. Eso es lo que voy a hacer. Al parecer, lo laboramos con en la configuración. Ese es el primer bit. Ahora, los dos primeros si quieres crear instrumentación personalizada, necesitas definir algunas cosas. Al parecer, debe ser una instrumentación de instrumento, eso es una instrumentación. Entonces al parecer tiene que ser un sido? Entonces yo código es borde de paginación. Instrumentación. Ahora bien, este es el formato que sigue. Este es el formato así que voy a traer enseguida. Entonces, por favor, siga de cerca los formatos que va a usar de inmediato. Vamos a tener algo llamado pase de resultados. Ruta de resultados. La ruta de resultado es solo definir qué puntos finales de gráfico desea apuntar realmente. Las rutas de resultados van a tener llamar al empleado de Pagenate. Ese es el que realmente queremos verificar contra empleado, entonces eso será igual a rutas de resultados, paso de punto, luego traemos en esta guía hacia adelante slash plus, vamos a usar un DGs constantes, constantes DGs, consulta de punto, así, ¿a qué nos dirigimos o apuntamos a la paginación o apuntamos a la paginación Así que ten esto en mente. Así es como funciona. Entonces esta es la parte a la que se dirige para esta instrumentación de la edad de la página. Creo que no deletreé esto correctamente. Déjame factorial. Así que sea una S y una S falta aquí. ¿Bien? Ahora bien, esta es la primera parte. Ahora el segundo bit es que vamos a la búsqueda neta algo llamado una simple validación pelada. Validación simple de campo, validación. Voy a ser nuevo esto, esto está bien. Tenemos pensamientos de validación agregar regla. Entonces necesitamos agregar una regla. Entonces queremos que este tipo vuelva a trabajar para validar realmente en contra. Agregarán una regla aquí. Entonces la regla, ya ves, la regla es en realidad una función bi. Así que vamos a crear una función bi para realmente tener esto hecho. Una función B, entonces sólo vamos a devolverla. Digamos regresar, devolver nueva validación de campo, ¿de acuerdo? Así es básicamente como se hace. Entonces ahora agreguemos un rol. Entonces porque necesitamos una biefunción, así que vamos a crear la Recuerda cómo lo llamas. Lo llamaré privado, una función bi. Necesito una función bi. Una función B significa que tomas dos entradas o me das una salida, una función, tomas una entrada piensa que quieres salida. Una función Tri lo mismo que podrías implementar. Creo que el máximo que tienes es un Bye, pero sigues los mismos patrones para crear un try un cuádruple, un penciple solo dependiendo de él, pero eso está más allá del alcance de lo que estamos viendo Así que sólo para apegarse a una B que se requiere. Ahora para la función Be, vas a tomar en un campo argumentos. Campo derecho y argumentos, toma en validación de campo. No te preocupes, esto es estereotipado para que no tengas que memorizar realmente Siempre solo ve a revisar y tomar lo que necesites. Esta parte, y por último, nos va a dar esta opción, que va a ser en caso de que se produzca un error. En caso de que ocurra un error, un opcional, se produce un error, obtenemos un error QL gráfico opcional Si ocurre un error, esperamos que esto esté disponible. Voy a llamarlo paginación, paginación borde. Entonces quiero que sea más declarativo. Diré la edad de paginación. Déjame mover esta edad. Diré búsqueda de edad, regla mayor a 17. Eso tiene sentido si pasas algo menor a 17, vas a tener más tarde de 18, vas a tener un error. El asesoramiento debe ser un empleado debe ser mayor a ocho c igual o mayor que 80. Esa es la idea. ¿Cómo funciona esto? Tú devuelves esto. Vas a regresar recuerda estos son los pocos estos son los argumentos que están entrando, y este es el error. Se trata de 32 entradas porque una bifunción siempre tomará en C y una U y devolverá la R. A T que es la primera que imputa R que está en segunda imput y ésta es, que es Estamos esperando que estas son las dos cosas que se requerirán ahora mismo. Entonces este tipo, estas son las entradas entonces básicamente solo regresamos, y ahora queremos devolver lo que necesitamos. Voy a decir usemos un mapa una cadena de mapa, una cadena de mapa, luego objetos porque no sabemos lo que devuelven. Entonces voy a decir argumentos empleado, arg empleado, g empleado es igual Entonces voy a usar un campo argumentos, el campo el campo, debería haber un pequeño después. Debe ser un campo pequeño porque todo lo que usa los objetos. Yo pabled argumentos, luego punto obtener argumentos valor. F argumentos. Eso está bien entonces. Punto Debe haber un argumento punto get. Permítanme observar esto un poco. Oh, lo siento. Creo que me estoy perdiendo esto porque esto tiene que tener esto. Cerramos esto, ¿verdad? Cerramos esto. Entonces cerramos esto también. Oye, eso funciona. Bien, entonces trae esto. Sé un mapa. Til mapa. Entonces obtiene argumentos. Bien, creo que me falta algo. Yo debería ser argumentos de campo. Bien. Déjame observar esto. Claramente, ¿qué me falta? Oh, lo siento. Creo que este es el error. ¿El error aquí? Al parecer, sí, necesito agregarlo porque una función ¿verdad? Una función necesita realmente suceder uso podría tomar un argumento. Bien, entonces tenemos que luego campo obtener argumento, ¿verdad? Esto lo que estoy buscando consigue argumento. Entonces, ¿qué argumentos estamos buscando? Por favor en ratón muy cuidadoso. ¿Qué argumentos buscas? Recuerda cuando estamos haciendo una búsqueda de paginación, estamos pasando una imputa Esa es la imputa a la que voy a apuntar aquí. Vamos a verlo. Paginación, paginación de empleados estamos apuntando a este tipo, apuntando a esto porque quieres validar algún campo dentro de este objeto, por favor juega observando esto estamos Por eso estoy apuntando a la búsqueda. Por eso voy a tener dentro de esto. Podría simplemente escribir búsqueda pero me gusta usar mis constantes. Yo sólo diré constantes DGs. UGS Constance Dots Queb paginación de empleados. Debe haber un empleado que la paginación impute argumento. Verás, esto nos da búsqueda. Esto es un moueful, así que solo usa lo que sea cómodo para ti, Me gusta usar la constante de excavaciones, pero ya ves que en última instancia solo usa la búsqueda, que mapea exactamente con esta esta búsqueda Todo bien. Entonces eso es genial. Entonces con eso, así que ahora ayudé porque al parecer es un objeto. Podría ser cualquier cosa así que podría ser un objeto. ¿Bien? Entonces estos videos ya se hacen muy largos, así que volvamos en el siguiente video para terminar esto de verdad. Bien. Los veo en el siguiente video. 108. Instrumentación parte 4: Muy bien, genial tenerte por chicos. Bien, así que vamos a completar esto. Entonces lo estoy dando paso a paso, y es por eso que los videos que se están volviendo bastante largos esta semana giran cada detalle para que no te quieras perder nada, ¿verdad? Para que siempre pudieras ver el video para entender el concepto. Ahora, comencemos el DOB. Recuerda que pasamos en un DOB arranca, voy a pasar en un DBN. Así que refresquemos nuestra memoria. Vamos allí DOB inicia un DOB N. Eso es a lo que voy a estar Bien, así que volvamos. Por lo que las fechas locales, Fechas locales Comienza la fecha de nacimiento. Comienza DOB, entonces voy a echarlo a unas fechas locales, fechas locales Voy a sacar los argumentos. Voy a usar get o default, G o defaults. misma manera, voy a usar mis constantes de excavaciones, me encantan estas constantes indigs Este tipo puntiea DOB. Recuerda que comienza el DOB. Si eso no está disponible, mira el punto ahora. Hagamos lo mismo para DOB end, DOB end. Voy a llamar a este fin de fecha de nacimiento. Todo bien. Bien, así que esto es chicos bastante geniales. Ahora, vamos a conseguir la ventaja. Vamos a conseguir la ventaja. Esto en realidad equivale a. Voy a conseguir la ventaja. Yo lo llamaré ge ge start, vamos a llamarlo HA. Esto funciona. Entonces mírelo ahora. Llegaremos hasta aquí. Bien, esto funciona. Esto fue mirarlo ahora, llegar aquí, así que lo estás restando. De la misma manera a gB. Ese será el fin del DOB para ser el final del DOB. Seguro entiendes lo que hay en esto poniendo ventaja, ¿ verdad? Sólo el borde. Edad actual cuando usa DOB comienza, los bordes y DOB los bordes Esta es la lógica de que voy a dar mi consentimiento. Diré si HA, si HA, diga si HA si HA es menor que 18 o HB, podría escribir mejor validación. HB es menor a 18. Si esto es menor a 18, ¿qué quiero hacer? También devuelvo una opción r. Voy a usar un error opcional. Recuerde que devolvemos un error QL en última instancia gráfica. Eso es lo que estamos recibiendo ret. Voy a estar usando esto para devolver la flecha gráfica, esta parte, usa a este tipo cometamos error. Verás, cuando cometes el error, finalmente obtienes el error QL del gráfico Así es como funciona. Se usa esto, se crea un error de gráfico al final del cual se espera. Entonces voy a decir Él busca. Para inicio y fin deben ser mayores que mayores o iguales a 18. Creo que esto funciona. Esa es la primera parte. Entonces de lo contrario nt opcional, lo que significa que no hay error o código en absoluto. Básicamente, así es como funciona. Entonces entonces escojo esto y luego lo conecto aquí. Entonces eso es todo. Entonces eso es todo lo que necesitas hacer aquí. Así que entremos. Déjame usar una palabra clave dis, ¿verdad? Esto esto. Entonces esto funciona. Entonces, reiniciemos esta aplicación, ¿verdad? Así que ahora hemos agregado una instrumentación personalizada, y la instrumentación personalizada está mirando al borde. Entonces, si el borde nosotros pasivos, ya sea para el inicio o gen no es mayor ni igual a 18, te va a llegar esta flecha en particular que te arroje, ¿verdad? Entonces hagámoslo rápidamente y veamos en acción. Entonces voy a ir a mi paginación. Vamos a la paginación. Recuerda que un feliz están disponibles para ti. La paginación ya probó esto antes. Así que vamos a probar esto. Entonces solo voy a usar la paginación. Hagamos esto. Entonces esto funciona porque ahora tenemos datos válidos. Voy a escoger digamos que esto es 2024 o digamos 2000, voy a decir 2020 aquí. Entonces 2020, vamos a pegarle a este tipo. Verlo clics en borde, búsqueda o inicio inicio o fin es mayor que 18. Entonces esta es una mejor manera de escribir complejo si quieres escribir una lógica compleja, ¿verdad? Para tu gráfica Q, podrías simplemente colocarla y quieres validar contra el alboroto de entrada Esta es una buena manera de hacerlo realmente para usar instrumentación, quise decir. Entonces voy a escribir algo de lógica extra Aquí hay algún error. Corregimos eso. Voy a añadir algo de lógica extra. Entonces este es solo uno de tres. Solo hagamos dos más, así que eso nos va a dar un mejor sentido en caso de que queramos en caso de que queramos explorar, así que solo quiero darte más opción. Así que esta vez, voy a hacer algo, digamos, vamos a hacer una edad de 65 es decir en 65 años en cinco años, si tienes 65 en cinco años, eso significa que no podemos contratarte, ¿verdad? Pero tomarlo como seguro a los 65 es la edad de jubilación. Pero dentro de cinco años, si eres mayor, vas a tener 65 es decir, no vas a estar trabajando para nosotros más de 55 años, más de cinco años quiero decir, no queremos que te queremos a largo plazo, quiere tener al menos 60 años Sigamos adelante e implementemos esa instrumentación. Sólo voy a copiar esto y hacer ajustes. estos los llamo recuperar te llamo lograr Él validación. Instrumentación de validación de edad. Recuperar validación de edad, recuperar instrumentación de validación de edad. Recupera la edad, esto funciona. ¿Cuál es el error aquí? ¿Por qué se queja Creo que no está cargado correctamente. Esto está bien. ¿A qué nos dirigimos? Recuerda, estaré apuntando cuando estemos creando un empleado. Esto es lógica. Cuando estamos creando un empleado. Recuerde pregunta debe ser mutación, puntos de mutación crea empleado. Esto a lo que estoy apuntando. Voy a llamar a este borde llamarlo edad 65 en cinco años regla. Regla de cinco años. A éste lo voy a llamar. Vamos a crear a este tipo. Todo bien. Entonces esto ha sido creado para nosotros. Sólo voy a mover esto a la cima. Bien, vamos a mover esto a continuación, así que debería ser lo propio para nosotros. Bien, así que voy a tener esto aquí. Muy bien, genial. Entonces, vamos a crear esta regla. Entonces esta regla va a ser bastante sencilla. Entonces, ¿cómo sería la regla? ¿Básicamente? Entonces esto probablemente solo robaría esto también el modificar. Bien, entonces, ¿qué necesitamos aquí? Ya trajimos esto ahora. Voy a conseguir miembro por esto no es tal. Pero esto es mutación. Voy a estar usando mutación y lo que necesitamos. Lo que necesitamos básicamente es crear empleado. Punto de mutación crear empleado. Entonces hay un crédito constante para nosotros. Así que crea empleado empleado subcontratar. Eso es lo que estamos usando. Recuerda, empleado subcontratar. Eso es lo que comprobamos. Estamos creando un empleado. Esta parte, ya ves, empleado subcontrata. Esta es la parte a la que realmente estás apuntando. ¿Todo bien? Así que la constante de DiGir crea muchos detalles, de modo que solo aprovechándolo Entonces con eso en su lugar, oh, eso está en su lugar. ¿Qué voy a hacer? Será tan sencillo como comprobar la edad. Sólo voy a comprobar la edad que en realidad se imputó en, voy a comprobar por esto Sólo necesito uno. Creo que necesito todo esto. Sólo necesito uno. Va a ser un mapa, al parecer. Pero lo voy a conseguir como un int, lo voy a conseguir como un int. De ahí, llamémoslo edad, edad, y la edad va a ser un entero, porque es un entero. Argumentos empleado consigue o default, el empleado subcontrató Recuerda, empleado subcontratado imputa. Esa es la edad. Recuerda, estamos apuntando a la edad dentro de este tipo. Si regresas aquí, revisas esto, estás apuntando a esta ventaja, a lo que estamos apuntando. Yo solo voy particularmente, si revisas esto correctamente, puedes ver y solo apuntando a edad solo puedes usar el borde de la cuerda. Solo estoy usando las excavaciones porque me encantan estos indigs. Cuando tengamos esta ventaja, sólo voy a quitar toda esta lógica y voy a decir si g más cinco es mayor o igual a 65. Si son 65, voy a decir que debes ser vamos a reescribir esto para decir, no debes tener 65 ni más Cinco años o más en cinco años. Cinco años. Bien, así que reiniciemos esto. Entonces con Q. Así que esa es básicamente la regla en realidad estaban colocando realmente colocando aquí para este tipo. Entonces estamos reiniciando esto. Entonces, reiniciemos esta aplicación, ¿verdad? Entonces mientras estudiamos esta aplicación, acudimos al empleado que dejó de fumar. Muy empleados nuestro objeto objetivo aquí. Así que crea empleado, derecho. Así que trata de crear empleado. Esto es bastante genial, vamos a apuntar a la edad. Esto es 2024. Digamos que ya tengo 60, ya tengo 60. Ya tengo 61 años. Dentro de cinco años, al parecer, tendré 66 años. Voy a tener 66 años. Vamos a pegarle a este tipo. Verás, no debes tener 65 años ni más en cinco años. Bien, chicos, los veré en el siguiente video. 109. Instrumentación parte 5: Oigan, chicos, es bueno tenerlos de vuelta. Bien, capaz de crear dos instrumentación personalizada. Recuerda que esto es muy importante. Si quieres validar los campos que están entrando a tu aplicación y no puedes usar la normal no puedes usar la validación de hibernación normal o probablemente la validación que agregamos en que no está funcionando para ti y necesitas algo con más lógica o lógica más personalizada Este es tu bien para chico. Esta es tu instrumentación de buen chico. Todo bien. Por último, implementemos uno más. Al parecer ha sido Hey, Ben, sólo voy a traer a este tipo. Yo sólo traeré esto. Ahora solo voy a actualizar esto. Llamemos a esto instrumentación de validación basada en salarios. Llámalo sueldo base sueldo base, instrumentación de validación. Esto también se dirigirá al objetivo de crear empleado el empleado creat Ahora, voy a llamar a este salario debajo de la regla de los 50 mil. Sueldo por debajo de 50,000 regla cuatro pasante o salario inferior a mil cuatro de cada diez Para las reglas de Pasante. No lo estoy haciendo muy descriptivo con el nombre. Vamos a crear esto. ¿Ya entiendes exactamente cómo va a jugar esto? Dices que el salario para Pasante debe estar por debajo de los 50 mil. Si no está por debajo de los 50 mil, vas a obtener una excepción. Déjame ir rápido y robar esto y agregarlo aquí. Eso es genial. Ahora bien, recuerda que esto debería estar enfocándose en el empleado creador. El empleado subcontrató quiero decir porque estás creando esto así que estamos usando Ahora, voy a conseguir el sueldo. Aquí voy a estar recibiendo el salario, el salario es lo que en gran decimal? El salario es decimal grande. El salario es decimal grande. Tenemos el salario, que es un gran decimal. Entonces al mismo tiempo también, sueldo C, vamos a cortar este gran decimal, salario. Entonces ahora también voy a conseguir el rollo. Yendo a conseguirlo roll roll you roll roll. Voy a cortar este rollo. Cuál es el rollo ahora tipos Dyn. Entonces el cordón enrollable es rollo. Rollo. Ahora bien, ¿cómo funcionaría esto? Esto no necesita. Él, esto está bien, asegúrate de que la custodia g está bien. Entonces este sería cero decimal grande. Usemos el cero decimal grande. Esto sería cero decimal grande. B decimal cero. Esto es fila solo le va a dar una regla por defecto de inten Esto es papel en diez Todo bien. Esto sería si el salario es mayor. Déjame escribir aquí la validación. Yo digo, Bien, creo que puedo hacer esto. Puedo hacer una declaración, no escribir demasiadas lógicas. Entonces voy a decir que el salario es mayor o comparar puntos. Recuerda, estás usando grandes decimales para comparar. Punto comparado con el valor decimal grande del valor de RSMa, bien, valor de entonces yo pasando un doble 50,000 Esto es una coma 50. Bien, eso ahí. Entonces, veamos, ¿qué es? ¿Cuál es el valor esperado Vesima de esperar qué? Un largo, ¿verdad? Un largo. ¿Bien? Así es el pulmón que pasa. Entonces, si esto es mayor que cero, al parecer, si este salario es mayor que este es mayor que este. Sí, es mayor que esté por debajo. Entonces creo que hay que reducir esto a 4999. Lo entiendes chicos de la gist. Entonces lo que estoy haciendo es 9999 Bien. Entonces esto es mayor que esto y rodar si tiene que ser Bien, estoy tratando de repensar la lógica ahora el salario debe estar por debajo de 59 por intención, y rollo es intención Y el rol es igual al rol pero a la intención. Entonces esto es esto. Así que solo voy a usar llegar aquí, así que no lo hacemos por defecto, ¿verdad? Entonces voy a hacer esto. Voy a quitar esto. Bien, entonces esto es esto, ¿verdad? Vamos a encapsular esto Muy bien. Entonces esto es mayor que esto es mayor a 50 mil. Tiene a continuación. Entonces es mejor que mayores iguales a 50,000 y es pasante Entonces vas a decir, oye, no puedes ganar tanto. Pasante Mira, no puedes ganar tanto. No se puede ganar tanto como pasante. Bien. Entonces, iniciemos nuevo la aplicación y veamos si nuestra lógica funciona como debería. Voy a entrar antes de que esto empiece. Rápidamente, le mostraremos a esta pasante. Vamos a darle 50 a esta persona. Guau, esto es 50,000, esto es 50 así que voy a hacer esto solo 50,000. Mis 50 mil en los puntos. 50,000 en los puntos. Vamos a ver si ambas instrumentación realmente van a entrar en acción. Yo tengo esto, esto se inicia. Vamos a crear esto. Bien, entonces esto es que voy a reducir la edad. En realidad es usar paridad, empiezo a caer. Vamos a darle a esto. Bien, creo que en realidad hemos volado algo. Oh, sí. He volado algo el sueldo es de 50. Bien, déjame ver la flecha. Entonces la flecha es veamos la flecha. No se puede fundir la cuerda de cuerda no se puede fundir para rodar. Es una cuerda para lanzar una cuerda a tu rollo. No publ ya que en realidad obtiene una cadena, esto obtiene una cadena, lo cual está bien Esperamos que sea una cadena. Entonces hagamos el trabajo. Rollo de cuerda, rollo de cuerda. Entonces colocaré esto aquí. Podemos hacer el rollo. Simplemente puedes hacer este nombre de filas. Está bien. Decir punto igual señal caso, derecha la regla de paso. Bien, creo que esto funciona. Esto funciona. Así que en realidad hemos podido colocar esto y bien, esto entonces creo que tenemos que cubrirlo uno más. Bien. Bien, entonces esto funciona. Ojalá, no obtengamos ningún error si lo haces, vamos a depurarlo para ver en qué se está metiendo realmente. Bien, así que mientras esto entra, hemos sido capaces de establecer realmente cuando en realidad establecer esto en 50,000, voy a establecer esto en 34. Entonces queremos ver esa instrumentación realmente pateando. Entonces, vamos a darle a este tipo. Entonces cuando golpeamos esto. terminar con este munch como pasante, Entonces la instrumentación está funcionando. Creo que ya sabe cómo funciona la instrumentación. Así que Gap Que es tan, tan impresionante, chicos. Para que pudieras tener todo en un solo lugar, la validación, la instrumentación para controlar la cosa. Esa es lógica compleja tener las cosas hechas por ti. Todavía consigo que el poder de la señal GAP sea limitar lo que realmente viene como inversiones, elija algunas en particular. Bien. Con esto hecho, nos vemos el próximo uh 110. Pruebas parte 1: Oigan a todos, y genial tenerlos de vuelta. Ahora en realidad has entrado en una sección increíble, que se trata de pruebas, todo de pruebas, todo de pruebas. Entonces este es básicamente uno de los fundamentos de la programación Necesitas asegurarte de que tus pruebas en línea con tu aplicación, ¿verdad? Simplemente puedes escribir la aplicación de la manera en que un desarrollador se salvaguarda a sí mismo es una verdadera prueba. Bien, así que vamos a meternos en ello. Así que vamos a hacer esto un poco interesante, ¿verdad? Entonces vamos a hacerlo un poco interesante. Entonces lo vamos a hacer es que en realidad vas a tener las cosas funcionando más como en una cronológica Vamos a verlo de esa manera de manera cronológica para que podamos ver realmente la fecundidad de las pruebas ¿Cómo llegamos a la prueba de prueba? Empecemos. En las cosas en las que nos vamos a centrar en las pruebas hoy vamos a estar viendo esto. Voy a limpiar esto. No me gusta el valor por defecto. Voy a aclarar el valor por defecto. Entonces solo voy a crear un paquete API acre llamado API porque vamos a estar probando desde el probablemente estaremos haciendo una prueba de integración. Eso es en lo que nos estamos enfocando, y eso es lo que vamos a hacer. Bien, entonces voy a llamar a esta prueba de creación de entidad. Prueba de creación de entidad. Impresionante. Bien, entonces para la gráfica QO, para que puedas probar con éxito, estas son las cosas que realmente puedes traer Probablemente voy a traer un registro SLL para J solo para iniciar sesión Traes una prueba de springbook, que es estándar. Fresco. Ahora para GraphQL, para que puedas usar alguna de la configuración automática de la configuración automática de Graph Q o algunas cosas que se configuren para ti para que puedas probar Graph En particular, es necesario traer en Auto en Auto configurar Auto Configurar grafico ko tester. Sally aviso auto Configurar grafico Cuo tester. Esto es muy importante. Esto se basa en la documentación oficial, ¿verdad? Entonces necesitas traer esto, exploremos esto un poco. ¿Todo bien? Esto es básicamente solo quedarse la configuración automática y algunos otros detalles, ¿de acuerdo? Todo bien. Entonces esto es lo que necesitas traer. Ahora, porque queremos ejecutar nuestra prueba de manera cronológica, voy a hacer uso del método ordenador, correcto, de una manera de ordenar realmente nuestro metal Entonces queremos que nuestros métodos funcionen en un orden particular, y por eso usé la palabra cronológico, ¿verdad Y por eso voy a traer un método de prueba Oer. Pero esto ya está disponible en API de jubiter, jubiter de unidad J, así que voy a traer esto, y esto va a ser Podrías ordenar por clase, pero yo quiero ordenar por método. Podrías tener un par de clases, luego ordenar por ellas, pero yo quiero ordenar por metal. Entonces, si estás ordenando por clase, al parecer, necesitas asegurarte de tener orden una notación en tu clase, pero en este caso, lo estaremos haciendo a través de la clase. Entonces ahora que tenemos esto, quiero realmente crear los esqueletos de lo que va a estar probando para que veas cómo va a fluir En primer lugar, voy a tener una empresa de creación. Hagamos equiparar comping crear prueba de empresa. Ven a mí pruebas. Entonces al parecer hay que tener una prueba, lo cual es muy importante. Entonces me gusta dar disciplinar. A mí me gusta dar disciplina. Esto no es necesario, pero simplemente me encanta hacer esto. Yo sólo digo, genial. Ven a mí. Salir de la prueba de la empresa. Entonces al parecer, quiero darle una orden, ¿verdad? Una orden, voy a darle orden uno. Entonces este va a ser el primer orden. Meer cuando estás creando un aula ejecutando la prueba, no necesitas ser público porque al parecer, no se llama en ninguna parte, así que puedes quitarte esto. Bien, entonces esto es lo primero que quieres hacer. Quiere dejar de fumar Empresa. Después siguiente paso, quiero crear departamento. Entonces esto correría en un orden particular, ¿verdad? Bueno. Entonces esto va a ser 02. O los dos y yo lo he adivinado, como usted lo adivinó, vamos a llamar a esto crear departamentos prueba Actualicemos el nombre también. Prueba departamental. Impresionante. Fresco. Ahora esto es genial. Ahora vamos también gato en los esqueletos. ¿Recuerdas? Ahora esto va a ser tres. Voy a llamar a esto crear prueba de empleado. Dejar la prueba de empleado. Todo bien. Voy a copiar esto. Yo sólo reemplazaré los departamentos, ¿ verdad? Todo bien. Hemos renunciado a esto y buen empleado. Esto va a correr entonces vamos a buscar toda la compañía. Vamos a buscar toda la compañía. Vamos a buscar toda la compañía. Yo hago este cuatro. Impresionante. Voy a llamar a esto buscar toda compañía Obtener todas las pruebas de la compañía. Esto es bastante genial. Entonces actualicemos esta llamada esta empresa de búsqueda. Prueba de Fetch Company. Fresco. Por último, hagamos una más. Hagamos una más. Voy a llamar a este empleado de fetch con búsqueda de empresa Recuerda que tenemos un método así. De hecho voy a usar ese empleado con empresa nosotros prueba de búsqueda de empresa. Prueba de búsqueda, actualicemos esto va a ser el número cinco, esto se ejecutará en este orden en particular. Espectáculo de una manera, toda la idea es esta, ¿verdad? Mostramos de una manera que creamos una empresa y esa empresa se usa para crear un departamento y ese departamento se usa para crear un empleado. Entonces podemos infectar a empresa y empleado con compañía. Ahí es donde estamos seguros de que todo dentro de nuestro sistema está funcionando como debería. Tenemos esto. Esto es lo básico que necesitamos, y esto es bastante genial. Tenemos esto. Vamos a ir uno más. Vamos a simplemente probablemente solo. Recuerda que hablamos bastante de paginación. Vamos a tener algo que se llama query. Prueba. Vamos a trabajar con esto también. Llame a la prueba de consulta. Al parecer va a tener la misma anotación. Trae esto. No necesitamos pedir nada porque solo vamos a tener una sola prueba, ¿verdad? No necesitamos esto para que sea público quitar esto. Impresionante. Con esto hecho, entonces vamos a crear una prueba aquí. Vamos a llamarlo vacío. Va a ser un vacío. Lo llamaré empleado con prueba de búsqueda de empresa. Ves la diferencia en poco. Sé que el nombre se parece, vamos a ver la diferencia. Bien. Muy bien, esto es bastante genial. Vamos a anotarlo. Anotemos esto también Voy a llamarlo nombre para mostrar. Un nombre para mostrar. Vamos a darle a buscar empleado y compañía de Fetch empleado y compañía de Fetch Todo bien. Entonces, al parecer, no queremos perdernos lo importante por aquí, ¿verdad? Que es la prueba de artes. Bien. Así que esto va a ser muy emocionante, chicos. Así que en realidad hemos podido traer todo el esqueleto de lo que necesitamos. En la siguiente sección, vamos a ver el siguiente detalle importante. Los veré chicos en el siguiente video. 111. Pruebas parte 2: Oigan, chicos, genial tenerlos de vuelta. Justo en la última sección, pudimos detener de hecho todas las pruebas que estarán corriendo en esta sección y para hacer el levantamiento pesado o vamos a traer en la guía siendo el levantamiento pesado. igual manera tenemos plantillas de descanso de prueba Cuando en realidad se prueban, también hay algo para la señal gráfica que podamos usar, que está en la documentación oficial. Hay varias variantes pero te voy a dar, te voy a mostrar la que más vas a estar usando , que es gráfica. Prueba QL, grafica QL tester impresionante. Este es el probador QL gráfico que básicamente estás usando. Ahora, hay una nota clave que debes observar. Hay una nota clave La nota clave es que hay que tener en cuenta que esto llamaría un script QL gráfico Porque pensar en esta gráfica QL se trata los scripts que en realidad se convirtieron con el gen code y los gustos Cuando intentas probar commit esto será llamar a un script y revisar tus scripts y ejecutarlo contra la aplicación Graph QL Creo que un ejemplo a medida que avanzas nos mostrará una mejor manera de hacerlo realmente. Creo que probablemente solo quiero llamar a este. Déjame darle el nombre HTTP, graphy o tester. Probablemente solo déjelo de esta manera. Me encanta de esta manera y ves exactamente por qué hice esto en la última sección cuando estás haciendo, estamos tratando con seguridad. Pero esto no cambia nada, ¿verdad? Entonces, ¿cómo se vería el guión? Lo que debemos considerar es que tenemos que entrar en un guión. En cripta comfy, ¿cuál es el script que ejecutas? Eso será una mutación. Yo mutación llamábamos mutación, esto era un guión para ejecutar, ¿verdad? De hecho, golpeamos esto, ¿verdad? Crear empresa. Y cuando lo llamamos desde afuera, esto es exactamente con lo que interactuamos Llamamos a este tipo, la mutación Create Company, interactuó con la aplicación Graph cal Pude producir este resultado. Entonces, para usar el probador de llamadas de Graph, tenga en cuenta, esto es con lo que interactuará. Cómo lo estás llamando realmente desde afuera. De la misma manera que en realidad usas Mok NVC. La forma en que usas Mok NVC, ellos llamarán a la API HB como si la estuvieras llamando desde un cliente la misma manera esto mira a los clientes, van a estar llamándolo desde afuera, la forma de verse como diez, llegando a la aplicación y ejecutándola, ¿verdad? Entonces, con esto en mente y teniendo esto en mente, sigamos adelante y en realidad ejecutemos esto. El guión para ser cortina tendrá este contenido para crear empresa. Bien, ¿cómo se vería esto? Bien. Entonces dentro de nuestra prueba, voy a seguir adelante y crear la carpeta. Voy a crear la carpeta en nuestros recursos. Al parecer, necesitamos tener una carpeta de recursos, ¿verdad? Y dentro de nuestro pliegue de recursos, voy a llamar a estos recursos, recursos. Fresco. Tan listo tener esto disponible para Rs carpeta de recursos y dentro de carpeta de recursos, voy a llamar al directorio graph QL test, graph Prueba gráfica QL, carpeta de prueba gráfica Q. Todo bien. Sigamos adelante y después tengamos la compañía Creates. Ahora. Esta es otra diferencia, chicos. Voy a mencionar esto de nuevo muy, muy crítico. Cuando estamos creando la aplicación, estamos usando QL de gráfico de puntos En la documentación oficial, lo que observé, cuando estás escribiendo tu prueba, tiene que ser, vamos a darte el nombre aleatorio crea empresa. Prueba de empresa Quid, ¿verdad? Entonces será gráfica QL. Tenga en cuenta esto. No tienes una S. No hay S. El problema es que no lo va a encontrar, ¿verdad? Tiene que ser gráfico de puntos QL, ¿verdad? Lo he intentado un par de veces. Descubrí que intenté agregar la S, pero fue darme algún error raro, ¿verdad? Entonces volví a buscar en la documentación oficial. Vi que observé que no requiere una S. Entonces así es como se verá. Ahora ya podemos entrar. No necesitamos hacer nada, no mucho. Sólo voy a copiar esto tal como está. Yo tal como es. Yo no cambio nada. Sólo voy a pegarlo aquí. Así que esto es exactamente lo que estamos llamando, ¿verdad? Entonces, si controlo haga clic en esto, ¿lo ve? Fue capaz de encontrar esto. ¿Ves la belleza? Volveré a esto otra vez. Si controlas clic o comando, clic, si no es un MAC, ves que fue capaz de encontrarlo. Entonces significa que es capaz de saber que esto es exactamente lo que vas a estar llamando. ¿Todo bien? Entonces espero que esto quede claro, chicos. Voy a volver a pasar por ello para hacernos entender. Lo número uno que debes considerar es que necesitas traer en esta gráfica Kio tester, que sería capaz de llamar al guión, ¿verdad? Los guiones, es un cliente, así que en realidad está conectado más como desde fuera, ¿verdad? Lo segundo que hay que observar es que cuando estás ejecutando una prueba GAP QL, termina con puntos GA QL, no GA QL El guión termina con una gráfica QL, no G QS. Eso es lo segundo a tener en cuenta. Lo tercero a considerar es la misma manera que lo llamas desde afuera. De la misma manera que lo llamas desde afuera. Sólo lo estoy colocando aquí, así es como voy a hacer mi prueba. Cuando haces clic en Control o comando, ves, fue capaz de coincidir con esto. Se trata de chicos bastante chulos. Esto es realmente genial. De hecho, hemos podido hacer esto. Hagamos lo mismo con el departamento creativo. Hagamos lo mismo para crear departamento. Voy a seguir adelante y crear otro, llamarlo, sale Department Tests punto GraphQL Bien. Entonces tengo el departamento de la misma manera, vas a departamentos, copia al mismo tipo, y yo lo traeré y lo golpearé Bien, entonces vamos a hacer clic de Comando. Impresionante. Ves esto en realidad llamado Esto realmente funciona muy bien. Siguiente personal, voy a demandar crea pruebas de empleados. Voy a llamarlo crea Empleado prueba punto GQL. Recuerda, no hay GA QL. Entraré y luego recogeré esto, empleado, escogeré al gran empleado y golpeé a un equipo. Ese es el clic de comando. Ves que esto realmente coincide con precisión. Entonces lo siguiente que vamos a estar probando, que será fetch Iba a ser empleado con empresa Ven pruebas grafico QL Todo bien. Si notas la gráfica emperador QL, ya tenemos eso ya Sí, gráfico de empleados Q, búsqueda de empresa. Creo que me falta una palabra clave. Búsqueda de empresa. Quiero ser consistente. Todo bien. Esto básicamente contiene este detalle. Vamos a explorar. Cuando acudas a empleado empleado, vayamos a consultar la consulta básica. Pasemos a la consulta básica. Tenemos esto en alguna parte, así que déjame entrar, sacar esto y ves debajo de lo común, común que probamos, lo que realmente demostró que tenemos al empleado con compañía, empleado con compañía. Así que en realidad podríamos comparar eso. Entonces para un repaso, bajo el controlador común, recuerda que creamos este empleado We company search Este es el contra el que estamos probando. Todo bien. De hecho hemos podido tener eso, y si lo miras, esta es la firma que tenemos . Mira esta firma. Tenemos estos fragmentos entrando, por favor esta es la preferencia de tipo. Tenemos que bajar, nosotros ja esto, y eso es exactamente contra lo que realmente estamos probando. Si miras esto, si hiciste clic de comando, puedes ver que fue capaz de localizarlo. Bien con esto dicho, los veo chicos en el siguiente video. 112. Pruebas parte 3: Oigan, chicos, genial tenerlos de vuelta. Bien, así que continuemos desde donde empezamos. Hemos sido capaces de crear cuatro, ¿verdad? ¿Recuerdas cuántos tenemos? Tenemos cinco aquí, ¿verdad? Ella es uno, dos, tres, cuatro, cinco, y la última, ella es la consulta. Así que vamos a crear los dos últimos. Entonces el siguiente que sigo es buscar toda la compañía, ¿verdad? Así que vamos a comparar. Entonces, ¿ya hizo esto? Bien, creo que esto incluso vino antes de esto. En fin, funciona. Entonces solo en realidad tenemos las mismas cosas que traemos O, la ortografía está mal Trae toda la compañía. Gráfica de pruebas QL. Recuerda, no hay S. Si la miras, va a ser una consulta. Es de la misma manera esta es una consulta, va a ser una consulta. Mira, lo estoy igualando exactamente. Vamos a hacer clic en el comando. Se puede ver que coincide correctamente, lo cual es bastante genial. Es bastante genial, chicos. Entonces finalmente, vamos a tener el último que viene. Que va a ser el gráfico de pruebas de paginación de paginación QL llenado masivo es incorrecto. Hagamos una gráfica factorial, Q, esto básicamente en realidad va a tener esto. Todo bien. Esto tenemos esto. Yo sólo voy a estar probando contra estos elementos. Voy a probar contra la página, tamaño, la página y el elemento. Básicamente, esto es lo que se esperará. Hago un clic de comando, coincide con esto. Esto es si lo miras críticamente, yo solo lo importa. Por eso parece como si estuviera zipping, pero no es diferente Revisamos la paginación. Revisa la paginación, tenemos esto, esto básicamente coincidirá. Esto lo estamos trayendo. No voy a probar de nuevo esto. Todo bien. Se trata de chicos bastante chulos. Hemos sido capaces de lograr realmente crear todo, todos los scripts a usar. Ahora, veamos cómo encaja. Presiona primero, vamos y reit.com. Voy a entrar. Todo bien. Ahora para la empresa, ¿cómo procedemos? En realidad crear esto es en realidad chicos bastante simples. Es bastante simple. Vamos a hacer, entremos, entremos en ello. Ahora, vamos a hacer esto nuestro comprobador HT Graffy nombre del documento, nombre documentos contra el que estás probando Ahora cual es el nombre del documento, recuerda, haz nombre principal. Yo también deletreé. Eso es factor. Seguro que algunos de ustedes ya se dieron cuenta. Gracias, chicos, ya se dieron cuenta, prueba de omping de espec. Bien. Es genial, ¿verdad? Entonces voy a hacer una modificación más para hacerla más pongamos alguna discrepancia, ¿verdad Vamos a etiquetar esta prueba. Bien, muestra que en realidad estás pegando una prueba. No cambia nada, recuerda solo un nombre. Solo quería lucir más reflexiva de lo que estamos tratando de hacer. Crea la prueba de empleado, B ya se ha creado, vamos a hacerlo esto está bien y esto está bien. Está bien. Hagamos que se vea con más detalle. Escojamos este nombre. Vamos a estar necesitando este nombre. Nosotros documentamos el nombre, mira eso cuidadosamente. El nombre de los documentos y el nombre del documento es trabajo, el nombre del documento es Prueba. Entonces nos estamos refiriendo a estos documentos, ¿verdad? Impresionante. Entonces tenemos este documento, esto crea prueba de empresa, va a estar cuidando esto crea prueba de empresa. Recuerda, esta cosa es muy importante y eso es debe coincidir. Es debe coincidir, ¿verdad? Entonces dicho eso, eso es variable. Ahora bien, ¿cuál es la variable? Si lo miras, la variable básicamente significa la variable básicamente significa, ¿qué estamos pasando? Si nos fijamos en qué estamos pasando? Estás pasando un objeto, un objeto de entrada de empresa , ¿verdad Un objeto de entradas de monedas, que coincidiría con esto. Recuerden que teníamos esta variable, este concepto de variable. Entonces tenemos que crear una variable que coincida exactamente con esta misma firma. Bien, así que ten esto en mente. Entonces esa es la misma variable. Esta variable tendrá exactamente esta misma firma. Eso es lo que traemos, eso es lo que estamos trayendo aquí, ¿ verdad? La variable. Y si tuvieras que mirar esta firma correctamente, realidad esto es un mapa, ¿verdad? Entonces vamos a estar usando un mapa para traer esto realmente, ¿ verdad? Así que bastante genial. Así que acabemos con eso. Entonces volveremos y ¿cómo se llama un nombre de variable? Vamos a verlo. Un nombre vaable se llama ves este nombre de variable Estoy pensando exactamente lo mismo. Nueva empresa. Por favor voy a prestar bastante atención, chicos. Esta nueva empresa. Entonces esta será nueva compañía. Sin el signo de dólar porque eso es lo que usé, entonces estaré pasando la variable, y después de eso, entonces ejecutaría. Cuando ejecutaré, y después de ejecutar, especificaré las partes, las partes principales. Ahora bien, estas partes corresponden, solo te voy a mostrar en un poco crea compañía. Por eso tengo que distinguir. Por lo que estas partes corresponden a tu API. Esto crea compañía, ¿verdad? La empresa crea. Por lo que corresponde. Se ha estado buscando esta brecha que endpoints ha creado compañía, y eso es lo que se corre contra Así que en realidad se ejecuta en contra de esto. Entonces voy a repasarlo otra vez. La prueba del nombre del documento debe coincidir con lo que tiene en este nombre de documento. Documento como prueba de empresa rets debe coincidir con esto. Este nombre de variable, este nombre, ¿verdad? Este nombre debe coincidir con lo que tienes aquí como nombre de variable. Y como saben, esta empresa imputa, que es una variable que siempre pasa por aquí, ¿verdad Este es un mapa, y eso debe coincidir con lo que realmente estás pasando a esta variable. Por eso se ve aquí la nueva coma. Y qué partes Wh GAF Que caminos estamos esperando Recuerda GafKe no tiene concepto de puntos finales, sino Entonces, ¿qué parte coincide? Vamos a nuestra API. Coincide con esto donde está el commit. Su compañía, coincide con esto, ¿verdad? Así que esto es genial, chicos. Así que ten esto en mente porque esto es muy, muy importante, ¿verdad? Este concepto que acabo de explicar en este video es muy importante para las pruebas y así como se puede evitar cualquier error futuro. Bien, entonces, ¿qué esperamos recibir de vuelta? Recuerden, nosotros retrocedemos una entidad. ¿Todo iba a volver con una respuesta de creación? Es una clase de respuesta a preguntas porque la miramos críticamente, volvamos a nuestra empresa A. ¿Qué estamos regresando? Respuesta de creación. Entonces eso es exactamente lo que estamos esperando. Entonces, si miras esto, tenías la clase de respuesta de creación. Ahora, con esto, puedo extraer esto en una variable. Verás, esto fue capaz de darme una entidad. Ahora bien, desde esta entidad, puedo decir, vamos a registrar. Vamos a iniciar sesión. Por eso, vamos a registrar una entidad, ¿no? Pero en lugar de log, voy a decir NtDotG. T dot llegar a darnos una respuesta creian. ¿Puedes ver? Tdt get nos da esto y podemos tener eso Entonces puedo entonces afirmar, ¿verdad? Puedo afirmar. Podría decir aserción porque así es básicamente como escribes tu prueba Aserciones puntean activos. Oh, esto es bastante impresionante. Esto ya lo ha hecho, ¿verdad? Establecer activo pero prefiero usar. Entonces este es JBT P. Podrías escribir esto usando HMQust. Básicamente usas Mqrest para decir, Oh, ¿qué hice ahí? D País Z. así que en realidad podríamos hacer aseveraciones, punto activos activos que, derecho, esa entidad no es nula Así que estos en realidad podría salir. Entonces este conjunto que esta es una cresta de mano. T básicamente debería funcionar. Sí, muy seguro. Establezca eso, entonces solo colocaré eso es una locura, no. Bien, entonces esto va a ser aseveraciones. Y estas aseveraciones tienen que venir de la hamcrust. Ves que esto viene de Júpiter, pero me gusta usar corteza de jamón, ¿verdad Entonces voy a encomiar esto. Vamos a sacar esto. ¿Qué es la hamcrust? Vamos a sacar esto. Entonces los traigo uno por uno, para que en realidad me pudiera dar la corteza de jamón. A mí me interesa más la corteza de jamón. ¿A ver qué trae? Sí, llama como J. Así que la corteza de jamón como J. Eso es lo que estoy buscando. Bien, entonces MetaROH esto Júpiter. Entonces vamos a traer esto. Vamos a traer esto, exhibir. Sí, entonces la prueba, sí. Todo bien. Entonces todo se ha salido, y esto es bastante genial. Todo bien. Así que vuelve en el siguiente video para escribir la variable. Los veré chicos en el siguiente video. 113. Pruebas parte 4: Oigan, chicos, es bueno tenerlos de vuelta. Todo bien. En esta sección, básicamente menos completo lo que ya iniciamos . Esa es una parte variable. Ya te he explicado el concepto de por qué esto necesita ser crear comunidad, mira el último video si no entiendes por qué. Entonces esta parte, ya te expliqué por qué necesitas usar nueva comunidad es una variable nombre de coincidencia exactamente. Y el cuidado GAF te da palmaditas llamando. Quieres llamarlo endpoints Para G care lo llamas caminos, esta parte debe coincidir exactamente para que sepa qué punto final o qué parte va a golpear. Y la respuesta es exactamente lo que esperas en esta parte, ¿verdad? Y esta es la parte que la parte se crea viniendo y la respuesta es esta, y eso es lo que coincide exactamente. Y una vez más, vamos a repasarlo. Ya puedes ver vamos a repasarlo. Se puede ver que el nombre de la variable es nueva empresa. Por eso tengo esto y el nombre del documento es quad CompiTest eso es lo que en realidad Ya ves, CuoMpttest nueva empresa. Todo bien. Completemos esto rápidamente. Yo más o menos quiero hacer algunas aseveraciones extra. Creo que me pongo de lado para cortar la variable. Entraré y diré sesiones para decir aseveraciones. Sesiones desde el core dots assets, assets que la entidad. Sí. La entidad se pone, ¿verdad? EntiTg punto obtener mensaje. Estoy seguro de que el mensaje, si realmente funciona como esperamos, se supone que el mensaje debe ser creado con éxito. Comparemos eso. Vamos a estar muy seguros. Si entramos, ¿cuál es el mensaje en el que estás escrito? Nombre de la empresa con este creador exitoso. Entonces estamos seguros de que esto contendrá creado con éxito, ¿verdad? Entonces esto es bastante genial. Todo bien. Y también, también podemos afirmar que el punto consigue éxito, derecho de adivinar el éxito El punto es cierto, es cierto. Bien, entonces esta es una muy buena prueba. Así que configuré acompañar o crear con éxito. Bien, así que sigamos adelante y probamos la variable. La variable será un mapa. Recuerda, podrían ser varios objetos. Entonces podría ser un mapa de string, slash o debería decir contra objetos Bien. Lo llamaré variable, variables, voy a usar. Ahora, prácticamente podría en lugar de usarlo, solo podría usar un mapa de Gracias , Java por cortar esto. Sólo un mapa de solo distribuir esto. Ahora ¿qué esperamos? Esperando un nombre. Va a ser el nombre de una empresa. Voy a colocar esto aquí. Vas a ver como vamos a traer esto pronto. Nombre de la empresa, ¿verdad? Necesitamos un número RC, que va a ser un número RC. Necesitamos una oficina central. Va a ser la oficina central. Necesitamos el país país va a ser el país y necesitamos el tipo de negocio. Tipo de negocio. Ahora vamos a tomar esto al azar. Va a ser valores de punto tipo negocio. Recuerda que esto nos dará una matriz, ¿verdad? Luego dentro de esta matriz, queremos realmente elegir cualquier valor aleatorio. Aquí vamos a usar algo bastante genial. Entonces con esto en mente, y pongo aquí como mi variable, vamos a confirmar que esto funciona con precisión. F revisa nuestra variable imputadora, ya ves, tenemos nombre, número C, oficina central, país y tipo de negocio, y esto coincide exactamente, uno, dos, tres, cuatro, cinco Tenemos uno, dos, tres, cuatro, cinco. Impresionante. Ahora que en realidad hemos podido hacer esto. Ahora, tal vez se esté preguntando por qué los uso. Estoy tratando de usar un nombre de variable aquí. Recuerda, queremos que todo funcione en orden, y si quieres que todo funcione en orden, esto es bastante genial. Tenemos que asegurarnos de que tenemos que asegurarnos de que somos capaces de guardar el contenido de la empresa en este tiempo de ejecución para que esté disponible para los departamentos y lo que está disponible, el disponible para crear empleado para que pueda ejecutar todo correctamente. Seguro que lo entiendes un poco. Según ejemplo en realidad va a hacer esta plaza. Esto debería ser variable porque es solo una variable. ¿Bien? Por eso me estaba quejando Tan variable, bien. Así que vamos a entrar. Entonces vamos a hacer. Recuerda que tenemos un concepto del farsante, que ya creaste, correcto, en esta aplicación Ya lo externalizamos, y lo colocaremos ahora config, así que está disponible, ¿verdad? El farsante ¿Qué teníamos? Es Pujet config, Faker, ¿verdad? Tenemos esto. Entonces cableando eso aquí, farsante, vamos a estar usando esto mucho Ahora bien, para establecer esta variable para que tengamos algo que se ejecute antes de cada una de las clases que imaginamos en esta es antes de clase. Se llama antes que todo en Júpiter. decir, antes de que se ejecuten cada una de estas pruebas, quiero que ejecutes esto. Esto es genial porque luego puedes usar esto para guardar todas estas variables y usarlas en todas partes. Vamos a saltar rápidamente y hacer eso. Todo bien. Ahora para esta parte, voy a estar necesitando el nombre de la compañía. Vamos a traer su va a ser una estática. Por favor, asegúrese de estática porque estática asegurará que se mantenga igual. Estática. Bien. Entonces también necesito el número C. Necesito el número de patrón, el número HC, necesito la oficina central, necesito el país. Así que vamos a ver las partes. El número de patrón, ¿verdad? Voy a tener el número C porque C, esto no coincide. Vamos a necesitar la oficina central. Vamos a necesitar Country. Bien, así que esto es genial, chicos. Así que en realidad hemos podido hacer que esto funcione, y ahora lo tenemos funcionando. Bien. Todo bien. Entonces ahora que tenemos esto, entonces podemos entrar. ¿Cómo se traduce esto aquí? Entonces se puede decir, ahora, tenga en cuenta. Vamos a usar este farsante más tarde, ¿verdad? Pero debido a que esto es una estática, estamos usando esto una notación, y esto es estático. Así es como se puede definir. No se puede hacer que sea un no estático. Entonces significa que voy a estar definiendo mi farsante directamente aquí, ¿verdad Lo estaré definiendo directamente aquí. Voy a usar el otro muy pronto. Entonces voy a decir que farsa una compañía en Name, ¿de acuerdo? Esto es genial. Entonces el número C dice que el número RC es igual, voy a decir RC, ¿verdad? Además de faker el número, voy a decir farsante, farsante Ese número, voy al número. Entonces diré un número aleatorio. Sólo dame un número aleatorio. Número aleatorio entre cuatro, entre cuatro. Eso debería ser cuatro y debe ser estricto. Recuerda que hablamos de esto cuando estamos haciendo la tabla de poblar De hecho podrías ver ese video. Cuando llegues al número, entonces dirás que debe ser estricto, debería ser cuatro. No queremos de cero a 41 a cuatro exactamente. Entonces para la oficina central, la oficina central, esto es bastante simple. Decir dirección de los farsantes, dirección dirección completa es una dirección completa que necesitamos, dirección completa, entonces país aparentemente farsante o país o nombre Impresionante. Entonces el número de departamento que vas a usar más tarde, decimos este valor de cadena de hacer un faker, número de puntos, puntos Número aleatorio, ¿verdad? Entonces hagámoslo de seis dígitos. Entonces dice verdad. ¿Todo bien? Esto es bastante genial. Bien, poder conseguir todo básicamente aguja, esto está bien. Entonces para esto, entonces podemos entrar a decir, farsante ver ahora estamos usando el farsante inyectamos puntos faker , al azar Puntos siguiente Int. Oh, esto es bastante genial. Eso está hecho para que funcione para mí. Impresionante, increíble. Impresionante. Gracias. Bien, entonces veamos qué hicimos aquí. ¿Recuerdas cuántos tenemos aquí? Tenemos tres, ¿verdad? Empezamos en un índice cero, así que está en el cero, uno, dos. Entonces si vuelves aquí, estoy diciendo faca dot random next Int y luego lo estoy colocando en el medio, ¿verdad Entonces esto me daría el lente es tres. La longitud es de tres, y si nos fijamos en la definición de siguiente int, mira la definición de ins va en, si nos fijamos en esto, más o menos, esto es más o menos estamos diciendo, Es valor entre cero inclusivo y valor especificado exclusivo. Seguro que nos darás cero, uno o dos, cero o uno o dos. Esto es más o menos lo que necesitamos. Volvamos en este video para probar esto. Los veo chicos en este video. 114. Pruebas Parte 5: Oigan, chicos, genial tenerlos de vuelta. Bien, así que en realidad hemos podido parar por compañía Entonces veamos cómo funciona. Veamos cómo funciona. Entonces voy a seguir adelante y traer mi estibador. Voy a traer a Docker. Y mientras traigo a Docker, voy a traer esto, ¿verdad Voy a ejecutar esto porque esto es básicamente lo que vamos a estar corriendo, ¿verdad? Así que vamos a estar seguros de que nuestro Docker se acerca o está arriba antes de que luego mencionen esto. Bien, esto se acerca. Impresionante. Entonces esto está hecho. Entonces vamos a estar ejecutando esto asegurarnos de que nuestra base de datos esté funcionando, ¿verdad? Así podemos correr contra la base de datos, Wy cool. Entonces tenemos eso. Ahora lo siguiente que vas a hacer. Ahora la siguiente, la siguiente gran pregunta es, ya sabes, porque esto es casi como un ambiente diferente en él, necesitamos que podamos usar lo que tenemos aquí, lo cual está bastante bien. Pero ahora quiero usar otro perfil para mostrarles a algunos de ustedes que también podemos usar perfil en nuestra carpeta de recursos en nuestra prueba. Voy a entrar aquí. Voy a llamar a esta aplicación phen test punto Yamo. Estamos usando Yamo solo me quedo con Yamo. Tenemos esto. Básicamente, esto es básicamente solo traer los datos, traer nuestra conexión de base de datos, conexión a base de datos. Puedes ver que aquí no tenemos ninguna conexión típica porque estamos usando Docker componer, justo aquí, solo voy a dejarlo caer ¿Correcto? Esta es la conexión que vamos a estar usando chicos. Seguro que recuerdas Servicer componer, componer, secretos de TA, mi usuario, luego GraphQL Y de la misma manera, si nos fijamos en esto, tenemos usuario secreto, mi usuario, luego grafica curso QL Esto básicamente conectará. Esto es genial, chicos. Sí. Bien, así que esto es genial, chicos. Y si tuvieras que verificar si tuvieras que verificar las dependencias, ya ves que tenemos esta redacción Docker Esto básicamente se salta en las pruebas, ¿verdad? En realidad se salta en la prueba. Entonces no voy a molestarme solo por esto porque recuerden, final voy a estar llevándole esto a Cubertis y esto en realidad no va a venir a jugar Así que vamos a continuar una prueba de esta manera. Todo bien. Entonces esto es bastante genial. Tenemos cosas ya paradas. Yo está bien. Estamos probando contra este tipo. Quiero ver cómo funciona. Ahora, voy a entrar voy a entrar, entonces vamos a correr a este tipo. Corro solo crea esto para mí. Bien. Así que mientras está construyendo, ¿verdad? Probablemente me caí porque tal vez no localice esto, pero solo quiero darle el directo Vamos a darle, creo que quiero correr todo. Bien, así que esperaba que fallara. Yo quiero correr. No quiero ejecutar esto de manera aislada. Quiero ejecutar la entidad treentity toda la entidad de creación. Ahora para esta entidad de creación, sí, para esta gran entidad, quiero realmente colocar una configuración. Sí, para esta gran entidad, vamos a darle un perfil de resorte, prueba de perfil de resorte. Bien, estoy seguro de que sabes por qué estoy haciendo esta prueba de perfil de dioses de primavera, ¿verdad? ¿Y por qué estoy haciendo esto? Si miras esto, si miras la aplicación o Yama, ya tenemos este concepto de esto. Espero que esto realmente llegue. Quería usar esta guía. Entonces, volvamos a ejecutar esto y veamos cómo se desarrolla. Entonces esto está entrando, y como puedes ver, mira esto cuidadosamente, lo ves recogido perfil que es prueba y esto es exactamente lo que estoy esperando. Impresionante. Como puede ver, esto funciona con precisión. De hecho, guardo con precisión porque check in la base de datos. Desde luego no sé qué escoge porque todo es un valor aleatorio, pero te puedo asegurar que esto funciona porque en realidad pagamos algunas sesiones aquí y puedes ver que aquí hay una barra verde, lo que significa que esto funciona con precisión. Estoy seguro de que ustedes entienden lo que hice. Ejecuto toda la prueba desde aquí. Entonces entré a cambiar la configuración y mostrar la configuración para esto está apuntando a probar para que realmente pudiera elegir esta configuración en particular. Y como resultado, esto realmente se ejecuta con éxito. Y porque no tenemos ninguna prueba entre todos estos tipos, es por eso que en realidad todo pasó. Pero lo correcto es realmente colocar un fracaso. Podríamos escribir una falla. Coloca una caída aquí. Coloquemos una falla aquí, ¿verdad? Entonces esto asegura que hasta que escribamos la prueba, esto debería fallar. Entonces voy a colocar esto, esto fallar, esto va a fallar. Ahora bien, esto es necesario con el abordaje. Voy a dejar esa otra. Bien, así que entremos y escribamos esta prueba. Ahora, ya escribimos la prueba para crear compañía, y el co acabado, ahora tenemos todo seguro para que podamos usar todo lo que está aquí. Entonces cuando crea, estás seguro de que la siguiente ejecución es cre department porque especificamos el orden Si miras esto detenidamente, cuál es mi ventana de ejecución, puedes verlo recoger compañía, empleado de departamento, o compañía ves que está funcionando en el orden exacto que necesitamos. Esa es una de las cosas geniales o los predios de usar el orden Si no, si no agregas el pedido, elegirá a cualquiera al azar, realidad lo estamos sometiendo Ahora que hemos podido hacer esto. Entonces sigamos adelante y después escribamos la prueba para el departamento de Kris El departamento rojo básicamente solo sigue el mismo ejemplo, sirve esto. La prueba HTTP Gufo. Impresionante. Verás, autocompletar un entender lo que estoy buscando C prueba de departamento, el nombre debe coincidir exactamente, ¿recuerdas? Variable de punto. Departamento nuevo. Voy a quitar esto. Voy a definir esto gracias a completar, luego dot ejecuta. Entonces el camino, recuerda que el camino debe coincidir también. ¿Cuál es el camino? El camino que creo es crear departamento. Entonces entidad punto. La entidad es lo que recuerda la entidad para todo para la ecuación es la creación, la respuesta, la clase. Vamos a validar rápidamente esto en realidad es exacto. Al ir aquí verifico crea prueba de departamento. Solo voy a estar seguro de elegir este Impresionante. Fresco. Entonces el nombre de la variable es departamentos nuevos, que es nuevo, ya ves, esto pudo haber sido un error. Utilizamos nuevas deudas, que son nuevos departamentos. Entonces usemos exactamente la misma convención de nomenclatura, nuevas profundidades con así, con signo de dólar Vamos a crear esto. Entonces vayamos a la API. ¿Qué es la API? Ves crea departamentos, crea departamento y eso realmente coincide con lo que tenemos aquí. Todo bien. Eso es prácticamente todo lo que tenemos que hacer. Entonces sigamos adelante y creamos una variable. Para estas, potencialmente tenemos dos variables, y vas a ver al hijo Y. Pero déjame ver la razón por qué en un poco. En primer lugar, vamos a crear la variable. Ahora, vamos a entender. Vamos a tener una idea de lo que realmente estamos creando. Vamos a entrar en nuestra API. Y vamos a comprobar nuestra empresa de creación. Recuerda que esto es contra lo que estás escribiendo. Necesitamos el nombre, número de departamento, número de empresa C, nombre correcto, número de departamento, nombre de la empresa, número C, dirección. Aquí es donde vamos a crear otra variable, luego división. Necesitamos división. Vamos a entrar y hacer eso. En primer lugar, vamos a tener un mapa, un mapa, una cadena, luego objetos, lo cual es realmente genial. Yo lo llamaré variable, mapa de, genial. Voy a decir que vamos a tener que recordar un nombre que va a ser el nombre de la empresa. Miembro. Entonces el siguiente paso es qué número de departamento. Número de departamento, que es lo que trabajas contra el número de departamento. Recuerda, ya he ido adelante en realidad crear el número de departamento aquí. ¿Bien? Impresionante. El siguiente paso, número RC. El número RC ya está disponible para nosotros. Ya creamos. Entonces tenemos división, división. División seguirá el ejemplo que ya hicimos para tipo de negocio. Entonces para ser de la misma manera, división división aquí, luego los valores, entonces en realidad luego colocamos aquí el código falso Entonces, básicamente, no necesitamos un nombre. Entonces esto es básicamente lo que necesitamos, ¿verdad? Entonces tenemos lo aleatorio nos dará la lente máxima, nos dará cero a lo que sea que sea la lente máxima, la longitud máxima es inclusiva Entonces finalmente, tenemos dirección. Bien, entonces esta dirección, voy a llamarla dirección. Ahora bien, ¿de dónde viene esta dirección? Vamos a averiguarlo en el siguiente video. 115. Pruebas Parte 6: Oigan, chicos, genial tenerlos de vuelta. Hemos sido capaces de crear realmente la variable que vamos a necesitar. Para esto, sólo voy a colocarme aquí. Variable Impresionante. Entonces tener un símbolo. Entonces entremos. Crea nuestra dirección. Recuerda que nuestra dirección también es una imputa que es muy necesaria, que también será una cadena de mapas de objetos Voy a colocar esto aquí. Simplemente llame a esta dirección. Entonces solo cubro esto Bien. Bien, así que veamos cómo se define nuestra dirección. Vayamos al departamento. Vamos a revisar la variable. Entonces la dirección tiene ID de entidad, calles, ciudad, estado, luego código postal. Bien, así que hagámoslo rápidamente. Hagámoslo. Entonces vamos a tener así que vamos a tener ID de entidad. Cuál es el ID de entidad, quiero decir, ID de entidad, lo adivinaste número de departamento ¿No tengo las calles? Estas calles las podemos sacar de calle porque vamos a estar usando esto mucho. Entonces ciudad también estar recibiendo de ciudad luego código postal. Código postal del que venimos de entero porque nos va a dar una cadena que está pasando. Vamos a pasar en código postal. Vamos a crear rápidamente este detalle extra. Creo que nos falta una cosa dice. Estados es muy importante. Estados, derecho. Bastante tenemos todo lo que necesitamos aquí. Vamos a entrar aquí y luego crearlo. Vamos a tener por aquí, ya tenemos esto, así que vamos a crear tipo de datos. Voy a tener estados estáticos, genial. Después código postal estático. Código postal. Después estática. No, no necesito espuma. Calles. Entonces creo que esa es la ciudad. Ciudad estática. Solo arreglemos esto un poco. Lugares aquí calles sólo para el mismo modelo. Calles, donde estas calles ciudad estados calles ciudad estados, luego código postal. Se trata de chicos bastante chulos. Ahora tenemos este loteado. Estamos bien para probar. Entonces, finalmente, vamos a instanciarlo por aquí. No tienes calles, va a FACA, las calles ahora, quiero que sea nombre de calle. Nombre de la calle. Impresionante. Entonces tenemos la dirección de ciudad ciudad? Esto está bien. Entonces tenemos estados. Dirección estados, cool. Entonces tenemos el código postal. Dirección de código postal, increíble. Verás, tenemos todo lo que necesitamos. Esto es bastante genial. Vamos a extraer esto en una variable. Comandamos este Control V. Control o comando para aquellos que usan Mark. Tenemos vamos a hacer algunas pruebas. Hagamos algunas pruebas en contra de esto. Primero voy a iniciar sesión. Entonces voy a ejecutar algunas accesiones desde el activo J. Entity no es nulo, lo cual es bastante genial Entonces activos Digamos, esto también es bastante genial. Que este contenido codicia con éxito. Entonces también, engañemos finalmente, hagamos una adhesión. El patrimonio que no, no quiero. Voy a decir que va a tener éxito es verdad. Todo bien. Entonces esto es bastante genial. Esto es bastante genial. Yo sólo voy a seguir adelante y sólo ejecutar las pruebas de sabor. Ellos solo manejan esto. Sospecho que quiere pagar por fallar entre ellos? Todo esto fallan. Este fracaso viene de donde de la adhesión. Como no tienes nada deberías fallar, es bastante genial. Bien, vamos a ejecutar esto y esperar que pase. Todo bien. Eso se está ejecutando, y veamos nuestra prueba en acción. Bien. Esto es edificio, muestran que los perfiles prueban para confirmar la prueba profiilst Esto pasó, pero el departamento de Chris no pasó porque parece haber un problema aquí. Porque las palmaditas que colocamos no coinciden con lo que estamos buscando. Vamos a confirmar. Departamento este es cred departamento aquí, esto es crea departamentos, crea departamento ¿Qué especificé aquí? Veamos esto. Esta prueba de departamento de cred, crea departamentos que está bien. Canta nuevas deudas aquí, nueva profundidad está bien. Entonces, ¿cuál es el problema aquí? Vamos a confirmar. Veamos los estados de error nos dice variable nueva profundidad tiene un valor no válido. Empresa de campo nombra a Ceres null. No nulo. Tiene que ser no nulo. El nombre de la empresa está hablando de este nombre de compañía. Confirmemos esto. Esta empresa nombra el nombre de la empresa como conull vamos antes que nada, confirmar lo que se llama el nombre de la empresa Voy a entrar aquí, revisar mi departamento. Se llama nombre de la compañía, nombre la compañía Este nombre exacto de la compañía porque deben coincidir con precisión. Nombre Creo que veo el error. Nombre de la empresa. Veo la flecha. Veo el error que se supone que hay que llamar. Tenemos departamentos, tenemos nombre para departamentos y tenemos nombre de empresa. Veo el error. Veo el error. Hay dos cosas que nos perdimos . Este va a ser el nombre. Es el nombre del departamento, y se supone que este es el que se supone que tiene otro, que es el nombre de la compañía. Este es el error aquí. Este es el error. Bien. Creo que esto es bastante genial. Ahora bien, ¿qué colocas como nombre? El recurso humano es solo un nombre aleatorio. Sólo voy a usar un pastel Faker. Dejémoslo como nombre de la compañía solo probablemente llámalo nombre del departamento, nombre del departamento. ¿Podemos conseguir algo por departamento en Faker? Vamos a probarlo. A ver si podemos conseguir algo por nombre de departamento. Sólo voy a entrar ahí y llamarlo cosa estática Nombre del Departamento. ¿Podemos conseguir algo por departamento en Faker? Vamos a probarlo. No lo he intentado antes. Probablemente sea capaz de conseguir algo genial. Pero llámalo Faker Empresa Dots, Dots, ¿tenemos algo como departamentos? No. Entonces déjame ver si puedo ver departamentos Departamentos. Comercio. Tenemos comercio, departamentos? Fresco. Entonces Departamento vamos a revisar cadena? Sí, es una cuerda. Esto funciona. Esto fueron chicos volvamos a hacer la prueba. Entonces supongo que esa fue la flecha. En realidad nos equivocamos. No usamos el nombre y también esperamos el nombre de la compañía, esperamos que esto pase y ojalá no haya otro error. Bien, entonces esto está corriendo. Impresionante. Como se puede ver, la compañía Quade pasa, la roja del Departamento pasa De hecho, hemos podido escribirlo con éxito, y los otros tres fallaron como se esperaba porque lo colocamos aún no falló. Bien, con esto, los veo chicos en el siguiente video. 116. Pruebas Parte 7: Oigan, chicos, genial tenerlos de vuelta. Bien, así que vamos a dar esto paso a paso. De hecho, hemos podido seguir su ejemplo, todo lo que hemos estado haciendo hasta ahora. Y esto ha funcionado muy bien, ¿verdad? Así que hemos podido crear un departamento, y ahora nosotros departamento creamos compañía antes, cortamos el departamento ahora. Ahora pasemos a la compañía. Pasemos a empleado. Quise decir, pasemos a empleado. Entonces tu empleado simplemente seguirá el mismo estándar, y esperamos que las cosas realmente vengan ahora, el empleado es realmente, realmente va a ser una fuerza laboral, ¿verdad? Entonces, ¿qué voy a hacer bien? Porque estoy seguro de que alguien dice, ¿por qué no puedes simplemente deslizar esto rápidamente? Algunas personas solo van a hacer eso, traer todo adentro, entonces podemos probar. Comparamos todo lo que hemos hecho, entonces en realidad probamos esto. Pausa este video y amplia esto. Todo bien. Esto es básicamente en. Ahora tengo todo traído. Código postal, necesitas un código postal, luego la identificación del empleado. Vamos a recoger rápidamente la identificación del empleado, y voy a entrar aquí. Al parecer, vamos a crear una identificación de empleado. ID de empleado, necesitamos realmente crear una instancia de nuestro ID de empleado Sólo voy a instanciarlo a continuación. ¿Debería ser ID de empleado? No, no, no, no, no, no quiero esto. Quiero número de identificación FACA. Número de identificación, puntos válidos. Sí. Entonces esto me va a dar una identificación, y va a ser una cadena, creo, ¿verdad? Sí, una cuerda. Entonces tenemos eso, y esto es traído. Entonces tenemos que comparar esto ahora, recuerden, vamos a tener que hacerlo. Al parecer, ya tenemos esto aquí. Tenemos la dirección. Seguro que esperas que yo tenga la dirección, ¿verdad? Y al mismo tiempo, también, tenemos esto. Ahora bien, la pregunta que debo hacer es, ¿por qué no estoy usando MACO aquí? Ahora bien, esto no lo he visto en documentación escrita, ¿verdad? Pero cuando usas map off, no creo que puedas ir más allá de ocho valores. Esto es uno, dos, tres, cuatro, cinco, seis, siete, ocho, nueve, diez, 11, dos. Entonces más que esto, dos, cuatro, dos, cuatro, seis, siete, ocho, nueve, diez, 11, 12. Para que te puedas ir. Entonces en el momento en que vayas más allá de las ocho y lo pruebes fallará. Entonces el mapa de puede tomar sólo un máximo de ocho. A pesar de que he intentado verificar si hay algo que tenga que hablar de eso, ¿verdad? No veo nada más de qué hablar. Creo que se necesita un máximo de 81 que he intentado revisar. No puedo ver nada mientras prácticamente estaba esperando. Entonces solo tenlo en cuenta, se necesitan cinco, y es por eso que ves que en realidad estoy usando un mapa hash. Bien. Así que con este conjunto, hemos podido probar esto de hecho. Esto funciona. Nosotros probamos departamento, así que vamos a ver cómo es esto. Esto coincide con precisión. Tienes todo lo que necesitamos aquí. Comparemos esto. Comparemos esto. Tenemos que estar seguros de que todo en cambio, ¿cómo comparamos esto? Rápidamente voy con mi empleado, el gran empleado, metí esto, entonces decidimos bien esto es muy clave para que podamos evitar cualquier error. Comparemos. Necesitamos un nombre, código de datos apuesta que coincide, partidos de género, partidos de salario, él coincide, partidos telefónicos. Codificaciones telefónicas, nombre de la empresa, identificación del empleado, el número de la fiesta, correo electrónico, rol, dirección. Ahora bien, esto coincide con precisión. Ahora bien, si nos fijamos en el papel, estoy haciendo lo mismo por el papel que he hecho para tipo de negocio y la división, lo cual es bastante genial. El número de departamento de identificación del empleado coincide con lo que creamos anteriormente para la empresa y los departamentos. Entonces si miras las coincidencias del nombre de la compañía, teléfono y usando el número de teléfono, lo cual está bien. La edad prácticamente sería el año. Mira las fechas de nacimiento. Por eso tengo fecha de Bth año Coloco en las fechas de Bth faca fechas de Bt Mate de muerte, fechas locales Al parecer, podrías obtener un bit de datos 20-30, lo cual es bastante genial, ¿ verdad? Para FACA Entonces me sale el bit de datos. Ahora estoy colocando el bit de datos a cadena aquí, y eso es lo que tengo aquí. Entonces por aquí, estoy diciendo que el año ahora menos datos apuestan a darme la edad, ¿verdad? Ahora bien, este valor aleatorio, estoy colocando este valor aleatorio, más bien doble aleatorio, para darme un decimal máximo de dos ya está dentro de aquí, un mínimo de 50,000, un máximo de 80,000 Seguro que sabes que esto va a fallar, ¿ verdad? Esto va a fallar. Y la razón por la que va a fallar es porque cuando creas un nuevo empleado, recuerda, establecemos una regla y la regla es empleado como pasante solo debe ganar 30,000. Voy a colocar. Voy a colocar esto como si miraras esto, esto potencialmente fallará. Si el papel el papel que estamos consiguiendo aquí no es si este rol que estamos consiguiendo es interno, va a caer Probablemente solo escribamos otra lógica solo para asegurarnos de que esto no sea papel. Entonces, ¿cómo podemos especificar? Recuerda, veamos el papel. Pasante es lo primero. Entonces vamos a hacer para que eso no falle. Voy a colocar esto esto va a ser de cero. Recuerda, puedes usar ness Puede tomar una media. Vamos a colocar uno aquí. Voy a colocar max aquí. Esto no va a fallar. Pero para asegurarnos de que no escogemos valor cero. Si miras esto, nosotros miramos la definición, mira la definición, vamos a ir a estas partes. Al parecer, esto es mínimo, el mínimo, entonces el mínimo más uno debería funcionar, yo debería trabajar. Asegurémonos que esto no falle. Ahora bien, vamos a validar esto, esto y esto. Entremos. Así que deja de trabajar, voy a llevar esto a la derecha. Creo que esto fuera. Así que corta las pruebas de los empleados. Sí, esto es exacto. Nuevo empleado. Sí, esto es exacto. Voy a quitar el signo del dólar. Sí. Entonces el PAT se llama Crear empleado. Vamos a estar seguros. El PAT se llama crea empleado, ¿verdad? Esto tiene que ser exacto, ¿verdad? Estoy esperando que alguien diga preguntar por pregunta. ¿Por qué usas DGs constante? Vamos, usas DGS constante. Eso también funciona aquí chicos. Se utiliza dgs constante. Es preferencia solo quiero mostrar que hay variaciones para hacer esto. Ella prácticamente usa DGs constantes aquí y esto no fallará Básicamente, podrías hacer una mutación constante de DGs crear algo y esto básicamente funcionará Ella no obtuvo ningún error con esto. Solo estoy siendo flexible solo para tener todo adentro. No es necesario que solo use string solo use la constante DGS. Voy a seguir adelante para hacer lo mismo para asegurar que esto realmente funcione. Sigamos adelante y ejecutemos todas nuestras pruebas. Derecho para empleado si todo se hace correctamente, nada debe fallar. Vamos a ejecutar esto. Esto se acerca. Sí. Confirma nuestro perfil. Sí, nuestro perfil es prueba. Hemos confirmado que esto es prueba de perfil, esto se está ejecutando. Esto es increíble, increíble. Como puedes ver, la compañía es buena, departamento es bueno, el empleado es bueno. Como te veré en el siguiente video. 117. Pruebas Parte 8: Oigan, chicos, genial tenerlos de vuelta. ¿Todo bien? Así que pudimos completar realmente para la cuestión de las pruebas de los empleados, ¿verdad? Tuve que explicar a través porque aparte de escribir uno por uno, tuve que explicar a través de todo lo que he hecho en el empleado. Entonces eres capaz de anotar. ¿Recuerdas lo que dije sobre esto? No podemos usar Map off porque solo toma máximo de ocho valores. Tuve que mencionar esto. Esto es para la dirección, y realidad somos capaces de cablear las cosas. Mencioné que también podrías DGs constante aquí, ¿verdad? Ahora, alguien podría decir, no me gusta usar cadena. Sí, probablemente cortaste la clase de YouTube. O una interfaz y pone en todas estas variables, poner en todas estas variables. Recuerdo que todas estas variables están disponibles en constantes de excavaciones Es necesario que realmente lo sepas. Si vas aquí, puedo cambiar esto a constantes DGS, mutación de puntos, cretmee dejar de empleado imputa temployee imputa, puntos empleado temployee No esto, deberíamos tener las imputas. Veamos ahora. Creo que vamos a estar seguros. Te da creo que hay una manera de escoger el argumento? Déjame probar el argumento, ¿verdad? Este es empleado de fuente. Esto es una cadena. Entonces hay una manera de escoger todos los detalles, ¿verdad? Estoy seguro que lo estoy recogiendo seguro que lo estoy recogiendo correctamente. Esto es crear empresa, crear partartner, no es lo que necesito No es lo que necesito. Empleado. Entonces sé que puedes recoger así que probablemente podríamos explorar DGS constante Quiero mostrarte que está disponible. Comprobemos la constante de DGS. Así cava constante. Entonces, si vas, eh, esto es lo que estaba buscando. Puedes ver que tienes todos estos nombres, todo está escrito para ti. Se podría entrar en la constante DGS para evitar errores tipográficos Entonces esto es chicos bastante geniales. También lo puedes conseguir. Entonces vayamos a Busco crear empleado. Puedes ver que tenemos un empleado DTO y podríamos usar todo esto, todo este nombre de empresa y esto básicamente funciona Es lo que estamos buscando. El concepto de empleados de empleados son los mismos. Su fuente DTO también está disponible. Yo sólo quería mostrar esto. Para la mutación también Este soy yo explorando constantes DGs Esto es parte, que está bien Sólo vamos a pasar. Déjame ir a través de ti al empleado imputa empleado imputa Su llamada DGS constante empleado impute es básicamente lo que buscaba Imput empleado. De hecho , podría usar esto. Esto también básicamente funciona, empleado Impute. Bajemos también, actualizaciones de empleados, imputa búsqueda de empleados Sólo digo que también podrías usar excavaciones constantes y esto funciona con precisión, y este es el camino que voy a usar Peri Aquí dentro, pero solo decimos que cava esto, entonces me voy a quitar a este tipo. Veamos ahora, cono. Esto funciona. Esto funciona. En la siguiente parte, solo vas a explorar usando constante de DGS t para que puedas ver cómo funciona Quiero salvaros chicos es solo un semi tipo blanco. Entonces para el último, voy a escribir porque para que no me vuelva demasiado flojo, solo voy a pausar este video, traigo esto. Impresionante. Yo traje esto. Podrías simplemente confirmar físicamente lo que hice. Aquí hice algo bastante único. Vamos a confirmarlo. Entonces antes que nada, estoy usando la prueba fetch all company. Tu nombre coincide. Recuerda que no toma ningún param. Entonces por eso no estás viendo ninguna variable, ¿verdad? O cualquier otra cosa o cualquier tipo de gráfico básico. Entonces esto es esto, entonces estoy usando esta compañía fetch Al parecer, voy a estar recibiendo la clase de compañía, ¿ verdad? Clase de empresa. Ahora, mira lo que hice. Yo aseveré que no es nulo, ¿verdad? Afirmé que el tamaño es más getter que tres. Recuerda que he creado más de tres, así que estoy afirmando su geter que Por eso me encanta Asset J porque te da más flexibilidad. Entonces estoy diciendo afirma que esta compañía o la compañía por la que estoy transmitiendo, me sale el nombre de la compañía para enumerar y obteniendo como lista Estoy comprobando que al menos contiene el nombre de la empresa que acabamos de crear. Esto también es una buena aseveración. No pienses que la prueba solo contiene algunos valores rígidos. Podrías escribir código completo en prueba. Quiero decir, código completo, muy dinámico y por eso me podrías ver usando cadenas aquí. Con esto para, vamos a ejecutar esto, vamos a ejecutar esto. Veamos cómo se desarrolla. Estamos manejando esto y esto está corriendo. Puedo ver la línea roja. ¿En algún lugar? Bien, bien, creo que se queda. Bien, eso creo. Esto está bien. Así que vamos ejecutar esto y veamos cómo se desarrolla. Impresionante. Como puedes ver, esto básicamente funciona. Entonces esto funciona. Y te habrás dado cuenta de que no usé la parte normal. En realidad estoy usando la constante de DGs, ¿verdad? Por lo que es una buena manera de usar también la constante DGS. Entonces, para la prueba final, entremos rápidamente y escribamos, ¿verdad? Quiero decir, chicos, me estoy volviendo muy perezoso, ¿verdad? Yo solo probablemente quiera. Entonces probablemente tengo este escrito en alguna parte, así como los otros. Pero es genial escribir también las cosas, ¿de acuerdo? Entonces usemos este perro Graph Kyo Testa, HCP más bien o HSP Graph ¿Esto es lo que buscas? Oh, increíble. Impresionante. Déjeme mostrar. Nombre del documento. El nombre del documento es empleado con esta búsqueda. ¿Lo conseguiste? Oh, esto es lo que estaba buscando. Bueno, gracias por completar. Lo intentamos, ¿verdad? Entonces uno es un lindo, ¿cuál es el camino? Los caminos básicamente son las partes que estás buscando ¿ los caminos revisan los caminos? Creo que vamos a estar necesitando una variable, vamos a confirmar. Oh, sí. Recuerda que necesitamos una variable. El nombre de la variable es ID, ID. Tengámoslo en mente porque vamos a estar necesitando la variable ID. Ahora como es sólo una sola variable, no necesito escribir algo mucho. A decir que sólo voy a entrar ahí. Voy a decir que eso es variable. Variable y la variable está en ID. Vamos a comprobarlo una vez más, ID, solo ID, $30. ID, voy a colocar en investigación de identificación de empleado con el ID de empleado. Esto es bastante genial. Ahora que tengo eso en y puedo ejecutar y la parte es dGs constante, consulta Empleado punto, empleado con búsqueda de empresa. Este soy yo en excavaciones constantes otra vez. Entonces, ¿qué estoy esperando? Estoy esperando una lista de entidades. Verás, podrías obtener una lista de entidades, la entidad es la clase que estoy esperando está presionando, entidad buscar punto PLS, Vamos a validar eso. Vamos a validar. Vamos a entrar rápidamente. Voy a entrar aquí. Me empleado con búsqueda de empresa, empleado con búsqueda de empresa. Empleado con búsqueda de empresa. Vamos a confirmar. ¿Está aquí? O es en común. Comprobemos en común. Empleado con Búsqueda de Empresa, Ar? Y lo que esperas es una lista. Se ve una lista de búsqueda de persona y entidad. Y eso es exactamente lo que estoy haciendo aquí, ¿verdad? Entonces tenemos una lista y aún lista de darnos esto. Así que vamos a extraer esto en una variable. Todo bien. Entonces esta chica, sólo voy a llamar a esta lista de búsqueda. Lista de búsqueda. Bien. Todo bien. Entonces con esto, vamos a hacer algunas aseveraciones y lo vamos a hacer en el siguiente video 118. Pruebas Parte 9: Oigan, chicos, es bueno tenerlos de vuelta, ¿verdad? Entonces lo que vamos a estar haciendo en este video, es completar lo que iniciamos para el empleado Con búsqueda de empresa. Entonces, rápidamente sigamos adelante y terminemos. Así que hemos podido extraer esto a menos que hagamos alguna afirmación. Si la primera aseveración que quiero hacer son aseveraciones, asegúrate de que la lista no sea nula, lo cual es genial También haz otra aseveración. También acepta que la lista de búsqueda tal conjunto que esta lista de búsqueda puntea primero los puntos. Así que solo estoy tratando de ser creativo aquí, ¿verdad? Es camada de lo que trabajamos pero esta algo más. Digamos que este punto consigue primero, ¿verdad? Obtener primero. Entonces digamos instancia de instancia de cualquier compañía DTO compañía DTO clase Debería ser bastante genial, ¿verdad? Porque demostramos eso primero que primero lo comprobamos. Conseguir al empleado la primera búsqueda de empleados. Al decir esta búsqueda de empleados, quieres estar seguro de que instancia en instancia de cualquier empresa DTO plus, derecho, en cualquiera puede tomar múltiples, ya sea empresa o empleado DTO Entonces solo quiero ser más flexible. Así que recuerda la persona busca, la persona empresa, derecho, la persona entidad búsqueda nos dará ya sea empleado o empleado o empleado DT o empresa DTO Entonces eso es lo que sólo estoy haciendo. Sólo estoy validando contra ambos. Entonces uno de ellos debe ser en realidad debe corresponder. Entonces esa es una buena manera de hacerlo. Entonces otra cosa que vamos a hacer, voy a decir persona o voy a decir lista de búsqueda, lista de búsqueda, ¿verdad? Dos Get fest. ¿Bien? Ahora bien, esta ocurrencia sola. Ahora, en lugar de hacer una lista de personas, la voy a emitir. Vamos a echarlo a un empleado. Empleado DTO, puede ser muy flexible con él. Eso solo lo hace interesante. Entonces los DTO empleados llaman a este empleado DTO. Probablemente solo haré un registro. Esto está bien. Seguro que no es no. Creo que ya lo hemos afirmado al principio Acabo de registrar este Registrar ese empleado DTO a cadena, lo cual está bien Le damos un matin muy agradable. Voy a decir esto aquí, voy a decir empleado DTO entonces tengo esto Eso está bien. Si puedes hacer una validación extra. Si estás seguro de que estamos recibiendo un detalle de empleado, entonces puedo afirmar que el empleado punto obtenga identificación Obtener el ID de empleado es igual. Aquí le falta una coma. Escúchalo com. Recuerda, estoy seguro de que el empleado que entra debe ser igual a esto. Este ID de empleado es igual a este ID de empleado. Esa es una muy buena validación. Podría decir que el nombre de la empresa es igual al nombre de la empresa. Esa también es otra buena validación que tenemos aquí. Entonces podría decir número de departamento, obtener número de departamento, es igual al número de departamento. Estamos seguros de que este empleado que somos capaces obtener la creación la empresa, el departamento, el empleado que obtuvimos ID de empleado están validando eso, bien cuando establecemos con el empleado, pero seguro que coincidirá con la compañía también coinciden con el departamento Esta es una prueba bastante genial. Ejecutemos esto y asegurémonos de que todo funcione con precisión. Entonces en realidad se está desacelerando a través de la prueba de la ciudad corriendo, vamos a validar Hemos podido validar nuestro perfil esta prueba, lo cual es increíble y nuestra base de datos está aciada correctamente, y esto está funcionando. ¡Ay! Ahora nos encontramos con un error. Estoy seguro que probablemente sabrías por qué este error porque esto está creando De aquí es de donde vendrá el error. Estás obteniendo un índice fuera de límites, Ids fuera de límite porque estás usando un aleatorio, estás usando un aleatorio Volvamos a hacer lo mismo . Te sorprenderá si volvemos a ejecutar esto esta obra. Volvamos a ejecutarlo. Esto se está ejecutando. Todo bien. Ella está corriendo. Puedo ver que todo esto fue con precisión. Eso es parte de lo aleatorio. Podría ser más esteretype en realidad hacer que tenga un número que probablemente sea genial que no cambiaría y asegúrate de que tu prueba no engordará en esa zona Todo bien. Poder cubrir esto, lo cual es realmente genial. Entonces tenemos una qui más para correr para la paginación. Vamos a entrar rápidamente y solo crear algunos pedacitos de paginación Ahora bien, esto implicará otro poco de mecanografía, que creo que ustedes podrían estar cansados del video de cónyuges y traer esto. Todo bien. He ido a traer esto. Recuerda una paginación. Yo solo traigo esto con una paginación. Una paginación tiene este concepto de autoimputa empleado. Voy a llevar esto a un lado. Entonces vamos a machacarlo lo que tenemos. Mírelo. Estamos usando fechas de nacimiento, ange, este ange, el género, escogiendo un género, varón, forma salayt luego H comienza, H fin, rol debe ser pasante Entonces en realidad estoy revisando usando la prueba de paginación. Asegurémonos de que coincida, prueba de paginación. Es partidos. Entonces si revisas a través de las entradas, tenemos entradas página y tamaño. Esto también debe coincidir. Imputar página y tamaño, esas son las variables, ¿verdad? Estas son las variables que ves, en realidad estoy agregando variables. Nota, podrías colocar todo como uno si usas variables, ¿verdad? Podrías usar variables y simplemente pasar un mapa en pasar esto en un mapa y pasarlo, ¿ verdad? Esa es otra opción. No creo que lo haya intentado antes. Entonces estoy diciendo dame la página uno y el tamaño de esta y la parte es paginación de empleados Recuerda, esta es una constante de excavaciones que podrías usar aquí, que es la paginación de empleados, si la miras, la paginación de empleados ¿Puedo simplemente hacer esto bien? Entonces estoy usando una combinación de todos, así que en realidad se podía ver que esto también funciona. Así que sólo podría hacer esto. Estoy esperando la paginación de los empleados. ¿Eso es lo que estamos esperando? Oh, sí, paginación de empleados. Y cuando eso vuelva, ¿qué estamos esperando? Iniciar sesión, me estoy asegurando que no es. Estoy asegurando que la página de la página es una, estoy demostrando que el tamaño es cinco Bien, vamos a ejecutar esto y ver cómo se desarrolla. Recuerda que este potencialmente también falla. Entonces lo que haría es que voy a ejecutar esto, ¿verdad? Ejecuta esto. Ahora bien, esto se ha llevado a cabo con éxito. Voy a detenerlo. Entonces pararé esto, luego entraré y me pondré D. Me aseguraré de que esto también esté funcionando con lo mismo que esto se está ejecutando en prueba de perfil. Esta muy chulo. Todo bien. Entonces ahora tenemos eso. Ahora tal vez te preguntes ¿por qué no lo aplico a todo? Bueno, descubro que puedes aplicarlo a tu práctica. No tienes forma de postularte, así que tienes que postularte a todas las clases. Entonces aplícalo aquí. Entonces tengo esto aquí, Bien. Así que vamos a ejecutar esto y veamos cómo funciona. Entonces me voy a convertir en un giro hepático, y voy a ejecutar todo al mismo tiempo. Bien así que vamos a ejecutar todo al mismo tiempo y ver si todo pasa con precisión. Entonces así esto se está postulando para la instigación, creo que me perdí algo ¿Qué me perdí qué? Está buscando esto. Yo sólo voy a ejecutar esto uno por uno entonces. Esperaba elegir esto. No sé por qué en realidad está renunciando a ese error. Vamos a ejecutar esto de nuevo porque no puedo encontrar el perfil aquí, no puedo encontrar el perfil aquí. ¿Puedo hacer una definición de carrera aquí? Esto sería genial. Lo que voy a hacer todas estas carreras con éxito, vamos a ejecutar esto también. Vamos a correr un éxito porque estoy buscando el perfil aquí, ¿verdad? Entonces lo que voy a hacer, veamos si puedo establecer el perfil. Pero vamos a asegurarnos de que esto funcione perfectamente primero, ¿verdad? Impresionante. Para que puedas ver este pasado con éxito. Entonces esto realmente funciona. Entonces voy a hacer vamos a ver si puedo hacer un Run debug. ¿Puedo hacer una modificación? ¿Puedo modificar la configuración redonda? Interesante. Parece que en realidad puedo modificar todo en esta parte. Pero esto es decir que todo en esto se está postulando en contra? Quiero que corra contra mi prueba. Corre contra mis pruebas. ¿A qué te enfrentas? Veamos qué quieres adivinar. Vamos a estar seguros. Bien, esto es genial. Creo que básicamente puedes agregar aquí. Solo pon el medio ambiente y creo que en realidad encajará para todos. Bien, algo que podrías probar por tu cuenta, al menos has podido validar realmente que todo funciona como debería, y esto nos lleva al final de las pruebas en GAF Q. Los veré chicos en el siguiente video 119. Seguridad en Graphql, parte 1: Oigan, chicos, genial tenerlos de vuelta. Todo bien. En este video, vamos a estar hablando de seguridad, ¿no? Este es un ejemplo en lo que nos estamos enfocando en este video. Estamos hablando de seguridad, y de hecho me he tomado el placer de seguir adelante para poner en marcha un servidor de autorización de primavera. Yo sólo te lo mostraré. Si vas a iniciar descendencia punto IO, Spring en realidad tiene su propio servidor de autorización, que es el cumplimiento de Oto. Si estás familiarizado con A dos, tenemos varias subvenciones. Tenemos el código de autorización. Tenemos el código de autorización, PKCE, tenemos las credenciales del cliente Tenemos la concesión de contraseña la cual se ha dplicado o ya no es compatible, pero aún puedes obtenerla, también podrías crear una Que decides usar, ¿verdad? Este es un servidor de autoación 002 completamente empaquetado, que Spring realmente ha creado En este video, en realidad voy a mostrarte lo que realmente se me ha ocurrido. Con el propósito de probar nuestra aplicación gráfica QL, he seguido adelante para iniciar el servidor de autoación de primavera Esto es si vas al archivo de la bomba, verás que acabo de tener esto. Ahora volví a mencionar un par de videos cuando empiezas a ver cosas como esta, significa que cantas vulnerabilidad. Todo lo que solo necesitas hacer es actualizar la última versión. Creo que la última versión a partir de ahora es 34 punto cero, Ar? Entonces estoy seguro de que en realidad lo actualizas a tres o cuatro do cero. Básicamente, no espero que nada se rompa, ¿verdad? Entonces, si realmente haces esto y realmente nos refrescamos, creo que las cosas deberían fluir solo adentro. Bien. Entonces si miras esto también, también estoy usando Java 22 aquí. Yo solo quiero que todo pase bien y se puedan ver los errores que van. Realmente no importa porque esto no es una parte importante del proyecto, es solo un servidor de aation con el que hablaremos Ahora bien, ¿por qué hice esta ruta? Ahora bien, en el mundo actual o en los sistemas actuales, la mayoría de las veces la mayoría de los sistemas están autorizando con OO dos, y sé que hay el último que es la clave de paso Pero centrémonos en esto. En lo que nos estamos enfocando es solo en el servidor OO de dos estaciones. Todo lo que me preocupa es usar credencial de cliente. ¿Por qué es esta queja? Bien, esto ha quedado en desuso. Estos han sido retratados. Creo que probablemente habrá otra opción. Lo genial es que cuando realmente ves cosas como esta, solo descarga fuentes, en realidad obtendrías información extra sobre qué usar. Ya que esto ha sido usar la seguridad HTTP con como para usar la seguridad HB con esto, entonces le pasa a su personalizador interesante Interesante. Es algo que voy a explorar más adelante. Yo sólo para mostrarte cómo simplemente eliminar eso. Solo volvamos a donde estábamos. Seguro que sabrás que esto seguirá funcionando como debería. Bien, así que vamos a saltar de inmediato. Vamos a saltar a la derecha. Bien. Entonces esto es básicamente muy, muy simple. Sólo voy a tratar de explicar a través de él, ¿verdad? Entonces tenemos el concepto de traer un detalle por defecto, entonces esto es solo especificar los puntos de entrada, que es un punto de inicio de sesión, ¿verdad? Esto también personalizable. Entonces también tenemos aquí, usando el formulario de inicio de sesión firme login, y diremos, Bien, queremos autenticar cada solicitud Cada misión debe ser autenticada. Solo estamos permitiendo este inicio de sesión. Solo este inicio de sesión solo este registro en UR debe ser expuesto. Porque para pensarlo en un inicio de sesión, la página de inicio de sesión no debe estar protegida. De eso es de lo que está hablando. Entonces tenemos un concepto de servicio de detalle de usuario. Si estás familiarizado con la primavera, sabrías sobre el servicio de detalle del usuario. Ahora bien, todos estos se habían codificado dentro de la aplicación, lo que hubiera pasado es que habrías creado un servicio de detalle de usuario personalizado que estará hablando con base de datos dentro de estas credenciales en la base de datos. Yo sólo quiero que sea lo más simple posible. Ves que lo que inicias sesión usuario no es contraseña tal como es, y estas son las autoridades. Ahora, ensartar el concepto de reglas y pernisión ahora básicamente me estoy aprovechando del aspecto de las autoridades donde tenemos esto Ahora, antes de explicar este concepto, rápidamente salta hacia abajo. Como puede ver, cuando en realidad estoy personalizando el token, personalizar el token, en realidad podría agregar varias cosas al Solo estoy agregando el nombre de usuario, el nombre de usuario al token. Si está disponible, entonces por aquí, revisaré el tipo de arma como mencioné, o el tipo de arma. Voy a comprobar si se trata de credenciales de cliente, usamos. Poner a disposición la autoridad en el token. Por defecto, la autoridad no es pastor, ¿verdad? A pesar de que lo haces para todos los demás tipos de armas, realmente eres capaz de agregar esto para contar, pero si es código cl, no lo agrega, ¿verdad? Entonces hay que elaborar una lógica para agregarla. Entonces ahora es la razón por la que en realidad tengo esto entrando aquí. Todo bien. Así que volvamos a la cima. Codificador de Paso, no es recomendable utilizar este. Esto es esto sólo para fines de prueba. Actualmente está en desuso y va a ser eliminado pronto, pero para nuestro sencillo post es simplemente esencial Sólo podemos usar esto. Ahora bien, si vas a entrar en él, solo revisas rápidamente, solo comparando el paquete que pasas y el paquete que está disponible. Los pars que se configura que habíamos codificado aquí, los pars que habíamos codificado aquí es solo compararlo Es solo comparar lo que en realidad trajimos. Si volvemos de esta manera es hacer la comparación. Pensé que eso en realidad demuestra eso. Bastante genial. Entonces con eso, lo que lo recomendado es usar probablemente Bcrypt o más deliberadamente, puedes usar algo así como un passwder delegado. Creo que se llama delegar codificador parsd. Creo que aquí hay una descripción. Bien, esto es delegar el codificador pars. Podrías usar esto o usar este Bcrypt o usar Script, pero Bcrypt se usa más comúnmente Es un hash unidireccional y funciona bien, es bastante seguro Entonces necesitas tener un concepto de clientes, los clientes que se registrarán en Esta es la forma en que funciona. Cuando se tiene un servidor de autorización, hay algunos actores ahí. Tienes el recurso. Recurso es básicamente a lo que quieres acceder. Tienes los clientes. El cliente es quien está tratando de autenticarse en su nombre Podría ser una web, probablemente podría ser móvil. Esos son tus clientes, ¿verdad? Entonces tienes a esos actores. En realidad tienes el propio servidor de autorización del servidor , y tienes al usuario. El usuario es el propietario del recurso, ¿verdad? El dueño del recurso que quiere ser jalado que quiere ser puesto por el cliente. Esta es la forma en que el cliente debe reconocer y la forma de reconocer a ese cliente es poder decir, Oye, el cliente para que me autentifique, me das a tu cliente tu ID de cliente y tu secreto de cliente, luego defines el tipo de concesión que quieres permitir Aquí estamos permitiendo código de autorización. Entonces esto no es necesario porque esto es lo único en lo que nos estamos enfocando. Ahora bien, cuál es el propósito de usar credenciales de cliente. Sólo voy a explicar esto brevemente porque esto va más allá del alcance de este curso. Las credenciales de cliente solo son las más adecuadas. Déjame usar la palabra más adecuada cuando estás haciendo comunicación de servidor a servidor. Supongamos que tiene un servidor recursos hablando de un servidor de recursos, pero quiere estar seguro de que la comunicación no se vea comprometida. Probablemente podrías simplemente golpear el servidor de autorización, obtener el token y digo vis token, luego usar ese token para llamar al recurso. Vas a pasar el circuito de cliente y clidar ID de cliente, pero es recomendable No usas esto. No usas esto cuando realmente te conectaste desde el mundo exterior porque puede exponer fácilmente tu ID de cliente secreto de cliente. Entonces estás usando un caso de en registro de memoria. Situación de guerra que vas a usar Creo que es la exposición de clientes de registro de JDBC se supone que debes usar Así que también estás usando el concepto de configuración del servidor de autoración Así que para entender siempre lo que cada Bins, siempre se puede hacer clic de Control o clic de comando. Entonces en realidad descargas fuentes. Entonces podrás ver descripción lo que hacen estas cosas. Verá una instalación para la configuración del servidor de autoración Entonces también he explicado esto aquí es donde potenciamos, ¿verdad? Mejoramos nuestro token para poder que las credenciales del cliente tengan nuestra octopsis Entonces esto es básicamente lo que hace. Así que vuelve en el siguiente video, y te voy a mostrar cómo funciona esto. Los veré chicos en el siguiente video. 120. Seguridad en Graphql, parte 2: Oigan, chicos, es bueno tenerlos de vuelta. Todo bien. Entonces como expliqué en el último video, ¿no? Intenté lo más posible, así que no dependería de la base de datos. Todo está codificado, pero no quieres ir por esta ruta, ¿verdad? Si verifica la autorización de primavera, realidad puede verificar el servidor OO de primavera y el servidor de oración. Hay varios ejemplos que muestran cómo usar la base de datos, configuración de la base de datos y similares. Pero por el bien de este curso, creo que esto va a funcionar bien. Solo queremos ver eso con una autenticar con una O o dos o tenemos una capa de seguridad en nuestra gráfica QL Con esto, solo puedes iniciar tu aplicación directamente. La otra configuración que acabo agregar son las propiedades aplicacionales Acabo de habilitar banda de rodadura virtual, lo cual es totalmente innecesario. Estoy usando siete ollas 8099, que es todo lo que solo necesitamos Con esta t, déjame bringo a mi cartero. Solo voy a inglar a mi cartero y voy a darle a este 8099 y poder hacer que esto funcione De hecho voy a salir eso. Eso está subiendo. Eso básicamente viene 1 minuto, 1 minuto, 1 minuto. Todo bien. Tenemos esto. Entonces tenemos lo mismo. Entonces ya tenemos disponible el concepto de todo esto. Entonces lo que voy a hacer es copiar los detalles para la conexión y meterme directamente en ello. Todo bien. Así que aquí, de vuelta. Derecha. Básicamente, solo necesitamos llamarlo ahora. Como ya conoces, esto es básicamente lo que llamas para servidor de autorización de primavera. Se podría configurar esto. Pero esto es un defecto que necesitas. También voy a proporcionar esto. Te voy a proporcionar esto para que solo puedas llamarlo como es. Entonces, si haces esto, solo llama a esto. Se podía ver que esto simplemente funciona como debería. Simplemente funciona como debería. Entonces puedo obtener la ficha. Observemos la ficha. Recuerden, agregué algún concepto de las autoridades, así que vamos a verificar eso. Entonces, si nos fijamos en esto, agregué autoridades aquí, que en realidad publicaron aquí, ¿verdad? Entonces esto se debe hacer programáticamente. Y si miras a las autoridades, sí, estas son las autoridades. Crear actualizaciones de lectura. Esto es básicamente lo que vas a usar. Debería ser más complejo que eso en la situación VW. Entonces, lo que voy a hacer nosotros también podríamos hacer esto. Si no quieres dejar ese particular si solo revisas la versión del código, clic en este código, da clic en este, ¿verdad? Haga clic en esto. Creo que deberíamos explorar esto un poco. Entonces estás pasando el nombre de usuario a la contraseña, que es el secreto de un cliente, que va a ser el encabezado, la autorización básica. Entonces en los encabezados, básicamente no tienes nada. Entonces en el cuerpo, si revisas el cuerpo, en realidad lo hacemos WW punto forma URL codificada Pasamos un tipo de subvención y pasamos el alcance. Y si te sientas tenemos dos alcances y dos alcances que tenemos es muy claro Mira el alcance, tenemos el alcance de ID abierto, derecho, ID abierto, y tenemos el alcance de nuestro perfil. Por lo que pasar cualquiera de ellos bastaría para crear esto. Yo básicamente podría hacer esto podría usar un rizo. Vamos a darle a esto. Bien, entonces esto realmente falta porque esto no se comporta como un terminal por lotes. Pero si estás usando un terminal por lotes, podrías pasar una sola línea, y esto realmente podrá obtener lo que necesitas para ti, ¿verdad? Así que en realidad acabo de mencionar eso para que puedas también si estás usando un Mac y Linux, va a ser bastante genial, pero como estoy usando un Windows, supongo que eso es que estoy recibiendo estos errores raros. El cartero es justo lo suficiente. Entonces lo que voy a hacer, voy a dejar este guión de cartero Voy a poner esto en una colección separada, y voy a compartir este guión de cartero Entonces, si solo lo llamas como es, solo lo llamas como él y lo obtienes token y puedes usar el token, como quieras usarlo. ¿Estaremos usando básico en los siguientes videos? Esta es una explicación típica del servidor tis. Entonces me ves volviendo a éste de vez en cuando, si es necesario. Pero para estar ejecutando la bolsa poder realmente obtener nuestro token usar para probar nuestra aplicación Graph KeyWL Con este set, los veré chicos en el siguiente video. 121. Seguridad en Graphql, parte 3: Oigan, chicos, vamos a tenerlo de vuelta. Entonces podemos seguir adelante y configurar una aplicación gráfica Q para luego hablar con el servidor de autorización porque tiene que ser alguna forma de comunicación. Para hacer eso, voy a cerrar todo esto, luego íbamos a una configuración y crearíamos una configuración de seguridad. Yo lo llamo configuración de seguridad. Todo bien. Ahora para hacer esto, vamos a hacer de esto una configuración. Va a ser una configuración. Vamos a habilitar porque es muy importante, que habilitar la seguridad web. Habilite la seguridad web. Bien, creo que sé por qué no encuentras esto. Recuerda que este es un servidor tan, una gráfica Q estará sirviendo como servidor de recursos porque ahí es donde queremos sacar nuestro Dysonm Entonces, para poder lograrlo, necesitamos agregar una dependencia para el servidor de recursos, ¿verdad? Y para hacer eso, ahora solo entramos en una bomba direcML PUM EML directa Recuerda que esto es una queja porque S está en la última versión Así que podrías estar seguro cuando estés creando tu propia aplicación, usando la última versión de un arranque de primavera y todas estas vulnerabilidades estarán fuera. Voy a seguir adelante y agregar en el servidor de recursos. El servidor de recursos es bastante fácil de agregar. Si realmente revisas y comienzas el Spring Dot IO para que lo menciones. Empezar el punto de primavera o. vamos a empezar el punto de primavera IO. Una vez que comienzas un spring dot IO, en caso de que sepa usando Intelligent ultimate, podrías simplemente fuente servidor dos servidor de recursos. Ahora si haces clic en él, dice Integración de Springboard para seguridad de primavera o función de servidor de dos Esto es lo que hay que añadir. Si lo coloco en Maven, si exploramos, esto es básicamente lo que necesitamos Básicamente necesito solo copiar esto. Copia otra vez y voy a entrar aquí y sólo puedo agregarlo. Si básicamente estás usando ultimate, podrías simplemente hacer clic en esto. Siempre serán símbolo aquí. Tráelo a colación y solo agrega servidor de recursos. Simplemente agregue servidores de dos servidores de recursos y eso solo lo traerá automáticamente. Todo bien. Se puede ver que en realidad trajo en forma automática y vamos a estar bien para ir. Si revisas, lo ha agregado a la base. Esto ya se agregó. Recuerda, estoy enfatizando esto porque es muy importante mover las vulnerabilidades para que tu aplicación no quede expuesta Solo necesitas actualizar a la última pasion de primavera. Pero quiero ser consistente por lo que empecé. Para cuando empecé con 33 o cuatro, estas vulnerabilidades no se muestran. Ahora en realidad están mostrando. Significa los fondos y vulnerabilidades, necesitas realmente resolverlo con solo subir última versión de Springboard. Todo bien. Entonces con este tono, permítanme traerlo realmente recargando el proyecto Yo solo sincronizo los proyectos, vamos a recargar Mv en proyectos que solo traerán los detalles adentro Y cuando eso está en, entonces podemos entrar entonces habilitar una seguridad web y eso estará disponible Habilite habilitar la seguridad web. Ya ves, esto ya está disponible porque lo trae en contexto de seguridad. Eso es algo genial que hemos hecho. Entonces el siguiente paso es que luego vamos a habilitar en la seguridad del método porque vamos a estar usando algún tipo de método de seguridad, antes de ahora, ya ves lo que esta parte que está siendo expuesta era realmente recomendable antes de ahora. Pero sin embargo, ya no es aconsejable. Puedes ver si revisas esto esto está zumbando para ti automáticamente, verdad? Esto ha quedado en desuso. Yo digo usar seguridad metálica. Es por ello que utilizamos seguridad metálica. Creo que me perdí de hecho me perdí la explicación ahí. Esto ha sido fechado y ahora usan seguridad metálica. Es por ello que estamos trayendo en método de seguridad método, seguridad metálica. Haciendo una seguridad metálica, pre post es verdad, es por defecto, así que no necesitamos agregar esto porque es por defecto. Prepost significa que queremos hacer preautorizar y publicar autorizar, pero es por defecto, así que no tenemos que hacerlo es verdad por Tenemos que agregar eso en. Movemos estos insumos, Bien, así que ese es un nuevo paso. Ahora, tenemos que decir dónde encontrar un servidor y para hacer eso, hay un concepto de primavera y JWKSUR va a estar Simplemente entraré rápidamente en un archivo de propiedades para conectarlo rápidamente. Eso es lo que vamos a hacer enseguida. Entonces lo que voy a hacer, voy a entrar en esta parte. Esta es la parte local que estás usando, ¿verdad? Esto va a estar disponible. Canto una DoCopa Esta será primavera. Déjame quitarme esto. Entonces esto ya traerás esto. Spring, KS, ya ves, GWS, luego establece la interfaz de usuario. De hecho podrías tener esto. Esto no es lo que busco. Entonces queremos el URI. Voy a poner el UR GW Ks, luego el URI. Estoy haciendo solo especificando esto. No quiero todo esto, entonces URI, ¿verdad? Esto es sólo los caminos. Sólo digo que este es el camino para encontrar autorizaciones de HDCP, anfitrión local 8099, luego va a ser O a las dos o dos, entonces JwKsth podrá ayudarnos a encontrar Volviendo a la seguridad, volviendo a esta parte G de nuevo a esta parte. Así que solo para conectarlo solo lo estaré trayendo en traerlo y te mostraré cómo usarlo. Ahora debo decir que esta es una configuración que estoy haciendo. También hay otra forma de hacer esta configuración. Esto está en configuración. Si ves que alguien conecta un servidor de recursos, será diferente. No significa que de todos modos sea mejor. Primavera, puedes hacer lo mismo en primavera de múltiples maneras. Traeré al valor al valor, luego lo conectaré por cable. Entonces voy a estar trayendo el columpio. Ésas son las partes. Eso era lo que necesitaba. Voy a estar en el swing valor privado, llamémoslo. Eso está bien. Entonces voy a estar trayendo un ser. Entonces voy a estar trayendo una cadena de filtros de seguridad. Si utilizo un ser no necesariamente necesitas usar una cadena de filtros de seguridad pública. Eso está bien bien. Esto es genial. Todo bien. Esto es bueno. Ahora voy a estar inyectando. Recuerda, no sé si has mencionado esto antes, pero ten en cuenta que cualquier parámetro de un ser es un frijol. Sólo se puede inyectar un estado en un ben, ¿verdad? Cualquier parámetro de un estado siempre recuerda que es un ser. Vas a estar trayendo un par de cosas que voy a crear más adelante. Pero sin embargo, solo procederemos. Déjame quitarlo por ahora. Lo estás creando ahí abajo y nosotros lo vamos a traer. Ahora vamos a empezar en pith CTP. Ahora bien, este es un servidor de recursos 02 servidor de recursos, o dos servidores de recursos. Antes de ahora, solo podías hacer esto punto, punto, punto, pero ahora mismo, usan un concepto de personalizador Acabo de llamar a este personalizador de recursos de recursos. Personalizador, ¿verdad? Entonces es en este personalizador, traemos muchos detalles Nosotros el personalizador de salsa, este personalizador de recursos, estaremos teniendo algunas paradas geniales, las cuales estaremos agregando Ahora, digo, personalizador de recursos. ¿Bien? Quiero traer a JWT ¿Bien? Así que ya ves antes de usar JWT sin un personalizador no hiciste un punto pero ahora, pones un personalizador para poner en cualquier detalle que estés buscando Entonces estamos poniendo un personalizador. Ahora para este JWT, también tenemos su propio personalizador, JWT, personalizador Recuerda que podría ser cualquier nombre. Simplemente me gusta llamarlo personalizador. Podría ser cualquier nombre. Todo bien. Con esto, sigamos adelante. Recuerda desde el servidor de recursos, obtuve el personalizador JWT JW NRs Entonces, ¿qué queremos agregar al personalizador? Voy a traer ¿verdad? El personalizador de JWC, luego el URI, el URI que queremos establecer ahora, JWT URI, que es el URI que acabamos Bien, genial. Ahora tenemos eso. El siguiente será configurar un decodificador, que sería cresta en un minuto y finalmente configuraría el convertidor de autenticación JWT, que en realidad generaría el token o probablemente configuraría el token para nosotros Si quieres ver más descripción, solo la abres, ves lo escamoso lo que hace, y podrías simplemente y ver básicamente lo que hace Si vas a lo más alto, ves muchas descripciones, acabas de leer sobre eso. Este es nuestro cuerpo, así que vamos a estar haciendo ping a esto también Sigamos adelante y creamos un personalizador Vamos a crear un decodificador también vamos a crear una autenticación GWT, convertidores de autenticación WT cata que estaremos haciendo justo Voy a bajar, bajar antes de hacer eso, veo que ya es el momento faspen volvamos en este video para completar esto Los veo en el siguiente video. 122. Seguridad en Graphql, parte 4: Oigan, chicos, genial tenerlos de vuelta. Recuerden que estamos haciendo nosotros en realidad configurando un servidor de autorización mediante cual es un gráfico QO para comportarse como un servidor de autorización Estamos tratando de que se comunique con el servidor de autorización que mostramos hace un par de videos. Ahí es exactamente donde estamos. Hemos configurado el último pote de video a este paso si no viste que las caderas regresaran para ver exactamente lo que hemos hecho aquí. Entonces ahora estamos tratando de configurar un decodificador GWT autenticación cer un router convertidor Vamos a configurar un decodificador. Recuerda que mencioné cuando estás usando un bin realmente no necesitas un teclado público, no tienes decodificador. Así que tenemos un decodificador, básicamente en decodificador que viene de un decodificador JWC Decodag JWT DCodaJWT Los decodificadores JWT devuelven números. Esto es básicamente. Creo que nimbos básicamente viene de un nimbus, decodificadores JWT se puede ver Vas a decodificarlo puntos. Con esto, estamos decodificando con esto porque el servidor de autoación contiene una gran cantidad de detalles Ahora, lo que hará la mayoría de la gente, realidad podría tener una clave privada configurada en el servidor de automatización y configurar una clave pública en el servidor de recursos. Esa es una manera común inculcar válida hoy en día, no hay una clave asimétrica Pero sin embargo, el problema es que es muy difícil rotar. Digamos que tienes unos 15 servidores de notación que están haciendo varias cosas, hablando con el mismo servidor de notación. Una vez que cambias la clave privada, tienes que ir y cambiar el público en todos los servidores. Sin embargo, solo podrías configurar solo tu servidor de aireación para que tenga las claves, luego llamar a un punto final para poder leer esas claves del mismo, y eso realmente funciona Pensé que debería mencionar que esa es una forma en la que podrías hacerlo. Superar la viga. Ahora esto ahora se reconoce. Mencioné anteriormente, cualquier parámetro de haz también es un haz. Puedo traer el JWT. Decodificador, luego decodificador decodificador JWT, decodificador JWT. Ahora bien, si tuvieras que hacer esto, haz clic en esto si es un ultimate, da click en este decodificador lo veo salta aquí mismo para que pueda ver porque lo ve como un bin. Voy a poner aquí un decodificador y este tipo está contento. Bien, genial. El siguiente paso, vamos a configurar nuestro convertidor de autenticación JWT Voy a establecer un bin así este sbin, luego convertidor de autenticación JWT Antes de que realmente implementemos, voy a seguir adelante e inyectarlo aquí, ¿verdad? Todo bien. Entonces la autenticación JWT y si haces lo mismo, ves que salta aquí mismo, por lo que la reconoce Cuando lugar ahora está sonriendo. Tenemos todo esto configurado y esto está sonriendo bastante bien. Tenemos esto. Esto realmente entra y tenemos la personalización de JWT y trajimos esto y todo, esto es bastante genial, cerremos todo esto No creo que necesitemos estos colibs extra hay un cielo multi, hay un cielo multi Esto está bien ahora. Esto está bien. Entonces con este tipo, entonces necesitamos esta parte aquí, podemos hacer esto. Quiero ver cómo se cierra. Entonces final, esta pieza final en realidad puso esto aquí arriba. Bien, así que esto es genial. Vuelve al acabado esto, menos que alambre esto adentro. Tenemos un convertidor de autenticación de autenticación JWT que es genial Contamos con convertidor de autenticación JW puede establecer autoridades otorgadas GW Aquí es donde realmente quieres poner en unas autoridades otorgadas para realmente sean utilizables para saber que oye, estas son tus autoridades las que en realidad esperas que tenga, ¿sabes? Todo bien. Entonces tenemos esto. Entonces tenemos estamos usando el concepto de personalizador. Recuerda, el concepto de personalizador es lo que se utiliza. Así que enumere las autoridades de cadena. Impresionante. Ahora, ya deberías estar familiarizado con esto. Recuerda, ya nos instalamos. Ya configuramos nuestro reclamo, obtuvimos reclamo, no quiero obtener reclamo. Sólo vamos a conseguir reclamo. Hay un reclamo. Entonces una vez que uses esto. Recuerda, ya lo configuramos. Volvamos a eso tendría más sentido. Recuerden, estamos configurando esto aquí. Usted está estableciendo esta afirmación para tener autoridades. Estas autoridades, miramos esto, son solo autoridades, aplican en muchos lugares lo hago singular de una fuente en particular. Ahora estoy recuperando lo mismo aquí. Recuperando lo mismo puedes localizar eso, luego regresaré y luego lo configuraré en nuestro personalizador Diré regreso, regreso, y diré autoridades, la cadena, mapa, luego lo mapearé a simple autoridad otorgada. Diré simple autoridad otorgada. ¿La tengo aquí? Vamos a escribir a cabo. Autorización simple otorgada No. Esto van a recoger decir a la lista. Bien, entonces esto es sonreír. Tenemos esto básicamente configurado. Digamos que falta algo. Déjame ver esto. Esto es comp veamos esto. Vamos a inspeccionar dice: Bien, mala expresión. La última autoridad simple de Gant no se puede convertir en autoridad otorgada Espero explícitamente que usemos la simple autoridad de Gant. Entonces esto está bien. Compartiendo esto para mapear simple autoridad otorgada. Vamos a recoger los coleccionistas recogen. Recoge y recójanos para enumerar. Bien, entonces esto es sonreír. Todo esto está bien. Y por último, devolvemos nuestro convertidor de autigación JW de autenticación Entonces esto ahora está básicamente ordenado. Entonces tenemos todos estos adentro. Ahora, próxima parada, vamos a saltar aquí. Tenemos que hacer algún trabajo extra porque tenemos que decir, Bien, queremos permitir esta URR, no queremos permitir esta URL Ahora, te parece muy claro lo que estoy a punto de hacer ahora. Diré que esta parada autorizó las solicitudes HTTP. P petición. La solicitud Auths P en realidad no toma ningún parámetro. Por ahora, en realidad podríamos pasar. ¿Bien? Entonces AutoriprQuest, entonces nos vamos Bien, canse esto. Después lo puso en marcha, punteó cualquier solicitud. Puntos. A solicita? No. En vez de autenticado, voy a estar diciendo Paital Guau. Verás, ¿qué has hecho? Te estarás preguntando, oye, ¿qué he hecho aquí? Entonces al parecer la aplicación es apátrida, este CSRF o volver a este CSRF, hay una manera de desactivar y ¿cómo se puede desactivar Utiliza esto también usando el concepto de personalizador ahora. Hay un concepto de abstracts, configurador abstracto HTP. Entonces solo Lambda expresion para solo traer eso entonces vuelves a la compilación de CD Bien. Este tipo se queja por qué se queja diciendo, creo que es esto duplicado Vamos a averiguarlo. Se duplica la solicitud autorizada. Veamos por qué se duplica. ¿Qué debemos usar? Dice duplicado, usa solicitudes HTTP autorizadas. En cambio. ¿Qué usaste? HTTP autorizado. Eso era lo que iba por solicitud de HCP en su lugar. Bien, así que está bien. Tenemos todo configurado. Esta es básicamente toda la configuración que necesitamos. Estamos hablando con el servidor de ización y este tipo nos va a dar todos los detalles que necesitamos, que es esta parte aquí, si vas adentro, que es el 02 GWKSTh contiene un montón de detalles, un montón Voy a volver en el siguiente video y mostrarte cómo ver algunos detalles extra en el servidor de azation, y voy a explicar por qué estoy permitiendo todo en lugar de autenticar Los veo en el siguiente video. 123. Seguridad en Graphql, parte 5: Todo bien. Oigan, chicos, es bueno tenerlos de vuelta. Todo bien. Entonces estás viendo el concepto del servidor de autorización. Pensé que voy a mostrarte algunos detalles extra geniales y razón por la que vemos que estamos usando el 02 GW k, JWKSnerrSource Empecemos en el servidor de autorización que preparamos antes. Esto no debería tener ningún error. Así que me puse en marcha. Volvamos a entrar. Entonces los puntos finales son 899, Ahora, llamemos a este método. Bien. Si miramos a través de esto, esta es una especificación para ID abierta que debería poder revelar realmente todos estos detalles. Si entras, ves que tenemos tantos detalles. Ahora bien, aquí es donde descubrí que en realidad podríamos sacar esto. Entonces hay un JWKSURI En caso de que no quieras usar cuál es el nombre ahora, en caso de que no quieras usar la clave privada aleta de clave pública en el servidor de autoación y servidor de recursos, y solo quieres el servidor y solo quieres Entonces el servidor de recursos esté listo para que el servidor atan obtenga la clave pública y sepa cómo decodificar Así que todo depende solo del servidor de automatización. Esto es lo que necesitas. De aquí es de donde lo sacas, ¿verdad? Es que usted mencionó. Y en base a nuestra configuración, se ve lo que se soporta. Recuerda, agregamos código, credenciales de cliente, derecho, actualizamos también y si comparas, esto es exactamente lo que teníamos ahí. Así que necesitaba mostrarte esto, ¿ves? Tienes un nuevo scen credenciales de cliente, código oral. Así es como se llega a encontrarlo realmente. Básicamente, este es el punto final. También lo he incluido en la colección Postman, voy a compartir para que realmente puedas explorar para ver. Cómo se ve. Bien, entonces cuando volvamos aquí. Ahora, surge entonces la pregunta. La forma normal de hacer esto es autenticar realmente todo Todo debe ser autenticado. Entonces empiezas a especificar que, Bien, empezaría a usar este particular comenzaría a usar esta regla en particular o permiso para acceder a un recurso u otro. Pero hay un problema. A diferencia de un HTTP tradicional, ¿verdad? Tienes diferentes URI, ¿verdad? Existen diferentes URI. Entonces te voy a dar un ejemplo particular aquí. Entonces digamos que tienes podrías tener cosas como recurso HTTP, digamos que está en un host es solo un ejemplo, 80, 80. Entonces universidad pública tal vez recurso es nuestro recurso en usuarios familiares. Entonces podríamos tener otra vez para decir, este es diez quizá usuarios Slach uno Esto va a ser apunta a algo diferente de lo que podríamos decir entonces digamos tal vez clientes. Clientes dos. Ahora bien, estas son diferentes partes, diferentes puntos finales que realmente estamos expuestos en nuestra aplicación, que sería colocar el autorizon preauthoriz o el post autorizado, que Todo lo que autenticamos. Pero en el caso de la gráfica QL, recuerden lo único que estamos llamando, que les mostré chicos Anuncios, solo un punto final al que están llamando En el caso de la gráfica Q, sólo estamos llamando a graph QL. Esto es lo único que estás llamando. Ahora, impulsa nuestra mutación, nuestra consulta, si te has dado cuenta, todo pasa por esto. Ahora, vamos a subir nuestro alquitrán, e lo validamos rápidamente. En caso de que tal vez realmente pasaras por alto y en realidad no te diste cuenta de eso, vamos a entrar su vamos a validar eso. Puedes ver para esta parte que estamos creando la parte que estamos llamando la misma señal gráfica para Pigination GaFQue, empresa Gvcuel empleado GFC, empresa Gvcuel empleado GFC, espero que tenga sentido ahora y en realidad lo esté pegando esta parte que estamos creando la parte que estamos llamando la misma señal gráfica para Pigination GaFQue, empresa Gvcuel empleado GFC, espero que tenga sentido ahora y en realidad lo esté pegando. Si realmente compruebas el combustible del gráfico de consulta, todo está llamando a este mismo punto final. Entonces es capaz de disolverse. Es por eso que si cometes algún error o esto no se alinea, aquí obtienes algunos errores raros. Bien, ahora que tenemos este entendimiento, veamos ahora qué tiene que decir Spring al respecto. Entonces vayamos a primavera y documentación y veamos qué tenemos que decir al respecto. Voy a abrir esto. Por lo que también voy a compartir este enlace. Ahora, esto es primavera para Graph Q Spring Graph cuidado Veamos esto. Vamos a lo que dice. Dice que las rutas a un punto final QL de gráfico web se pueden asegurar con seguridad de URL de KCP para garantizar que solo los usuarios autenticados puedan Esto sin embargo, esto no diferencia entre las diferentes solicitudes de Graph en un punto final compartido de este tipo en una sola URA, que están utilizando. No es una sola UR. Dice, para aplicar más seguridad de grano fino, agregar rotación de seguridad de resorte como un método de servicio PrioriZect Digamos también clases. Las clases son método. Involucrado en la búsqueda de partes específicas de la respuesta de GAP Q. Espero que esto tenga más sentido ahora. Yo solo tengo una URL para que entonces podamos asegurar cada uno de los endpoints o cada uno de los GAP Q por así decirlo, recurso w. lo estaremos haciendo en una clase o en un nivel de método que luego podamos decidir que esto está protegido, no está protegido Espero que sea súper claro, eso es súper claro. Esto es muy, muy importante. También voy a poner este enlace. También voy a actualizar mis notas, ¿verdad? Entonces también voy a actualizar mis notas para que ustedes también puedan tener este enlace disponible para ustedes. Todo bien. Así que en realidad he podido explicar el concepto por qué esto es así y lo que estamos permitiendo a todos. ¿Bien? Todo bien. También voy a hacer esto, porque sé que esta pregunta también podría surgir más adelante. Bien, entonces voy a hacer esto. También voy a publicar esto aquí. Ahora bien esto es recomendable, pero voy a poner esto aquí para que en realidad solo podamos hacer referencia. Quien se esté preguntando por qué tenemos permial con esto. Con esto, hemos podido terminar realmente nuestra configuración, creo y luego seguir adelante y ahora empezar a asegurar un recurso en particular que realmente queremos exponer o verlos chicos en el siguiente video. 124. Seguridad en Graphql, parte 6: Oigan, chicos, genial tenerlos de vuelta. Gracias por volver sobre mí. Bien, lo que vamos a hacer ahora mismo, vamos a proteger todo nuestro recurso, cada uno de ellos en base a lo que leímos en el último video sobre documentación de primavera para graph QL, entremos Ahora, es un gran fan de la primavera, has estado usando primavera antes de ahora, estarías al tanto con el concepto de R Priuthorize que se mencionó en el último video Entonces ahora, por este bien, por el bien de este curso, voy a estar protegiendo cada recurso. No deberías estar haciendo eso, ¿verdad? Algunos probablemente deberían estar expuestos al público si se quiere. Pero por el bien de este curso, voy a hacer eso. Te voy a enseñar dos métodos. Estoy usando un preautorizado, preautorizado. Es un pre autorizado. Pre autorizado debe tener un valor, debe tener un valor. Ahora, tienes un concepto de usar media regla. ¿Correcto? O el uso tiene algún papel. Si estás usando tiene algún rol, significa que puedes poner más de un rol, separado por comas Si estás usando rollo, solo puedes poner uno. Ahora recuerden, estamos haciendo las cosas en un nivel inferior, que es el nivel de autoridad, tenemos que usar el concepto de autoridad, ¿verdad? Y ahora debido a que esto contiene tanto mutación de lectura, ésta en realidad contiene algún contenido, tanto de conmutación como de consulta Voy a unirlos para decir que tiene alguna autoridad. Y entonces voy a estar pasando en múltiplo. Diré, quiero leer y quiero crear. Debes tener cualquiera de estos dos para hacer esto realmente plano. Entonces me llevo bien esto. Veamos lo que hice mal. Resorte esta espalda. A ver. Tenemos PriuthizeHH alguna? Esto es lo que me perdí. ¿Tiene alguna autoridad? Sí. Tiene autoridad alguna. Ahora bien, si quieres hacer esto a nivel de método es muy sencillo. Solo tienes que venir aquí y meter esto. Entonces, si solo dices este hub, y si quieres ser más específico, solo dices que tiene autoridad. Primerdad. Qué es esto haciendo esta investigación, entonces es una lectura para que prácticamente puedas alejar esto Esto es muy crucial, chicos, ¿ verdad? Esto es muy crucial. Como mencioné en aras de la sencillez, solo quiero hacerte algo más genérico. Te he enseñado cómo hacer para el nivel de método y te he enseñado cómo hacerlo realmente para el nivel de clase. Para este curso, vamos a estar haciendo más nivel de clase. Recuerda, si colocas un nivel de método y colocas un nivel de clase. Si coloca un nivel de clase y el nivel de método, nivel de método tiene más precedentes que el nivel de clase, tenlo en cuenta El nivel de método tiene más prioridad que el nivel de clase. Eso es muy crucial saberlo. Estás colocando, oye, pero yo pongo esto aquí, esto está disponible, pero pones algo diferente aquí, esto tendría más tienes que tener más actividad o debería decir para tener más importancia que esto. Eso es bastante claro. Yo sólo voy a tomar esto. Voy a duplicar esto en cada uno de nuestros detalles. Todo nuestro recurso que expusimos. Bien. Entonces sí. Por último, sí. Todo bien. De esta manera, esto en realidad ahora es cierto. Esta configuración ahora es cierta. Hemos permitido todos los recursos, pero entonces vamos a decir que ahora estamos protegiendo a cada uno de ellos. Entonces, aunque lo permitimos todo aquí, no puedes evaluar ninguno de ya no puedes evaluar ninguno de nuestros recursos sin tener un token GWT que realmente esté permitido evaluarlo Esto es genial, chicos. Hemos podido hacer algo realmente increíble. De hecho, hemos podido configurar el servidor que te mostré. De hecho, he podido decirte la razón por la que estamos usando permisos o he podido mostrarte la configuración de ID abierta bien definida que está disponible en el cartero que voy a compartir, ¿verdad Y aquí, te he enseñado cómo proteger la gráfica QL, ¿de acuerdo? Poner cada recurso. Y esto es bastante asombroso. Para que puedan disfrutar de todas las palabras juntos. Tienes la libertad de ver todo lo que se supone que se debe hacer en torno a la seguridad en la gráfica QL Pero como saben, esto no está completo excepto que probamos. Y cómo probamos, no vamos a hacer nada diferente a lo que hemos estado haciendo antes. Si estás al tanto, ya dejamos varias pruebas, ¿verdad? Entonces ahora mismo, entonces entra, o debería enviar este video, luego entrar a crear luego intenta conectar tu servidor de autorización, luego usa un generador de tokens para llamar a todos y cada uno de estos recursos. Y veremos alfileres ardiendo o saliendo , genial. Todo bien. Pero antes de que terminemos este video, pongamos en marcha esto. ¿Bien? Empecemos con esto y solo intentemos evaluarlo de la manera en que lo hemos estado evaluando antes. Recuerda que no está protegido, y veamos si funciona. Entonces voy a hacer dos cosas al alza de mi servidor de autorización. Mi servidor iriano está en funcionamiento o en funcionamiento. Voy a minimizar eso. Oside mi docker, así que realmente puedo poner en marcha en esta aplicación Entonces, vamos a poner en marcha esto. Voy a poner en marcha esto. Déjame revisar la configuración. Yo uso perfil de resorte, que es genial. El perfil que estoy usando es local, lo cual es bastante genial. Recuerda esto. Usted configura esto para usar el perfil de resorte cuando se usa local. Todo bien. Y luego hemos agregado algo genial, que es esto, que ahora estamos hablando con lo que tenemos por aquí, que es este tipo de aquí. Y este tipo está escuchando en qué ollas escuchan en las ollas 8099. Todo bien. Empecemos esto y vamos a evaluarlo y ver si podemos ver evaluarlo o no podemos. Si puedes evaluarlo, algo ha salido mal. Si puedes evaluarlo y todo está funcionando bien. Vamos a poner en marcha esto. Esto está llegando Bien, así que esto se acerca vamos permitir que simplemente fluya adentro, bajo adentro. Recuerda que protegimos todo el recurso, necesito mencionar que de nuevo, todo está protegido a nivel de clase. Yo solo uso un ejemplo para solo proteger a nivel de método, ¿verdad? Por lo que esto está protegido, protegido, protegido, protegido. Esto es genial. Todo lo empecé ahora mismo. Vamos a entrar y luego crear una empresa. Vamos a entrar y crear una empresa. ¿Podemos ver que no hemos agregado nada aquí? No tenemos ningún otro encabezado. Echemos un vistazo al encabezado. No tenemos ningún encabezado para esto, solo intentemos crearlo tal como es. Yo no cambiaría nada. Simplemente creo esto tal como es y veo qué pasa. Uy. Acceso denegado. Impresionante. Entonces todo está funcionando como debería. Vayamos a un empleado. Llamemos a esto Acceso denegado. Este acceso denegado. Este acceso denegado. Un acceso más denegado. Por lo que esto es cierto que nuestra aplicación no está protegida. Con esto, en realidad hemos podido hacer todo lo que es necesario. Volvamos en el siguiente video y probemos de este autor sexo el encabezado con la autorización con la autorización, pongamos la barrera a él y veamos que podemos acceder. Si podemos, entonces volveremos. Entonces en realidad luego profundizamos para luego cablear en nuestras pruebas para luego poder conectarnos, los vemos en el siguiente video. E. 125. Seguridad en Graphql, parte 7: Oigan, chicos, genial tenerlos de vuelta. Todo bien. Así que de inmediato, hemos podido ver en el último video que ya no podemos acceder a ninguna de las fuentes, así que ya agregamos los detalles lo que nos está restringiendo Vamos al servidor de autorización. Nosotros stat del servidor de autorización, voy a ir a Cartero traer Cartero Mientras cartero cargaba. Voy a chequear y vamos a sacar a JW ver el RO Voy a sacar a colación a JW ver al RO despejar esto. Nosotros JW vemos el IO ahora en la imagen, entremos ahora para generar un token Voy a generar un token. Este es un token que se va a generar. Voy a copiar esto. Recuerda, una vez más, voy a mostrar esto. Vamos a estar usando lo básico, te mostré qué obtener el secreto del cliente y los clientes el cliente y secreto básicamente configurados dentro del servidor de aireación Aquí es donde lo encuentras, solo un repaso. Si entras aquí, comprueba la seguridad y si verificas correctamente, ves que tienes el ID de cliente, secreto de cliente por aquí, derecho. Eso es que estamos usando el método de cliente secuit basic. Y eso es exactamente lo que tenemos en calamar clen. Esto es realmente genial. Ahora lo tenemos, así que vamos a generar esto de nuevo. Esto es genial. Voy a copiar esto. Vamos a confirmar si contiene todos los automties que especificamos Debido a que revisamos correctamente estas partes, si realmente revisas estas piezas, vamos a sacar esto a colación. Revisa esta parte la serialización leer y crear vamos a mostrar que token realmente contiene esto Si comprobamos, ya ves, tenemos los clientes. Tenemos los clientes, los clientes están menos etiquetados. Esta es la prueba A que agregamos y la observancia del nombre de usuario agregamos esta. Entonces tenemos Alcance Prop 90, luego tenemos crear y estamos con impresionante. Ahora, luego busca todos los detalles. Tomemos compañía, por ejemplo, solo traemos todos los detalles R, luego vamos a la baja. Fuera de nuestra jugada esto es lo que ves por defecto. Si entras aquí y tratas de evaluar los detalles, intentemos evaluar los detalles, vamos a consultar esto evaluar los nueve. Entonces vas a off luego sacan token de Berra, luego colocas la ficha aquí. Muy bien, entonces el token está aquí, llamemos a esto.Esto es un error, veamos de dónde viene este error Porque se supone que esto realmente va a entrar. Ahora estamos colocando token de Berra. Sí, en realidad agregamos el token, y deberíamos poder llamarlo con éxito. ¿Cuál debería ser el problema? Todo bien. Déjame pasar esto y solo averiguarlo y volveré contigo. Bien. Todo bien. Me di cuenta mientras estaba copiando el token, creo que mientras copiaba el token y agregaba todo aquí, estaba escogiendo el equivocado. Si bien copio el viejo, tenía algunos lesidios. Yo sólo elijo el primer sp. Lo que tenía que hacer ahora me estoy asegurando de que todo esté despejado. Seguiré adelante y volveré a generar el token. Genera token nuevamente. Voy a copiar esta ficha. Ahora he copiado la ficha. Voy a estar seguro de que no hay nada aquí. Control A, limpia todo, ahora despeja. Entonces esto ya está adentro, entonces intentemos esto de nuevo. Impresionante. Se puede ver. Ahora podemos evaluar todas las empresas que realmente están disponibles. Como esto también está disponible, también podríamos tener ya esta configuración. Básicamente debería funcionar para todos los detalles aquí. Esto básicamente también sería capaz de recuperar esos detalles. Impresionante. Ya puedes ver que todo está autenticado, y finalmente, probemos esto. Impresionante. Esta es una mala solicitud, la identificación de empleado que estamos usando no es correcta. Así que vamos a conseguir una identificación de empleado válida. Yo sólo voy a entrar aquí. Traeré esto a colación, traeré empleado y registraré la identificación de empleado válida, al menos ves que realmente pasó. Por eso conseguimos empleado inválido. Voy a recoger la identificación del empleado y volver a TA. Cuando estás buscando lo que estamos buscando ID, este ID. Esto voy a verificar esta identificación, solo voy a darle a esto. Impresionante, para que puedas ver. Esto básicamente funciona con precisión, chicos. Ahora, siendo capaz de demostrar realmente que la mutación, la suscripción es básicamente solo probar es compañía en este momento. ¿Tenemos alguna Heather? No, no necesitamos tener brezo. Vuelve aquí, voy a hacer esto, o hacer un Bratken o agregar esto Creo que copié el equivocado, así que entremos aquí. Voy a copiar esto una vez más para P. Entonces esto está adentro. Intentemos crear. Sólo voy a crear un comping ambiguo solo para estar seguro de que las cosas están funcionando Yo sólo lo llamaré babero B 222. Entonces sólo voy a llamar a este número de LLC algo muy extraño para que podamos ver que crea, voy a dejar esto como vamos a quitarle esto. Toma mi ratón, señorita Bevins. Sólo me quito esto, y voy a añadir algunos números de palabras aquí. Vamos a darle a esto. Todo bien. Como veis esto se crea con éxito. Hemos podido demostrar que nuestro servidor de autoación ahora funciona como un Graph Q como servidor de recursos, y esto es bastante genial chicos Entremos en la aplicación y ahora configuremos todas nuestras pruebas para usar el nivel de seguridad. Los veré chicos en el siguiente video. 126. Seguridad en Graphql, parte 8: Oigan, chicos, es bueno tenerlos de vuelta. Pude mostrar para la etiqueta Mo que ahora podemos conectarnos usando un token porque ahora aplicación GraphQL no se está comportando como un servidor de recursos y es capaz de hablar con el servidor de dirección y realmente verificar el token y dar acceso a Ahora mismo, todas nuestras pruebas se van a romper ahora mismo. Intentamos poner en marcha nuestras pruebas. Todas nuestras pruebas deben estar rompiendo. Lo que voy a hacer, voy a parar esto, no configurar nada. Yo sólo voy a mi prueba mis pruebas. Son las dos pruebas que tengo. Realicemos todas las pruebas. Vamos a ejecutar todas las pruebas de ecuaciones por ejemplo. Vamos a ejecutar esto. Voy a ver qué pasa. Oh, sé que esto no va a ser bueno. Voy a ver muchas cosas rompiendo y esto se espera. Recuerden, todo, ahora mismo, esto no está asegurado, esto definitivamente debería romperse. Esto en realidad se acerca, quiero guiarte a través del paso, te veré ya ves, esto se acerca. ¿Qué ves? Algo está pasando, algo se está rompiendo. A ver. Estamos teniendo problemas con la configuración de seguridad, el marcador de posición, podemos resolver esto Todo lo que tenemos que hacer es venir a nuestra prueba y agregar aquí nuestro refresco de lugar. Recuerda el marcador de lugar, ¿es el marcador de posición de prueba? Voy a entrar aquí. Esto necesita ser capaz de averiguar dónde está esto. Solo entra aquí y agrega esto, y esto debería estar sonriendo. Realicemos de nuevo la prueba. Ejecutemos esto de nuevo y veamos que funciona. Recuerda todas nuestras pruebas usando realmente el perfil. Mira nuestra prueba. Si pudiera probarte esto. Modificamos la configuración incorrecta, ves que hay en prueba. Muy bien, genial. Se puede ver que no todo está funcionando. No todo está funcionando. se encontró un objeto de autenticación No se encontró un objeto de autenticación en el contexto de seguridad. Al parecer, no hay ningún objeto de autenticación. Esto no está autenticado. En este video todo lo que básicamente se está haciendo es generar luego la autenticación. Lo que voy a pasar por un enfoque muy sencillo que te permitirá ser capaz de igual manera. Lo primero que voy a hacer es que voy a entrar en mi carpeta de prueba y crear un paquete llamado clientes. Así clientes acádicos. Impresionante. Luego dentro de mis clientes, dentro de mis clientes. Quiero colocar a mis clientes. No quiero crearlo directamente aquí. Quiero colocarlo aquí. Vamos a crear esto de nuevo. Clientes. Este debe ser el mismo nivel que API. Muy bien, genial. Entonces dentro de este Acutic clientes config clientes. Config. Al parecer, lo que va a ser una configuración, entonces va a estar en configuración. Bastante genial. Bastante genial. Bastante genial. Ahora hemos podido hacer eso. Lo siguiente que vamos a hacer, voy a crear un Bn. Ahora voy a crear un Bin. Si eres muy consciente, con lo que vamos a estar probando hasta ahora ha sido este probador HTTP graph co. Ahora debes estar consciente de que existe una versión de cliente web para esto. Si revisas la documentación, vamos a estar apegándonos a la versión HB Client. Así HB **** versión. La versión HB Client, tiene algo que se llama HTP graph QL tester Entonces, si revisas esto, esta es una interfaz. Si revisas toda la implementación, mírala críticamente. Contamos con probador HTP Graphco. Contamos con el probador Grapadora de toma web. ¿Ves? Entonces tenemos varias variaciones. Así que quédate con el probador de cuidado HB Graph para ayudarnos a lograr esto. Todo bien. Pero dicho esto, así que sigamos adelante y luego empecemos a crear cosas. Entonces me voy a ir. Estoy frenando voy a cortarlo estando bien entonces voy a crear un HTP Graph Kyo Esto es muy chulo. Hm va a llamarlo HTTP graph quo tester. Después las líneas web. Ahora necesitamos clientes de pruebas web. Ahora, en realidad recogí esto de la documentación oficial, WebTest, clientes Bin, luego tenemos los clientes WebTest, luego bind server Nosotros tenemos esto. A qué servidor estamos vinculando así que vinculamos al servidor, servidor tendrá un Bye UL. Esto es genial porque es exactamente lo que necesitamos. Adiós ZURL entonces encabezado predeterminado. Voy a darle un encabezado por defecto, y aquí es donde las cosas se ponen interesantes. El encabezado será encabezados HTTP, encabezados CP de autorización de punto swing. Recuerda, estaremos usando el token de Berra. Voy a dejar esto fuera por ahora. Voy a dejar esto fuera a partir de ahora. Volveremos aquí, menos implementar, así que ahora vamos a devolver HTP, IP esto es punto crear esto funciona Crear. Básicamente, esto es lo que necesitamos. Ahora necesitamos entonces generar el token. ¿Cómo obtenemos el token? realmente crear algunos detalles. Yo lo haría, voy a usar un disco. Voy a usar un registro público, un registro público. El registro de números también es un DTO. También utilizamos Lumbak. Esto en realidad te daría exactamente los mismos detalles. Respuesta del token de acceso, creo que esto tiene sentido token de acceso respons. Es una clase. Es un registro, registro ¿cuáles son los parámetros que vamos a necesitar? Los parámetros necesitamos una cadena, token de acceso. Canta como ficha, ¿de acuerdo? No es necesario el tipo de token de cadena. Creo que esto es básicamente todo lo que necesitamos. No quiero agregar detalles extra que no necesito. Entonces aquí, entonces cerrarán con esto, bien. Ahora tenemos estos detalles. Ahora, cuando nuestro token de Access va a regresar, estamos seguros de que va a volver en este formato. Jason propiedad. Vamos a dejar que la propiedad JCN, JacinPperty para vincular esto para que sea un acceso bajo ScoetKen JacinPperty para vincular esto para que sea un acceso bajo ScoetKen. Verifiquemos eso. Si revisas esto, verás Acceso bajo ScoetKen y tipo de token Estas son las cosas que estamos buscando. Como UnderScoetken, como a eso se le llama token. Eso es lo que estoy colocando aquí. Por aquí, esto también, vamos a duplicar esto aquí, y esto reemplazará con el tipo de token. Vamos a obtener el tipo token. Bien, así que coloca el lucio token. Bien, terminamos con el primer paso. Ahora el siguiente paso, vamos a hacer una llamada HTTP. Lo bueno de la primavera tres es que tiene st cliente incrustado. Básicamente solo hendidura es igual que la plantilla del oeste. Paso sigue ahí, sólo voy a ser más elegante y usar st clientes. Voy a convertirlo en privado. Harás un derecho privado yo puedo ser un prius. ¿Privado? Creo que lo haremos estático. Pero, déjeme dejarlo ahora. Volveremos aquí. Volveremos aquí para arreglarlo. Como respuesta token ahora, ¿verdad? Entonces llamémoslo obtener la respuesta del token AS. No, no tomará ningún parámetro. Entonces vamos a tener un mapa de múltiples valores. Mapa de múltiples valores, sí, voy a convertirlo en un mapa multivalor vinculado. Ahora bien, ¿por qué estoy haciendo esto? Recuerde, se trata de una URL, X URL, forma de guión de guión, URL de guión codificada Para ello, para imitar esto, va a estar usando esto Así es como se puede hacer eso. Entonces entonces usas yo lo llamaré datos de formulario. A partir de datos. A partir de datos. Genial. Aquí es donde necesitamos tipo pistola. Esto coincide con las credenciales de cliente tipo armas, luego tiene alcance en la identificación. Solo estamos simulando exactamente lo mismo que está haciendo Postman Voy a hacer a partir de datos, de datos, ID de cliente. Vamos a ver esto para hacer que necesito esto? No, aguantemos. Entonces vamos a poner datos firmes del Iden punto, punto. No, no quiero que d. Entonces pongo mi alcance alcance mi alcance es ID abierto. Abrir ID. Todo bien. Se trata de chicos bastante chulos. Es bastante genial. Entonces con esto, volveré a terminar eso hasta tener s clientes. Familiarizado con st cliente como funciona el descanso, solo traiga los mejores clientes. Descansar a los clientes. Clientes. Entonces eso crea. Me gusta la línea de descanso que crea. Entonces podremos entonces absorber esto y traerlo. Después, regresa. St líneas, va a ser un post va a ser un post URI. Vas a pasar en el URI. Entonces cuerpo, cuerpo, luego cuerpo sería entonces formar el calentador. Después la cabecera y la cabecera, vamos a pasar en la cabecera. Recuerden que vamos a pars en cabecera, esta parte aquí. Mira esto. Esta parte aquí, encabezado. Esto es muy importante. Brezo, usando básico, va a ser cliens y secreto. Esto también es importante. Tienes que hacer lo mismo aquí. Heather, entonces haré HTTP. Y eso es la autorización de puntos. Entonces vamos, no hagas básico. Va a ser básico. Entonces más, van a hacer una base 64, una base 64 aquí Java, puntos, obtener codificador, luego simplemente codificar a cadena, codificar a cadena. Bien. Así que eso codifica una cadena. Déjeme tomar esto. Tengo un temporizador ahí. Eso no se nota realmente, pero voy a tomar esto. Vamos a codificar una cadena y ¿qué estamos codificando para cadena? Recuerda, en realidad estamos codificando. Baje esto, traiga su punto aquí, y terminemos con esto. Codificamos, entonces estamos pasando en este tipo, estamos pasando en los clientes. Entonces los clientes es muy importante. Chicos, es muy importante. Los clientes. Entonces además agregamos en esto porque es como hacer lo básico seguro que ya sabes. Bien, entonces los puntos obtienen bytes. ¿Todo bien? Vamos a obtener bytes. Todo bien. Entonces, si obtienes bytes, puedes ver lo que da tan directamente, tiene un codificador predeterminado codificado y los conjuntos de caracteres codificados, en realidad nos da el valor predeterminado así que no necesitamos hacer nada más Entonces esto es realmente genial. Bien, entonces ya ayudamos. Entonces tenemos que establecer el encabezado. Otro encabezado y el encabezado, necesitamos establecer el tipo de contenido. Tipo de contenido. El tipo de contenido, utilizamos la aplicación, las aplicaciones slash Pueden copiar aquí, chicos, realidad no necesitamos tranvías nada a este tipo de aquí. Este lo necesitamos. Tipo de contenido, no me permite copiar. Yo solo yo esto. Yo sólo recojo eso. Sólo recoge eso y voy a añadir esto aquí. Este video se está haciendo muy largo. Volveremos en el siguiente video para completar esto. Los veo en el siguiente video. 127. Seguridad en Graphql, parte 9: Oigan, chicos, genial tenerlos de vuelta. El video se estaba haciendo muy largo, necesito detenerlo rápidamente para que podamos proceder a partir de aquí. Todo bien. Ahora tenemos esto. Es bastante genial. Es bastante genial. Luego continuamos diciendo entonces el recuperar y recuperarlo luego recuperamos un cuerpo El cuerpo va a ser ases token dot class. Bien, así que ciérrala. Ahora bien, ¿a qué URL estamos llamando AA way? Estoy seguro de que ustedes lejos estamos llamando llamando a algo que ya saben? Entonces llamamos al HTP. Bien, HDCP, estamos llamando a un servidor de autorización más fresco Van a ser anfitriones locales. Anfitriones locales. Es 99. Ahora, ten cuidado aquí. Para slash token. Esto es exactamente lo que cording recuerda esto es oba odiando directamente. Entonces este es el Collins soviético. No pienses que Jake WKszoba Collin porque queremos hacer esto exactamente. Todo bien. Entonces, solo reemplaza esto nuevo solo para estar seguro de que no cometí ningún error. Todo bien. Entonces esto es básicamente todo lo que necesitamos. Ahora que tenemos esto, ahora tenemos a este tipo, estamos en condiciones de meter esto. Ahora tenemos un token, entonces podríamos venir aquí a decir, Asset token, obtener AS token, hacer esto, que es un tipo token, que es portador, darle un espacio, espacio, luego plus, obtener un token, Asset token. Todo bien. Esto es todo lo que tenemos que hacer. Ahora hemos creado esto rápidamente ejecutar una prueba. No voy a terminar la prueba. Sólo queremos ver si funciona. Solo queremos ver si esto realmente genera el token. Si llamamos a esto, ¿esto nos da un token que necesitamos básicamente Esa es toda la idea. Queremos estar seguros de que esto funcione con precisión. La manera de demostrar realmente que vamos a hacer esto público voy a hacerlo público, y voy a probar CLT, ¿verdad Voy a probar CLT para ver si esto funciona como debería, ¿ verdad Entonces, para simular eso, ¿cuál es la mejor manera de simular eso? Echemos un vistazo a eso. Echemos un vistazo a eso. Bien. Bien, veamos si tenemos esto. Bien. Bien. Veo lo mejor que en realidad podríamos simular esto. A ver, a ver, a ver. Podríamos probar Al desde la aplicación para ver si funciona, pero está bien poder ver si realmente podemos obtener los detalles que realmente necesitamos de aquí. Bien, así puedo crear otra clase. Yo solo creo otra clase aquí. Sólo voy a llamarlo prueba. No voy a empujar push test solo una prueba, entonces voy a llamar a este PSVM simplemente secreto esto, luego voy a mover este código, todo este código. Lo muevo aquí. Recuerden esta prueba chicos, prueba solo queremos verificar que esto está funcionando. Cuál es el problema aquí. Voy a despegar SensiBst funcionaría exactamente como queremos que elimine esto Muy bien, entonces voy a entrar aquí, Entonces haré SOUT que sería impreso, luego haré esto Dos esto es público. Sí, así que entiende esto. Eso es tipo de token. Lo siento, detén esto. Eso es corbata simbólica. A ver. Token de acceso. ¿Por qué te estás quejando? El no estático no puede ser núcleo que es muy correcto. Eso es muy correcto. A ver. ¿Cómo señalo esto en realidad? Porque esto debe ser accesible. Esto debe ser muy accesible. ¿Y si pongo aquí una estática? Una estática privada. Bien. Entonces este tipo está diciendo que no es necesario, podemos quitar la estática porque redundante para en bien, entonces puedo poner en una estática aquí. Creo que prácticamente deberías. Vamos a probar a estos chicos. Vamos a probarlo. Déjame estar seguro de que mi servidor está activo. Bien, entonces mi alteración ahorra en funcionamiento, así que lo estamos golpeando. A ver si surge. Podemos ver, somos capaces de obtener los detalles si he terminado. Esto prácticamente funciona. Entonces estamos seguros de que esto está funcionando, somos capaces de obtener los detalles. Significa que nuestra implementación funciona. Yo sólo voy a seguir adelante y eliminar esto. Yo sólo quería mostrarles que funciona. Permítanme borrar esto. Ahora esto se ha ido. Ahora estamos seguros de que esto luego inyectaría esto en el encabezado predeterminado. ¿Ese encabezado predeterminado en realidad se llama así? Todo bien. Con eso, entraremos ahora. Si ahora te metes en los pads e intentamos seguir adelante, ves que ya ve esto. Y entra de nuevo, trata de ver al ser, ya ves que encuentra este ser directamente. Por el bien de la consistencia, probablemente podría elegir esto o solo por ello solo por matemáticas un poco más. Entonces podría entrar. Prácticamente podría entrar y probablemente simplemente llamar a esto. Algunas personas no se confunden. ¿De dónde viene esto? Yo sólo podría nombrar esto. Solo voy a elegir esto para decir, Oye, quiero que uses nuestra implementación de esto. Voy a llamar a esta parte, nada cambia, así que sólo voy a encomiar esto. Sigo siendo exactamente lo mismo. No hay cambio, B es un estado. Recuerden, chicos, es un estado. Esto ya inferiría, Oye, qué bin está disponible y para usar esto Solo estoy haciendo estas dos distinciones porque si usas esto antes de implementar esto, podrías obtener algunos errores Por eso en realidad lo estoy comentando para que sepas la diferencia Voy a colocar voy a colocar lo voy a colocar para hacer aquí o más bien unas notas voy a decir esto usa esto estrictamente para su uso estrictamente antes de que se introdujera el token de acceso. Dije antes de seguridad, antes de seguridad. Antes de que se introdujera la seguridad. Todo bien. Voy a hacer lo mismo, copiar a este tipo, ¿no? Bien, ahora, chicos, tenemos todo lo que básicamente necesitamos. Ahora, hay una cosa más. Ahora bien, si nota esto, esto está tratando de llamar a este servidor bund, comuníquese este servidor de compra y luego para luego ver si realmente puede conectarse, entonces vamos a tener las cosas en funcionamiento Lo que voy a hacer, vamos a poner en marcha una prueba. Esta es la diferencia chicos, vinculándolo a un servidor, un servidor que ya está en funcionamiento. Entonces voy a poner en marcha mi aplicación, eso es una cosa que debes saber porque también hay otra manera de tener realmente esto configurado porque si golpeas esto, si haces clic en esto, ves que ahí se enlazará al servidor, eso verá bind al contexto de la aplicación por algo que ya está disponible. Entonces estoy usando bind to server, así que comencemos la aplicación. Y luego se inicia la aplicación. Recuerdo, ¿en qué se está ejecutando esto? Déjame estar seguro. Echemos un vistazo a esto. Bien, entonces esta aplicación se está ejecutando. Entonces hagamos nuestra prueba. Vamos a ejecutar esto. Vamos a ejecutar esto. Bien, entonces esto se está ejecutando, me metí en el punto principal. A ver, ¿ funciona esto? ¿Funciona esto? Entonces llamando a esto scripting, viendo, ¿se conecta? Oh, sí, conecta. Impresionante. Como puedes ver esto funciona con precisión. Te mostré antes que esto no funcionaba antes, pero ahora todo está funcionando con precisión, así que solo voy a seguir adelante y ejecutar todas las pruebas. Yo solo ejecuto toda la prueba y vamos a llegar a ver que todo está terminado con éxito. Bien, entonces, ¿cuál es el problema aquí? Vamos a confirmar. No me está permitiendo correr todo a un lado para recogerlo uno por uno. Por el perfil que establecemos, recuerda el profgizar el El perfil no pudimos establecer el perfil en esta etiqueta, solo pudimos establecer el perfil aquí. Esto estaba funcionando con precisión. Solo sigue adelante y solo ejecuta este IL. Esto realmente está funcionando y este último tipo es trabajo se introduce en token y nuestro token básicamente funciona como debería. Todo bien. Esto básicamente también debería funcionar sin ningún problema. Muy bien, chicos. Con esto, realidad hemos podido probar este extremo para terminar con otra seguridad a esto. Ahora su aplicación gráfica QL es segura. Los veo en el siguiente video. 128. Graalvm local, parte 1: Oigan, chicos, genial tenerlos de vuelta. Todo bien. En esta sección se trata de construir Gray e imagen a nivel local, Cómo construir salsa e imagen localmente, y en eso es en lo que nos concentramos en este video Todo bien. Entonces, para entrar realmente en ello, necesitamos actualizar una de nuestras dependencias para poder actualizar realmente nuestro arado de trazo de dependencia queremos tener esto realmente cableado y ¿cómo hacemos eso? Muy fácil. Cómo vamos, tenemos que ver antes que nada, ya tenemos esto, tenemos un paquete. Normalmente, lo que hacemos es simplemente hacer un paquete VN, y eso básicamente creará y básicamente creo un Jafle para ti, que luego puedes poner luego puedes luego en tu lata luego integrado en una imagen de Docker, luego usarlo para realmente hacer y eso básicamente creará y básicamente creo un Jafle para ti, que luego puedes poner luego puedes luego en tu lata luego integrado en una imagen de Docker, luego usarlo para realmente hacer algún trabajo. Eso básicamente va a funcionar. Esto va a fallar porque creo que establece el perfil, básicamente simplemente omita el paso, que estas pruebas se saltan. Voy a saltarme la prueba y esto debería poder realmente obtener los detalles, voy a obtener el archivo JR que necesitamos. Pero sin embargo, en realidad quiero seguir adelante. Se puede ver que tenemos un archivo Ji que está muy disponible que podríamos desplegar y empezar a trabajar. No obstante, quiero mostrarte la belleza de usar Graph VA. En mi curso anterior en mi primer curso, realidad mostré todo el detalle de cómo funciona eso. Básicamente podrías comprobarlo, que es el módulo de resorte, que es el módulo de resorte, uh más como si pudieras hacer una transición real de microservicio o microservicio monoli a microservicio a Tengo ese módulo de resorte. Ese es el nombre de porque Monoli al microservicio En este parque te voy a mostrar cómo usar realmente para construir realmente construir imagen de Gavier y en la que luego puedes construir, luego puedes pasar a la imagen de Docker e implementarla en un clúster de Cuperts Todo esto lo van a hacer en este curso. En primer lugar, he podido mostrarte cómo simplemente obtener el Java, solo haz NBN este es paquete VN y solo haces esta prueba de salto y obtienes todo en él Ahora para seguir adelante, me voy a mover todo el camino a mi WSL. Tengo Ubuntu instalado, que es WSL en Windows Ahora bien, ¿por qué no estoy usando Windows? La forma en que funciona GAVIN, si haces alguna investigación al respecto, descubres si usas GAVIN el sistema operativo que estás construyendo construyes una imagen Nativa para ti Si estás ejecutando en Windows para darte un EXE, estás ejecutando en Linux, en realidad te da un ejecutable. En MAC, también te da el ejecutable en el Mac lo mismo que hacemos aquí. Ahora mismo, quiero realmente construirlo en un ejecutable de Linux. Estoy utilizando, en realidad estoy utilizando, en realidad estoy utilizando huesos. Te voy a mostrar enseguida el stro de Linux que estoy usando. Entonces puedes ver exactamente cómo es, ¿verdad? Para que puedan ver, en realidad estoy usando Ubuntu. Entonces esto es lo que voy a ser. Entonces muestran, voy a conseguir una imagen de Linux. Entonces ahora para construirlo, hay algunos conjuntos de comandos que necesitamos ejecutar físicamente, y eso es lo que voy a mencionar en unos pocos. Bien, así que voy a añadir un comando. Entonces esto son comandos Pero solo di VN luego P nativo. Entonces en realidad ejecutamos esto. Esto básicamente solo funcionará. De hecho, somos capaces de w esto con precisión. Entonces el paso de saltarse, estoy diciendo corriendo paralelo Todos estos básicamente no son necesarios si no quieres agregarlo, entonces esto básicamente solo te da más seguro al azar. Pero también te saltas esto y este es el comando básico que necesitas ejecutar. Entonces si y luego omita esto. Esto lo vamos a hacer, pero esto va a funcionar ahora porque no hemos agregado algo muy crítico. Con eso, vamos a comenzar Spring Dot IO. Vamos a iniciar un punto de primavera IO para obtener realmente una imagen nativa. Así que vamos a hacer es escribir GravyN. Cuando en realidad estamos tomando Galvin, en realidad ves colocando a Maven, pones tu versión Java y colocas mi número de una versión Java, usar Java 21 22 no debería hacer ninguna diferencia porque el plugin Ahora bien, si entras aquí y te desplazas hacia abajo, esto es lo que agrega. Esto no es un punto. Esto es lo que agrega en, este plugin. Este plugin es muy esencial, ¿verdad? Entonces este plugin. Elige este plugin. Escojo este plugin y lo voy a añadir a esta parte, pero. Tienes plugins, así que voy a agregar esto aquí. Todo bien. El otro plugin que ves ya está disponible, que es el plugin spring boots moving, que era la otra opción que vimos Springbots moviendo plugin ya tenemos eso ya Ahora teniendo esto ya adentro ahora entonces haz esto para traer solo para traer este Btu. De hecho lo tenemos adentro. Esto ahora está en, solo verificas o plugin, inicia sesión. Si nos fijamos en esto, tenemos Nativo, ya tenemos Nativo aquí. Entonces puedo ejecutar esto, pero antes de hacerlo, quiero comprobarlo. Si tengo maven, recuerda, podrías usar Maven ya instalado, ya tienes maven aquí Podrías simplemente entrar y nosotros solo entramos y hacemos un MAVINNWT también funcionaría, lo que quieras usar Ahora estoy construyendo, pero no quiero construir con W. Quiero usar mi experto en sistemas. Voy a comprobar si Maven está instalado aquí. Versión. Bien, entonces tengo MVN instalado Tengo Java 22. Entonces esto es bastante genial. Básicamente todo lo que necesitamos, ¿de acuerdo? Bien, así que en realidad revisas la primera sesión, creo que hice una forma detallada de cómo configurar realmente MVN si estás usando el BSL como yo, así podrías saber cómo configurarlo totalmente Si estás usando Linux, el BSL es básicamente lo mismo Bien, entonces voy a ejecutar este comando. Todo bien. Entonces este comando va a llevar mucho tiempo, ¿verdad? Dependiendo del núcleo de un sistema, necesito mencionarlo. Lo que voy a hacer, voy a hacer una pausa. Si encuentro algún error, los usaré para mostrarte el error, luego lo arreglaré y probaré el gb ahora mismo. Voy a hacer una pausa hasta que usara imagen. Los veré en la próxima. Los veré una vez que esto esté hecho, no en el siguiente video. Los veo una vez hecho esto, ¿verdad? Todo bien. Entonces esto está hecho. Somos capaces de construir con éxito. Entonces esto es básicamente lo que parece. Si puede ver, mi procesador básicamente estaba funcionando en un nivel bajo. Así que tenía cerca de 5.79 gig disponibles. Para poder ejecutar el GAL Vamimage se podía ver cuánto tardó Tomó 25 minutos. Por lo que debes asegurarte de tener muchos recursos para ejecutar esto. Bien. Entonces, si realmente inspecciona a la derecha y va al objetivo por oder para que pueda ver que entonces tenemos el caso GaviM Entonces este es el gravimeecutable que necesitamos, ¿verdad? Entonces hagamos más vamos a darle un poco más de contexto. Yo clados. Yo haré LL Gaver Cox G gráfica Q o Gráfica Q gráfica queer Cs. Bien, para que veas que es ejecutable. Recuerda a U GO, propietario del grupo de usuarios, ¿verdad? Así ejecutable ejecutable, aecutable. Entonces antes de continuar, voy a configurar mi perfil para que sea local. Diré expot spring underscore perfil. Perfil igual a local, ¿verdad? Si entonces hago un eco, entonces hago un eco y hago un resorte, y hago primavera. Perfil. Vamos a ser fusilados ahí. Bien, entonces procede local. Todo bien. Entonces lo que voy a hacer entonces lo siguiente que voy a hacer es que voy a poner en marcha mi VM GA. Voy a poner en marcha lo que estoy diciendo GA VM. Entonces voy a poner en marcha en esto. Voy a poner en marcha este servicio. Así que asegúrate de que esté funcionando y eso debería ser accesible desde las otras guías del WSL ¿Bien? Entonces eso es en realidad si eso es lo que está sucediendo, entonces B realmente inicia la aplicación con éxito, no obtendré ningún problema de conexión a la base de datos. Entonces esto en realidad se inició. Entonces, comencemos la aplicación. Tengo que hacer es esta gráfica QL. Costo. Vamos a ponerlo en marcha. Esto debería poder escoger el perfil. Todo bien. A ver. ¿Elegimos tu perfil? Elegí el perfil, pero no pude determinar porque en realidad también estaba usando al otro tipo. Pero pude escoger este perfil y esto debería haber sido suficiente para comenzar. Toda la otra razón podría ser URR, por lo que no pudo encontrar esto No sabía cuáles usábamos en realidad. Yo estaba buscando esto, que en realidad no era jugador. Voy a ver si realmente podría ponerlo en marcha y hacer esto accesible desde aquí, ¿verdad? Todo bien. Si lo miras, creo que básicamente hemos resuelto el tema de verdad. Si miras esto, recuerda, estaremos usando Docker Compose porque estamos usando Docker Compose, como resultado, hemos estado teniendo que usar esto todo este tiempo Por eso estamos teniendo este problema y en realidad no podemos conectarlo porque no pueden encontrar una URL. Recuerda que en producción cuando construyes una imagen, Docker Compose ya no está disponible para que la uses Qué podemos hacer y cómo en realidad podemos mitigar este tema, solo vas a lo mismo, cómo hicimos esto, copiamos esto. Ahora, cópielo en su copia local esto en local. ¿Verdad? Todo bien. Entonces de esta manera, esto está entonces disponible. Entonces, una vez que es capaz de recoger realmente, bien, use Localhost 5432. ¿Bien? Entonces así es como iba a poder determinar. Entonces, si no podemos encontrar Localhost 5432, localhost, entonces significa que realmente tenemos que usar la IP Eso dice Cal. Eso es para usar la IP. Bien. Entonces con esto, los veré chicos en el siguiente video. 129. Graalvm local, parte 2: Oigan, chicos. Muy bien, genial tenerte de vuelta. Bien, así que voy a reconstruir la imagen. Voy adelante para reconstruir la imagen. Recuerda que hicimos este cambio hicimos este cambio en el último video después de hacer este cambio debido a la redacción de docker que estamos usando Así que eso no se pudo encontrar cuando la imagen fue construida realmente. Yo hice un cambio. Entonces ahora vamos a ejecutar la imagen. Entonces cuando lo ejecutamos, se te ocurre un nuevo error. Antes de ahora, ya inicié la base de datos, así que la base de datos está arriba diciendo el nuevo error y el error está diciendo esto, no se puede encontrar esto. Ahora bien, estás diciendo lo que básicamente dices. Graph QL o la imagen construye, UnitVM no sabe cómo interpretar En realidad tenemos que contarlo o registrarlo. Por eso dije registrar la clase agregando esto para la reflexión adyacente. Podrías hacer esto, hay una manera crear un guión de reflexión, configurar la clase JCN y configurarlo ahí, pero hay una manera de hacerlo programáticamente Voy a elegir el enfoque programático. Todo lo que hay que hacer, incluso para el enfoque programático, hay dos formas Lo que hay que hacer es crear la configuración o crear la clase I cred Yo lo llamaré gráfico registro QL. Llámalo de cualquier manera. Registrar. Entonces esto implementará el registro de tiempo incorrecto, tiempo incorrecto calienta, el tiempo en el registro en la configuración Esa es la configuración. Todo bien. Entonces cuando implementemos esto, esto realmente nos dará este método. ¿Puedo elegir este método y decir sugerencias punto reflexión. Registra el tipo, luego registra el tipo, para que la imagen pueda saber dónde encontrarla. Después colocamos el tipo exacto que falta, que es un UUID Si lo miras correctamente, esto se queja de UUID Voy a escoger este exacto plus. Pon esto en. Está buscando la matriz UUID ¿Está bien? UUID. Se supone que esto viene de Java UT. Digamos entradas, Java util, UUID, luego pasaré en la clase o pasaré Esto es todo lo que tengo que hacer. Esta es una forma de hacerlo. Si haces esto, si realmente lo pones de esta manera, entonces tienes que ir a tu aplicación, pero aplicación, un resorte con aplicación, luego entradas, hazlo en entradas. En las entradas pistas de tiempo de ejecución, luego agregó el registro QL gráfico, la clase de registrador QL gráfico Ahora bien, esta es una manera muy hermosa de hacerlo. Ahora bien, este es el paso uno. Si quieres hacerlo de esta manera, esto funcionaría, alternativamente. Entonces lo que voy a hacer, voy a configurar esto, limpiar esto. Alternativamente, podrías simplemente ir a este tipo que ya es cualquier clase ya tiene una configuración. Yo sólo voy a decir pregunta reflexión. Eso refleja refleja registrar la reflexión para la vinculación. Si abres esto, ves que toma clases. Entonces puedo poner en el valor, después pongo el valor, que va a ser un array, y pongo en este UID Entonces esta la clase. Entonces esto está bajo ola. Entonces, una vez que haces esto, no necesitas agregar ya no necesitas agregar las pistas de tiempo de ejecución, ¿verdad? Estas son dos formas de realmente. Voy a dejarlo adentro por el bien de referencia. Voy a dejar esto en aras de referencia. Nosotros tenemos esto. Podríamos hacer esto. Esta es una manera de hacerlo. Yo me separo. El segundo tipo es agregar el registro. Una vez que agregue el registro, entonces debe importar obligatoriamente la pista de tiempo de ejecución y agregarla Estas son dos formas de lograrlo realmente. Todo bien. Lo que voy a hacer es que voy a registrar esto. Voy a construir y volveré una vez que use la imagen para que veamos cómo resulta esto en realidad. Nos vemos una vez que se haya construido la imagen. Oigan, chicos. La imagen está hecha. He podido ver la imagen. Vamos a probar esto. Recuerda la última actualización que hicimos para verificar realmente habilitar el último error que obtuvimos para la ruta ID. Eso es exactamente esto para sacar esto a colación para mostrar exactamente lo que agregamos como repaso en unos minutos Bien, entonces le mostré a esto que esta es una alternativa. Si utilizo el patrón de registro donde implementas el registro, el agrego una pista. Pero también mostrar que podías hacer la alternativa y la alternativa era en realidad la alternativa era simplemente ir a tu gráfica cualquier clase de configuración y hacer registrar reflexión para encuadernación. Y luego colocas a cualquier clase que se esté quejando de que necesite una reflexión Solo agrégalo y eso va a estar bien. Y lo mismo que he hecho aquí. Entonces, si solo voy a ver esto ahora mismo, solo enciéndalo y veamos qué pasa. A ver. Impresionante. Se puede ver que esto construye correctamente. También un perfil realmente funciona porque en realidad hemos establecido el perfil aquí. Ahora que esto está funcionando, entonces puedes seguir adelante y probar, probar puntos finales para ver que todo está funcionando Yo sólo entraré aquí y solo llamaré a mis puntos finales y esto es 80 80 Vamos a ir a cualquier d puntos finales. Voy a ir a mi consulta básica y ellos sí obtienen todo el contenido. Al parecer, esto debería ser 500. Veamos cuál es el error. Ahora bien, este es el error y veamos cuál es el error. Vamos a verlo correctamente. Yo digo, no se pudo decodificar JWT, ¿verdad? Debido a que no hemos iniciado el servidor JWT, estoy seguro de que entiendes la razón por la Entonces es bueno que podamos ver ese error. Entonces, vamos a traer esto. Vamos a traerlo. De hecho voy a poner en marcha mi servidor. Entonces este es el servidor de aquí mismo. Entonces, pongamos en marcha el servidor de autorización. Y eso viene Impresionante. Eso ya está arriba. Ahora, volvamos a ejecutar esto. Creo que ya tenemos un token incrustado. El token sigue siendo laxivo que debería funcionar . Si no, no va a funcionar. Bien, hagámoslo. Bien, así que seguimos obteniendo el mismo error y vamos a confirmar cuál es el error. Bajamos. No se pudo recuperar los JWK esta bien, solo veamos la hora El ve bien. No se pudo recuperar JWK porque conexión se niega, HP localiza Entonces la idea detrás de esto es que esto podría estar buscando recordar, estoy usando WSL Entonces esto podría ser potencialmente un problema porque está tratando ver dónde localizarlo desde su incapacidad de encontrarlo realmente. Entonces, la alternativa que podríamos usar la alternativa que podríamos usar es ejecutar realmente este servicio directamente dentro de esta parte también. Entonces lo ve como un anfitrión local. ¿Bien? Entonces lo que voy a hacer, voy a detener esto. Voy a entrar aquí, ¿verdad? Voy a crear este pad, luego navegaré por estos pads en los proyectos, recortaré FNT luego navegaré por esa parte y podremos iniciarlo realmente Por lo que este barco se pondrá en marcha en este WSL en particular, y debería poder localizarlo potencialmente Todo bien. Con eso, te veré en el siguiente video. 130. Graalvm local, parte 3: Oigan, chicos. una cabeza para hacer exactamente lo que acabo de decir navego hasta la carpeta donde esto realmente se está ejecutando desde mi WSL, y realmente pude ejecutar esto Si te mostrara, estos son los caminos donde está mi proyecto, estos caminos acabo de ejecutar las botas de guion de primavera Mving y acabo de sacar esto directamente a colación Voy a permitir que esto corra y ya lo verás subir. Mientras se acerca esto, entonces sólo prepararé a mi cartero para obtener la ficha Conseguiré que mi cartero consiga la ficha. Así es como logramos el token. Entonces voy a llamar a esto. Asegurémonos de que esté arriba. Se puede ver que está arriba. Llamemos al token. Podemos obtener la ficha. Voy a recoger esta ficha. Voy a ir a mi gráfica QL, después voy a los OT y voy a cambiar esto Recuerda, tienes que hacer Control A, quitar todo lo demás. Mi el primer problema que tengo agregando esto, vamos a ejecutar esto de nuevo. Impresionante. Se puede ver que tengo esto funcionando en una imagen nativa. Es una imagen nativa y esto funciona con precisión. Esto funciona con precisión. Verán, esta fue la última llamada que se hizo a la base de datos, y en realidad pude simular esto localmente. Bien, en el futuro, lo que vamos a hacer ahora mismo es que en realidad voy a ir entonces por un camino de CICD Para poder realmente traer esto. Mira cómo configuras, estás usando la acción Git para Github o Gitlab Sólo voy a pasar por un proceso. Ahora, todo lo que necesita hacer es comprender el proceso que pueda simplemente replicar esto en su entorno Después docorizaré la imagen y empujaré la imagen a Perdón por Docker Hub. Luego sacamos de Docker Hub y básicamente lo ejecutamos en una combinación de escritorio Docker local Entonces ese es el plan en el futuro. Todo bien. Entonces, para envolver rápidamente este video antes de que terminemos este video, entraré rápidamente aquí y luego agregaré los detalles que necesitamos para poder mostrarnos si es para la verificación de vivacidad y la verificación de preparación que es muy necesaria, entremos y realmente hagamos eso En realidad estoy aquí, así que en realidad estoy aquí. Lo que voy a hacer, voy a añadir eso. También lo siguiente que vamos a agregar, recuerda, vamos a ser dueños de esto localmente Si vas a realmente entonces mudarte a Cuberti estar en cosas como Lo que he hecho es que ya he seguido adelante para agregar algunos detalles en. Lo que voy a hacer es que vamos a traer esto uno por uno. Eso lo he escrito en alguna parte, así que solo trae esto. Pero antes de traerlo, veremos que esto se quejará forma natural. Esto se quejará. Y la razón por la que esto no va a funcionar es porque no tenemos nada que se llame actuador. Entonces para que esto funcione, se debe incluir una dependencia llamada actuador. El actuador es lo que realmente proporciona la verificación de vivacidad y la verificación de preparación , el popó de vivacidad y el GuidInssSpoop Entonces hago actuador. Así que también podrías buscar esto en stardospring dot IO y esto estará disponible. Entonces voy a hacer esto. Esto está bien. La dependencia se está cargando. Si revisas dependencias, está resolviendo. Estoy viendo ahora se ha resuelto. Ahora si revisas mirando esto desde aquí, verás que ahora tenemos actuador. Se puede ver que el actuador ya está ahí. Ahora volvamos a esta configuración. Se puede ver esto automáticamente solo resolver diciendo, Oye, ahora entiendo lo que esto significa porque proteicamos la aleta adecuada. Ahora voy a replicar esto y voy a llamar a este Docker, Docker Este es el que usaremos para Cuberttis podría igual que ahora hacemos todo Ahora que tenemos esto, hay que cambiar algunas cosas. Nuestro nombre de usuario podría cambiar, así que voy a llamar al nombre de usuario. Voy a llamarlo nombre de usuario. Entonces para la contraseña, llamémosla contraseña. Vamos a mantenerlo así que digamos DB nombre de usuario, contraseña de DB, creo que eso va a ser mejor. Ahora bien, este host local ya no será publicación local porque probablemente esté usando alguna IP. Llamaré a este anfitrión y lo llamaré caliente Bien, entonces llamaré a este nombre db basado en el nombre que realmente creamos. Voy a llamar a este nombre db. Todo bien. Entonces esto es genial. Ahora para esto, esto también podría cambiar potencialmente. Voy a segar una propiedad aquí, en caso de que necesitemos cambiar esto, llamaré a esto llamaré a este servidor de puntaje de nutria , host de subrayado Tuner score server underscore Host, entonces también podemos mantener un 099 porque probablemente vamos a reportarlo en un local, pero solo voy a establecer esto por conveniencia, di ts underscore server underscore pots Todo bien. Entonces esto se mantendrá. Esto no va a cambiar. Bien, así que básicamente tenemos todo lo que necesitamos. Ahora lo siguiente es, podrías estar pensando que no quieres exponer todo esto y ¿qué estás pensando en exponer? También podrías exponer cosas como la salud, ¿verdad? Porque en el momento en que haces estrella, estás exponiendo todo lo disponible. Para el propósito de esto, solo voy a probar de esta manera para que ustedes realmente puedan hacer lo que quieran poner en lo que es lo mejor que quieran agregar. Pero ahora mismo, todo lo que solo agregaría es esto. Voy a darle un default, voy a decir un traidor expuesto, subrayar los puntos finales Puntos finales. Entonces le voy a dar un defecto de salud. Le voy a dar un defecto de salud. Recuerda, todo lo que se supone que valor separado por comas si tienes más de uno Entonces lo dejaré como cierto porque estos siempre son requeridos. Así es como habilitas tu sonda y así como habilitas tu anterior. No debería ser específico. Básicamente ahora tenemos todo lo que necesitamos. Ahora, voy a revisar esta escena ahora mismo. Consulta esta escena ahora mismo. Entonces voy a registrarlo. Para recordarte también, he estado registrando todo en GithHub, lo puedes encontrar en los números en Fascod voy a llamar a esto Building grav EM localmente Bien, entonces voy a copiar esto. Voy a checar esto. Entonces voy a llamar a esto. ver si aquí todo está bien. Sí, una está bien. Por lo que se compromete EM dos cláusulas. Oh, escribí esto erróneamente, así que déjame ajustar esto commits, dash dash, dash, amend Para que pueda enmendar en el sc subir. Solo necesito un poco de nt. Piensa que esto no es estar adentro o necesito salir. Aclaremos esto primero antes de Clare. Esto en realidad se le ocurriría de inmediato. Entonces esto va hasta la cima y no quiero esto. ¿Cómo hago esto? Puedo hacer esto en mi terminal ya que esta terminal no está funcionando como espero, ¿verdad? Déjame ver cuando haga esto. No me está dando lo que necesito. Entonces sigo adelante y reviso esto desde la terminal. Voy a hacer esto en mi terminal. Eso es una terminal de Windows. Voy a entrar aquí, ahora entrar en las partes y sólo voy a abrir mi terminal desde ahí. Me comprometo enmendar. Bien, así que esto me da lo que quiero. Entonces el código es L correcto. Entonces esto está bien. Bien, así que ya está hecho. Entonces iré a Github y solo cambiaré el nombre correctamente. Entonces el nombre, voy a este nombre así que es correcto el error? A. W esto hecho, puedo empujar. Cuando empuje, verás que esto realmente entra y cierra esto. Está listo nuestro camino. A Esto es genial, chicos. Cuando volvamos en el siguiente video, quiero empezar a hablar o construir todo lo relacionado con UberTSF nuestro pipeline CICD Bien chicos. Los veo en el siguiente video. 131. Actuador local de dockerfile en graalvm parte 4: Oigan, chicos, genial tenerlos de vuelta. Todo bien. Entonces, en el último video, podemos agregar realmente el Dockerfile, ¿ Entonces podemos agregar el perfil, ¿verdad? Perfil de Docker ahora para que podamos cambiar realmente el perfil de local a Docker Y de esta manera tenemos algo que se ha establecido dinámicamente para que podamos reemplazarlos, y esto funcionaría para nosotros como un rodaje en producción o cuando en realidad estamos construyendo una imagen cubana Ahora, también he seguido adelante para luego agregar Dokofle. Pero antes de explicar el Dokofle, estoy seguro de que tienes curiosidad por saber cómo funciona el chequeo de vivacidad Debido a que estamos llamando HTP host local 80 80 GraphQL ¿Vamos a decir gráfica Q Atl Livelines? No. Eso es lo que vamos a hacer. Entonces, para poder demostrar esto más , voy a poner en marcha esto. Así que vamos a poner en marcha nuestra base de datos. Déjame que se inicie nuestra base de datos. Bien, entonces estamos listos. Entonces, pongamos en marcha la aplicación. Comencemos con la aplicación. Lo bueno o lo maravilloso que han hecho los chicos de primavera es que no colocaron el actuador en la trayectoria de GFL Todavía está disponible en la ruta HTTP, tal como has sabido que es. Eso es exactamente lo que quiero mostrarles ahora mismo. Cuando realmente entramos aquí y hacemos un HTTP, host local. Anfitrión local, 88 actuador HelT y vivacidad, ¿verdad? Bien, ¿qué habilitaste? ¿Qué parte habilitaste realmente esto no arrancó? Lo siento, no me di cuenta de esto. No me puse en marcha porque A está en uso, sé por qué. La razón es porque en realidad tenemos esto funcionando aquí. Yo apagué esto y también lo apagué. Apenas desde nuestra última prueba, en realidad no cerré la aplicación ejecutándose desde IWSL Volvamos a poner en marcha la aplicación, ¿verdad? Eso habría llenado las macetas se completa. Voy a esperar a que esté seguro de que comenzó correctamente antes de seguir adelante. Fresco. Ahora, se puede ver que ahora tenemos una parte de actuador. Verá que el actuador ya está disponible. Si ahora volvemos a los endpoints que teníamos antes, simplemente hagamos clic en Enter Impresionante. S, esto es para arriba. Si también cambias esto a preparación, Awesome. ¿Ves que esto es? Y estas son las piezas que se requieren en el archivo de implementación de Kubernetis, y eso es exactamente lo que usaremos Pensé que básicamente debería mencionar esto ahora porque es muy importante. Bien, muy, muy importante saber realmente. Pero cuando configuramos nuestro archivo Kubernetis, nuestro archivo de implementación de Kubernetes, sabrás exactamente cómo funciona esto Bien, así que pasemos al Dokofle. Bien. Entonces desde nuestro despliegue para ser un poco diferente del tradicional Dokofle local, es por eso que elegí explicar Ahora, GALVM ya proporcionó una imagen base que podrías usar. Que es de la comunidad JDK. Se llama Gravim. Este es el camino aquí. El lugar JDK comunidad, entonces esto. Voy a agregar realmente la ruta y hacer que la ruta esté disponible en las notas. De hecho se podía ver para el Docker donde se puede encontrar esto Entonces si uso Java 23, cámbielo a Java 23. En Java 22, ahora necesitas ejecutar todo esto, todos estos luego se instalarían en la imagen en todos los componentes o se requieren todas las bibliotecas para la imagen nativa se construya o la imagen nativa a la derecha. Después de lo cual luego cambio de directorio. Estoy usando este directorio de trabajo. Estoy copiando lo que esté en el blanco. Recuerda lo que hay en el objetivo que iniciamos qué gráfica QL porque Si realmente lo notaste, lo último que realmente mencionamos, donde miramos esto, esta parte aquí. Déjame navegar. Esta parte aquí, si haces un LS. Esta fue la mesa de exec que en realidad revisamos. Si haces L L, GraphQL, Bien, así puedes ver que esto fue ejecutivo con Eso fue lo que pude saber esto es esto y voy a renombrarlo app. Entonces estoy escogiendo una versión delgada de Debian, que es más como un Linux y una distribución Entonces cambio los caminos del dictorio de trabajo a esto. Esto es solo yo solo colocando mi nombre como desarrollador, luego estoy exponiendo ATS luego estoy escogiendo de esta compilación. Lo que tenemos aquí, lo que copiamos aquí de esta compilación, y estoy copiando desde una aplicación de barras base OPT, y estoy copiando en esta aplicación QL de gráfico OPT Entonces solo estoy ejecutando esto directamente y esto básicamente funciona. Recuerda que ya estamos en esta parte, así que esto estará disponible en esta para que solo pueda ejecutar esto directamente trabajo. Así es como construyes tu archivo Doc, y esto es bastante increíble para nosotros básicamente usarlo. Dicho esto, cuando esté listo para saltar a un CRCD donde luego definimos nuestro flujo de trabajo para Github y luego vemos todo la transición Va a ser una sesión interesante. Espero verte en el siguiente video. 132. Configuración de escritorio en Docker en Kubernetes: Aquí dentro. Todo bien. Entonces solo escribe Doa Dektop en Google, luego solo entra Hacer parada en cubierta. Entonces, si lo miras detenidamente, todo está disponible para ti, ¿verdad? Entonces tienes para Mac, tienes para Linux, y tienes vertical Lmazin Windows, Entonces Mac tenemos el chip Apple Chip Intel. Tenemos el chip Intel de Apple Chip. Entonces del tipo Apple Chip empiezas a hablar de los dos y los me gusta, ¿verdad Entonces todo ha sido contabilizado. Entonces esto lo puedes usar. Ahora bien, ya que si conoces MAC, bueno, si estás usando MAC, estarías de acuerdo conmigo en que MAC ya tiene un kernel Linux, ¿verdad? Es un kernel de Linux. Entonces no hay necesidad de un WSL, porque eso es justo antes de Windows Eso se llama sistema Windows, Linux. Entonces por eso no necesitas eso. Pero para Linux también, Linux es simplemente sencillo, así que puedes instalarlo directamente y tener un escritorio Docker Spring up. Entonces tal vez no tengas necesidad de lo que voy a decir ahora, ¿verdad? Pero sin embargo, así es como instalar. Para que puedan seguir adelante, chicos, instalar el escritorio Docker. Una vez que lo tengas funcionando, entonces puedes seguirme. Puedes saltarte lo que voy a decir ahora para aquellos que no están usando Windows, pero también es un buen conocimiento. Creo que ningún conocimiento se desperdicia. Así que solo puedes quedarte conmigo y llegar a ver lo que voy a explicar. Bien, para usuarios de Windows. Muy bien, para los usuarios de Windows, siempre es recomendable que tengas un WSL, como mencioné, tengas un WSL Entonces cuando tienes un WSL, puedes integrarlo directamente, ¿verdad Eso se puede integrar directamente. Si en realidad revisas esto, vamos solo si revisas bajo recursos para usuarios de Windows, ves la integración WSL Si has habilitado Ws lo encuentras automáticamente porque una vez que realmente instalas WSL, una vez habilitas WSL para Windows, Probablemente mencioné que el WS para una posterior compilación de Windows diez y disponible para Windows 11. Creo que eso es realmente clave. Tendrías que instalar una distro Linux, ¿verdad? Soy gran fan de Ubuntu. Rara vez uso Santos Santos, y creo que necesito tener pla Fedora, pero soy un gran fan de Ubuntu, Entonces el subsistema lineal, lo que uses los Linux Distros simplemente aparecerá automáticamente, luego podrás integrar ambos Al hacer clic en este lugar aquí bajo recursos, la integración BSL, lo tienes. Pero si no has instalado WSL, eso también está bien. Simplemente puedes usarlo directamente. Ahora, lo que me lleva al punto que estoy a punto de compartir ahora mismo. Chicos, por favor presten toda la atención, enrollen esto y escuchen de nuevo porque esto podría ser un desider clave para que los usuarios de Windows puedan usar Docker Dktop Docker DKTopKupertis Esto es muy muy clave. Ahora lo que estoy a punto de sacar es si realmente revisas cuidadosamente, ¿verdad? Uh, vamos a los límites. Quiero ver exactamente dónde está eso. Vamos a ir. Bien. Ahora, sí, vemos bajo recursos, ¿no? En el momento en que estés usando WSL, es recomendable, como puedes ver aquí Está utilizando WSL dos. Por lo que los límites de recursos son administrados por Windows. Esto es muy clave, ¿verdad? Si no estás usando WSL dos, puedes asignar la RAM Quieres que tu motor Docker se use automáticamente, así que será una memoria compartida compartida entre tu motor Docker y Cubants Entonces, por favor, mantén la misma mente, ¿ verdad? Por favor, mantén la misma mente. Así que en realidad puedes tener esto compartido. Y a otros chicos también puedes escuchar esto, ¿verdad? Esto también es clave. Entonces puedes tener esto realmente compartido, ¿verdad? Pero sin embargo, si estás usando WSL dos, necesitas tener un archivo llamado WSL config que puntee WSL config, y deberías colocarlo debajo Debería colocarlo bajo tu camino. Solo te mostraré exactamente dónde está esto en mi sistema Window. Entonces solo trae esto a colación. Entonces voy a compartir esto también en los resultados, pero también quiero que ustedes lo tengan. Entonces este debería el archivo WSL dos debe estar bajo una ruta. Para aquellos que usan Windows. Simplemente voy a copiar mi camino para que podamos tener una mejor vista. Entonces deberías encontrar el archivo. Entonces, si puedes ver esto, estoy seguro que puedes ver esto. Básicamente deberías ser usuarios Under C, tu nombre de usuario o nombre de usuario tiene un nombre de usuario, el nombre de usuario de tu sistema, al parecer tienes un usuario varios o el nombre de usuario chico realmente estás haciendo todas tus operaciones. Los usuarios de C, luego el nombre de usuario, luego recortan el WSL dos, SL configura Básicamente, hay que colocar el archivo aquí. El archivo tiene que existir directamente debajo de tu usuario C mi nombre de usuario, el nombre de usuario que uso es solo mi apodo. Entonces llamo a Z, Así que llama a Zequz. Entonces colocas esto debajo. Digamos que mi nombre de usuario es Eco Z, C usa Zico Z, luego coloco el Archivo directamente debajo, ¿verdad Coloca el Archivo directamente debajo. Es muy clave para nosotros notar que es bastante importante, ¿verdad? Esto es bastante importante. Todo esto es bastante importante. Lo siguiente que voy a hacer, voy a estar mostrando cómo debería usar la herramienta WSL Esta es la configuración básica debería compartirlo también. Así es como deberíamos vernos, ¿verdad? Así es como debería verse. Entonces lo que quieres tener es lo que quieres tener, así que si lo miras detenidamente, deberías tener esto para que veas este es mi nombre de usuario, Zicos, ¿verdad Esto es lo que uso en mi sistema local. Entonces deberías tener WSL dos. Debe ser la cabeza tal y como está. Se asigna el pase en la nota que desea asignar. Te recomiendo darle un archivo de intercambio. Entonces tienes una loca que se reenvía, es verdad, entonces esto es más como la configuración básica que puedes usar, ¿verdad? Para aquellos que usan WSL dos, en realidad compartiría un enlace también Voy a compartir un enlace para que ustedes vean exactamente cómo está configurado esto. Pero esta es mi configuración básica, que también puedes usar. Ahora bien, tal vez te preguntes por qué aumento esto a ocho gig. Anteriormente estaba usando Six Gig. Ahora es por eso que mencioné es muy importante. Podrías poner en marcha ubertis en tu Docker y puede que no se encienda para los usuarios de Windows, ¿ O para cualquier otro usuario del sistema Pote. Necesitas aumentar el recurso porque tengo que averiguar Docker en realidad toma mucho espacio Siempre recomiendo 4-6 gig para motor Docker funcione realmente con todos los componentes Entonces Kubernets en sí mismo un clúster de un solo nodo debería recibir al menos dos gig Si quieres ejecutar varios clústeres de nodos para aquellos a los que quiero ir a producción, un clúster de un solo nodo debería tomar dos gig dependiendo del recurso que quieras ejecutar en un solo así que es por eso que agregué dos gig más Entonces mi memoria para que sea capaz de hacer realmente lo que quería hacer. Entonces el archivo swap, básicamente significa que la cantidad del mismo tiene este espacio extra que has estado usando en tus discos duros locales SSD o HDD, ¿verdad? Entonces una vez que la memoria está llena o una vez es así que básicamente es un ocho. El archivo de intercambio es básicamente un ocho a esto. Entonces siempre te recomiendo darle algo muy, muy tangible. Ambinación solo usa el mismo len, el mismo tamaño, ¿verdad? Solo una recomendación, pero en realidad puedes ajustar a medida que usas Entonces esta parte es muy importante, chicos. Eso es lo que me estoy tomando mi tiempo para explicar. Que ustedes puedan saber exactamente cómo trabajar con esto, verdad? Esto es muy clave. Entonces se llega a entender y saber para configurar realmente esto. Para usuarios que no son de Windows, por favor, ten en cuenta, en realidad ves dónde puedes asignar la cantidad de ram. Cuatro gig está bien, o puedes aumentar a seis gig si estás ejecutando el ubertis local, si ya estás usando cuatro gig, por favor agrega dos conciertos adicionales que lo harían lo contrario, podría estar bien solo sigue tratando de comenzar pero no es viernes y no hay muchos recursos y es posible que ni siquiera puedas depurar. Eso es algo gracioso que podría no ser capaz de depurar. Excepto que deberia ir a la Kubernetis y tu Esto no muestra el registro directamente, probablemente no he explorado lo suficiente, pero no creo que muestre el registro, lo que me enteré es solo darle r adicional y estas listo Esto es lo que he hecho en mi sistema local, y esto es increíble. Esto es increíble. De hecho, los dos he configurado. El siguiente paso, exploramos algunas funcionalidades básicas de ubertis antes de comenzar a avanzar hasta que implementemos nuestra aplicación en el clúster de Kubernetis Los veo en el siguiente video. 133. Kubernetes Comienza a usar Kubernetes: Oigan, chicos, Z aquí. Bien, se supone que este es un video relativamente corto, ¿verdad? Bien, en el último video que recomendé para usuarios de Windows skip deberías ver encendido mientras que otros usuarios realmente pueden omitir como otros usuarios del sistema operativo podrían omitir. Pero yo recomendaría una vez más, por favor, chicos, ver el DA ¿verdad? Mira los videos de DA. Porque mencioné algunas cosas clave podría ser un deseo clave para que puedas poner en marcha tus uberts locales, ¿verdad Entonces, por favor, mira eso. Bien, así que he seguido adelante para poner en marcha mis Cuberencs locales porque creo que no me gustaría esperar no quiero esperar tres, 5 minutos, Entonces solo necesitas venir a la sección Cubernts, podemos habilitarlo, luego ponerlo en marcha, ¿verdad Sólo ponerla en marcha. Entonces solo aplica y reinicia o simplemente arrancarlo y eso debería actuul hacer qué? Bien, así que solo ponlo en marcha. Entonces, si estás encontrando dificultad y no viene como mencioné antes, esto es muy clave amablemente aumenta tu carnero, agrega dos gig más a ello, ¿verdad Dependiendo de la cantidad local de ron que tengas. Estoy ejecutando un 32 gig 32 gig Ram, y si esos dos gigramm significa Por lo que te aconsejo encarecidamente que aumentes tu Ram. Justo lo que sea que estés usando, cuatro gig siempre es suficiente para ejecutar coberti locales, pero a veces arrastra Entonces si tienes suficiente ron, por favor aumenta tus seis. Si no lo haces cuatro está bien. Entonces si quieres correr cobant por favor agrega dos. Entonces lo que suelo hacer para que esto funcione, bien, es que intento en lo posible matar a mis pestañas cromadas. Eliminar algunos de los detalles que no estoy usando luego iniciarlo, así podré utilizar todo mi sistema. Eso es lo que trato de hacer. Adelante y haz lo mismo. Habilita cobnits y además habilitarlo, dar o tomar, no me equivoco 3-5 minutos Diez a 5 minutos y también depende de tu ancho de banda porque sé que una vez que estás habilitando combinado, extrae algunos recursos a tu sistema local para poder iniciarlo. Podría no ser exacto al decir de diez a 5 minutos porque su ancho de banda podría ser mayor o menor que el mío, ¿verdad? Entonces, si estás usando un superior, probablemente solo comenzará mucho más rápido, ¿verdad? Usando low, en realidad debería hacerlo. Probablemente solo pueda mirar mi ancho de banda ahora mismo para ver exactamente en qué me estoy ejecutando, para poder darles información precisa chicos para que puedan usar para descifrar Bien, entonces estoy corriendo estoy corriendo 40-40 a 50 NPS. Tengo 40-50 MBPS. Acabo de revisar ahora mismo mi otra pantalla. Entonces, si estás usando más alto, entonces probablemente deberías ser algo menor. Pero así que por favor ten esto en mente. Ahora está funcionando si sabes que tienes buen ancho de banda y ahora está funcionando más de cinco, 6 minutos, probablemente en relación con mi ancho de banda, podrías considerar incrementar tu carrera, luego inténtalo de nuevo. Una vez que lo hayas hecho y lo comiences, eres lo suficientemente bueno para venir conmigo en el siguiente video. Una cosa más, chicos, recuerden que pueden dejar caer un mensaje en la sección de comentarios sobre la pregunta y las respuestas y miro si están teniendo dificultades para comenzar esto, entonces puedo seguir adelante. Ahora bien, si en realidad estás familiarizado con otros servicios de Kuberneti y quieres hacerlo, por favor, También puedes usar MiniQu mini Cube también está disponible, solo decidí usar el Cadexel porque creo que todos pueden seguir fácilmente y dejar tus preguntas, y probablemente solo voy a seguir y ver cómo puedo ayudar Sinceramente espero que uno de ustedes sea capaz de poner en marcha esto. De hecho, haría que todo estuviera más emocionado. Los veré chicos en el siguiente video. Ahora saltemos para comenzar a explorar algunos detalles centrales de Cubertis Los veo en el siguiente video 134. Instala el cliente kubectl en Kubernetes: Bien, chicos, gracias por volver conmigo. Gracias por volver conmigo, y estoy emocionado, creo, como ustedes, para que podamos explorar esto. Bien, entonces ya hemos perforado suficiente en Intellij. Sé que algunos podrían estar diciendo, ¿Va a ejecutar los comandos directamente? Oh, claro, puedo hacer eso porque aquí es una terminal. Entonces puedes usar cualquier terminal de tu elección, ¿verdad? Cualquier terminal de su elección. Pero sólo para que sea más genérico, ¿verdad? Voy a levantar mi caparazón de poder. Voy a sacar mi pastilla. Si estás usando. También puedes ejecutar esto en GISBas Git Bash, sacar una línea de comandos y hagamos las cosas Este es mi sistema local, puedes ver, C usa porque ayudas a esto. Simplemente dejo este Ce como ganga para que podamos ver que esto está funcionando, pero en realidad podemos cerrarlo después de un tiempo. Creo que sólo podemos comenzar, bien. Entonces una vez que hayas podido instalar ese el siguiente punto, lo siguiente que probablemente necesites hacer, necesitas instalar Cube koto, Cube Koto Se llama cubo. Koto, ¿verdad? Necesitas instalar qcoto. Ahora, para usuarios de Windows y para usuario de Linux, si escribe qcoswe puedes ver que tengo acceso porque lo he instalado Así es como interactúas con tu componente. El sistema Kuber local o cualquier otro cobonancs por ahí. Solo necesitas conectarte realmente con el recurso de escritura. Les mostraré chicos cómo conectarse con la fuente de escritura. Entonces creo que el siguiente paso aquí es mostrarles cómo conectarse realmente para instalar Qutu Simplemente dejaré caer un enlace , traeré el sitio ahora y les mostraré un enlace ahora para instalar QkoSwi porque esto es muy clave antes de que puedan continuar. Bien, así que esto es, ¿verdad? Esto es. Como uno podría preguntarme, ¿cómo llegué hasta aquí? Yo solo hago búsqueda aleatoria como para instalar ganado cachorro en 12 en Windows Solo elige tu elección. Después elige la sección Kuberneti. Al parecer, en esto está Kubernetis. Esta es la documentación oficial, por lo que te dicen cómo instalarla. Entonces así es como configurarlo. Si estás usando Linux, así es como hacerlo. Entonces solo sigue este paso, sigue este paso. Por favor, lea atentamente, ¿verdad? No hay prisa. Lea atentamente. Creo que hay tres formas si quieres instalar usando una llamada no usas el paquete nativo ni ninguna otra administración de paquetes, ¿verdad? Tengo tarjetas Q ambas en mi subsistema Windows. Ese es el subsistema Linux y mi Windows normal, ¿verdad? Entonces soy un comandante habitual de Windows, así que es una instalación diferente. Así que solo les estoy enseñando a ustedes cómo hacerlo en realidad. Entonces esto es para que Linux simplemente lo atraviese. Es muy directo. Es lo que es el nombre ahora? Es un proceso muy sencillo. Entonces así es como hacerlo. Entonces estas son las 33 formas de instalar. Hay tres formas. Así que no corras todo. Solo elige de una manera y solo guarda. Para Mac, Mac usa. Entonces, para el usuario de Mac, así es exactamente como lo haces. Entonces, para instalar en Mac, ya ves, también hay varias formas. Te instalas usando coral o puedo usar el hombre, ¿verdad? Macetas Homebrew o Mac. Entonces, lo que sea que utilices. Entonces por favor notas dulces esta sección. ¿Ves? Esto es para Intel y esto para Apple. ¿Verdad? Ese es el dos, el dos chip y Lausi Intel, usa esto, ¿verdad? Así que por favor voy a hacer eso. Debería usarlo Homebrew Prepara, usa el Homebrew dictly deberías estar bien. Yo brew debería ser un comando muy directo, así que no es difícil muy sencillo. Apenas tres comandos y cuatro. Claro. Después para Mac para McPots y todo Bueno, si eres como yo, soy un ingeniero muy curioso, y me gusta echarle un vistazo a todo. Pero para este curso, solo elige uno en el puesto porque sé que a veces cuando obtienes podrías usar algún sistema que quizás quieras hacer y no tienes acceso a usar código directamente por alguna extraña razón. Si no tienes acceso a escoger lo que funcione. Entonces pasemos a Windows. Bien, entonces hay dos formas de instalar en Windows. En realidad puedes usar curl también, o usar Chocolate Chocolatey Por favor, siga paso a paso, ¿verdad? Yo siempre diría, siempre recomiendo usar la última versión, ¿verdad? Como se puede ver, dice, por ejemplo, tarjeta 130 se comunica con una a 29130 y 131 Placa de control. ¿Qué es el plan Control? placa de control es básicamente el nodo en un clúster de Kubernetis que administra otros nodos Ese es el maestro y lo que ustedes llamarían nodo maestro, ¿verdad? Por lo que debes asegurarte de instalar el último. Dice 130 funcionaría para esto. Simplemente quiero decir si tuviera que revisar mi cúmulo de ubertis. Reviso mi cúmulo de ubertis. Estoy ejecutando esto es Cube Kat, cubo en, tuve que quitarme esto. Si tuviera que pensar en Docker desktop, ya ves, mi ubernis se está ejecutando en uno o 292, uno o 2902 Intenta hacer coincidir tu cube kat con la versión que estás viendo aquí. Intenta igualarlo. Esto jugará un papel importante para ti, ¿verdad? Porque si estás usando una versión mucho menor, podría ser otra razón por la que no funcionará. Necesito explicar esto de verdad. Para algunas personas, lo que podrías experimentar prácticas. Para aquellos que ya tienen cosechadoras he estado usando durante un par de tal vez uno, dos, tres años y tienes una manera mayor mucho mayor en los clientes, y ahora has podido hacer escritorio de auto y decir en uno o 29 y ahora estás en inversión, digamos 12, cuatro, tienes problemas Te explicaré por qué tienes problema. Así es principalmente como funciona. Déjame solo sacar a colación la parte de las notas. Así es principalmente como funciona. Tenemos QC dos, igual que en la documentación. Tenemos Q dos, uno, 24, ¿verdad? Un punto dos, cuatro. nodo Cubats puedes interactuar que será uno.23 Uno do 24 y 125. Si observa valores incrementales, una versión anterior, la versión exacta y una versión superior. Me olvido de la otra subversión, como el punto algo, o tal vez punto un punto dos. Olvídate de eso. Solo mira estas partes, ¿verdad? Entonces ves una versión anterior, una versión después y una versión exacta. Entonces eso es lo que explican en la documentación diciendo si usas 1230, básicamente podemos interactuar con uno do 29, una versión anterior, uno hacer 30, la versión exacta, vienes la versión del resultado, luego 131 Chicos, esto es muy, muy importante. Muy importante. Por favor, tenga en cuenta la versión coberts que está utilizando O si incluso estás usando otro cobart di que tienes acceso a un proveedor en la nube, tienes cobants funcionando, por favor asegúrate siempre de revisar tu versión Esto siempre es un visi cobarts a los que puedes acceder con el corte de copa que mencioné no saben lo que está mal, por favor asegúrate de checar Entonces como pueden ver, ¿qué versión estoy ejecutando? A ver si confirmar. ¿Qué versión estoy ejecutando? Uh creo que es ese Vashon Micro Creo que es el DashonV. Déjame estar seguro. Windows, Windows Comprobemos clientes hon. Vamos a ver esto. Bien, así puedo ver que me estoy ejecutando en 12921 do 29 punto dos Entonces significa que puedo interactuar con uno do 30. Puedo interactuar con él uno do 29, y puedo tocarlo uno puedo tocarlo uno hacer 28. Puedo adjuntar uno do 29, y puedo tocar uno hacer 30. Entonces significando que puedo adjuntarlo todo lo que este tenga. Bien, chicos, así que necesitaba estar segura. ¿Bien? Sí, así que eso es lo que tenemos. Bien, chicos. Genial. Así que sí. Entonces estamos bien. Estamos bien, ¿verdad? Estamos bien. Entonces con esto, estoy seguro que estamos listos para proceder. Listo para continuar. Entonces les voy a mostrar chicos cómo instalar esto. Entonces creo que estoy listo para proceder, quiero ver la duración del video. Bien, 8 minutos. Bien, así que necesito explicarte este poco. Lo estoy dando paso a paso para que ustedes realmente puedan seguir adelante y no se pierdan ningún proceso, ¿verdad? Los veré en el siguiente video, ¿verdad? 135. Kubernetes explora y cambia de contexto: Bien, chicos, gracias por volver. Bien, así que comencemos a explorar un poco de cubanits. No puedo tocar ni siquiera puedo empezar a decir que me rascaría alrededor del 5% de Cuberts Yo solo quiero hacer cola a la sección hacia nosotros desplegar, pero necesitas conocer las funcionalidades clave de lo que necesitamos, ¿verdad? Entonces no quiero que te pierdas en el medio. Por eso voy a seguir mencionando algunos detalles clave. Entonces en la última sección, exploramos nuestro corte de cubo voy a traer esto nuevamente a colación. Recuerden, tengo mis cubantes funcionando, mis cubantes de racimo único Ahora bien, ¿cómo sé siquiera que me estoy conectando con el Cuberti correcto? Ese es el punto correcto. Porque un cliente cada cliente se conectará al servidor. Un cliente para conectarse al servidor. Necesitas señalar a los clientes para que apunten a servicio particular tal como estás tratando de llegar a una URL. Se podría decir que quiere llegar a Google, se podría decir que quiere llegar a Facebook. Se podría decir que quiere llegar a Amazon. Es necesario apuntar la URL a una fuente específica. Lo mismo con Kubernetis no, he trabajado en varios clusters de Cuberts he trabajado en varios clusters de Cuberts, ¿verdad? Varios grupos de combates Entonces hay una opción que también en algún momento estarías trabajando con varios cúmulos cubanos Para aquellos que nunca antes había corrido Cuberts, dices si solo puedes conectarte porque probablemente ese será el predeterminado que tienes ahora mismo Pero para los que han corrido coberts, tienes un problema de conectarte a escribir coberts que quieras porque he tenido que trabajar en varios proyectos simultáneamente donde estoy teniendo que cambiar clústeres para desplegar aplicaciones y trabajar en lo que necesito Entonces, ¿cómo lo averiguas? Entonces hay un comando que puedes usar. Para que puedas usar Q dos concursos configurate, ¿verdad? Entonces estos son todos los concursos encendidos. Es decir, este es el nombre de la corriente de todos los concursos que tienes en sistema local. Como pueden ver, he trabajado en, esto es un AKS. Este es Ajo. Se trata de Azure ARN. Esto es Amazon, Amazon. He trabajado en varias partes. Trabajé en GKE que es Google Cloud. Hay varios de ellos, trabajé en Azure personalizado. Solo quería mostrarte lo que realmente me he arreglado. Ahora mira este cúmulo. Estos son los clusters es cluster. Esto es información de autenticación, ¿verdad? Información de indicación. Uh, esto realmente no dice mucho. Todo esto no dice por sí mismo. Estoy a salvo básicamente. Entonces, si quieres revisar tus datos, me encantaría mostrarte un archivo, o tal vez pueda mostrarte brevemente, pero lo sacaré de la pantalla inmediatamente, ¿verdad? Porque contienen algunos detalles clave, pero yo no sólo haría eso. Lo que haces básicamente, si quieres obtener una visión completa de todo lo que se ejecuta en tu sistema local, usarías algo llamado CBC dos Vamos a aclarar esto. Te voy a mostrar el primer comando para coser el concurso que se ejecuta. Volveremos en un segundo. Voy a poner esto a disposición, ¿verdad? Todos estos comandos también están disponibles. Hagamos una vista de configuración de Q. ¿Puedes ver esto, verdad? Esto se puede ver. Estoy corriendo deliberadamente. Ahora bien, la mayoría de estos tokens que estás viendo que estoy compartiendo están todos caducados, así que no funcionan. Entonces, si los intentas, si haces una captura de pantalla de mi pantalla y las pruebas, no va a funcionar, ¿verdad? No va a funcionar. No tendrás acceso. En realidad necesito hacer mención de eso. Es que la gente es realmente curiosa, pero no va a funcionar, entonces. La figura te mostrará todos los detalles que realmente has conectado a todo lo que te has conectado, ¿verdad? Entonces necesitas tener eso de verdad. Bien. Entonces eso es un poco, ¿verdad? Bien, chicos. Entonces como mencioné, algunos de ellos son viejos. Lo he sacado de la pantalla. Como mencioné, simplemente lo revisaré rápidamente. Ahora bien, una pregunta es, ¿cómo puedo tener una buena visión de cómo decir esto? Muy fácil. Necesitas básicamente ir a Combs básicamente en realidad almacena en tu archivo local Este es mi archivo local. Después vas a los usuarios, luego vas al nombre de usuario. Este es mi nombre de usuario. Entonces busca el cubo de puntos. Cubo de puntos. Ves este cubo de puntos. Si abres este archivo, no lo abriré. Si abres este archivo, verás todas las configuraciones y todo lo que necesitas para ver ahí. Es sólo una réplica exacta de lo que arroje en la pantalla. En realidad, contiene más detalles que no quiero mostrar, muestra las llaves y todo. Te muestra todo lo que estás usando para conectar un clúster. Al parecer, todavía estoy conectado a algún clúster increíble que definitivamente no quiero mostrar. Todo bien. Entonces esto es exactamente. Solo estoy tratando de ir paso a paso, comprueba para usuarios de Windows para Linux, básicamente, para usuarios de Linux, solo revisa tu casa. Donde revisas la casa, luego busca dot cube dot cube debajo de tu casa. Vamos solo un CD, luego ve a tu casa. Entonces el nombre de usuario, tu nombre de usuario que estás usando, luego ve al cubo de puntos, pero en realidad estás bien. Esa es la clave. En realidad necesito mencionarlo. Estoy interactuando con esto ahora mismo, otro ejemplo que puedo mostrarles es vamos vamos también. Así puedo conectarme a mi Ubuntu desde aquí. Entonces si me conecto a mi Ubuntu y me dejo hacer un PWD para ver mi directorio de trabajo actual Entonces, actualmente estoy en mi casa, ¿no? Esta es mi casa, ¿verdad? Entonces también puedes hacer esto. Usa esto y esto te lleva a tu casa directamente, ¿verdad? Esto es garabato, ¿verdad? Se lo lleva a tu casa si estás en un teclado, creo que se desplaza, luego cambia hacia atrás tick Shift tick. Ahí está esta garrapata justo al lado uno y obtienes este símbolo. Entonces cuando estás aquí, así que ahora que estoy aquí un PWD, así que vamos a explorar esta parte, ¿verdad? LS. Entonces haré LS menos A para mostrar también ocultando F porque cuando tienes algo que va precedido de puntos, en realidad está agregando rápido. Bien vamos a A. Así que si miras esto cuidadosamente, ¿ verdad, ves que está en el cubo de puntos, verdad? Está en cubo de puntos. Así que vamos a entrar en punto cubecd dot cube Bien, SoC tendrá el mismo archivo, este archivo de configuración cinco. También corta ahora mismo. Si lo corté, verás también verás así que solo puedes gatos config no voy a darle a este comando, ¿verdad? Entonces una vez que golpeas esto, también ves todos los configurados. Esto es muy clave, chicos. Necesito mostrarte para saber exactamente cómo explorar esto, y esta es una gran para ti. A, a la derecha. Esto es genial. Esto es genial. Esto es genial. Entonces te mostraré los archivos de configuración donde ver el concurso, todo sobre tu clúster de componentes. Entonces ves todo en este archivo de configuración. Sigue anexando. Cuando te conectas a nuevos clústeres, sucede. Sucede. Entonces lo tienes ahí. He podido explorar esto en detalle para que ustedes sepan exactamente cómo conectarse realmente con él. Creo que somos buenos para seguir adelante, buenos para seguir adelante. Con esto, voy a volver a mi show de poder y voy a decir el último comando que usamos nosotros up cut que obtenemos config. Config obtener concurso. G concurso en realidad dar esto. Ahora, porque me falta el escritorio del auto, automáticamente encontrarías Da desktop, ¿verdad? Entonces Theca desktop es lo que me interesa, y eso es a lo que voy a cambiar Interruptor T, configuración de ganado cubo, luego usa esa es la palabra, usa contexto. Oh mi contexto es lo que Docker DKTopTocadk para aquí. Por lo que también pondría a disposición esto también. Este comando este comando también estaría disponible, ¿verdad? Entonces, una vez que golpeas esto, ves contexto cambiado a esto. Entonces ahora vamos a comprobarlo. Si notas antes de ahora usando, que tiene una estrella, que muestra el contexto actual. Entonces si lo hago Keep coil config, entonces obtengo concursos. Como pueden ver, ahora estoy en Docker Dk parada, ¿verdad? Ahora estoy en Docker Dk parada Así que les he enseñado capa por capa exactamente cómo llegar aquí, ¿verdad? Te he enseñado a explorar algunos pedacitos y cómo llegar hasta aquí. Entonces creo que con esto, ahora estamos bien para ir porque ahora estás en Docker Dk stop, y ahora podemos explorar todo lo que está dentro de Docker Dektop aparentemente no puedo Cubanos, pero menos. Básicamente, me encuentro con ellos seguir por las partes para hacer todo lo que necesitamos hacer. Bien, chicos Los veré chicos en el siguiente video. 136. Espacio de nombres y proyecto de prueba base en Kubernetes: Bien, chicos, aquí Z, gracias por volver conmigo. Entonces como te das cuenta, tengo una pantalla morada. No sé si esto es exactamente correcto, cierto. No soy muy buena con los colores. Entonces solo quiero mostrarles que podría conectarme tanto con mi WSL, que está en Windows como con mi shell de energía, poder cambiar a cualquiera de ellos. En realidad es ya que me estoy conectando con Kubernetes y Docker Dektop básicamente los Kubernets y Docker Dektop Docker Así que no te alarmes si me ves cambiando conchas y usa alguno de ellos, es lo mismo Entonces hagamos una D Vamos a ejecutar uno de lo siento, los Kubernetis Así que un concurso CC two config config. Esto es en mi parcial, se puede ver que estoy apuntando a puerta Dexter Comprobemos aquí. Déjame copiar el comando. No quiero volver a escribir ambos, así que solo confirme si este es el caso aquí. Todo bien. Como pueden ver, estoy en lo mismo , realmente no hay diferente. Podría usar ambos porque están todos conectados al mismo escritorio de expediente que está dentro, recuerda que habilité para aquellos que aún pueden recordar lo que hice Recuerden que en realidad entré aquí los recursos la integración BSL integré mi derecho Ubuntu Así que esto realmente se integra así que estoy usando ambos juntos y eso funciona. Sí. Ahora, quiero hablar un concepto muy singular que utiliza la mayoría del lenguaje Bogami, que en realidad voy a explicar aquí Todos son similares ahora, Cubontis Todo bien chicos. Muchas gracias. Sí. Así que en realidad publicó un poco el video. Por eso lo mencioné, ya que estaba agradeciendo chicos por sostenerlo, pero no vieron ningún retraso Sí, hay un concepto llamado espacio de nombres en uberts. Ahora para aquellos que en realidad para los que hacen Java, estarán familiarizados con el concepto de paquetes, para tener un poco de código en un área en particular. De los que hacen.net, estás familiarizado con cosas llamadas espacio de nombres, ¿verdad En realidad sucede lo mismo. Tenemos un concepto llamado Nspac cobertis en el que se quiere segregar un ambiente Digamos que tienes, creo que el ejemplo típico podría ser, si tienes un entorno Q, un entorno de desarrollo, un ambiente de producción , estos son tres entornos diferentes que no quieres que interactúen realmente entre sí. Son espacios separados o digamos VPC en una Nube privada virtual, tu usuario tiene una Nube privada virtual que no te dice que estás parado de usuario en una Nube privada virtual Aquí existe el mismo concepto. Podemos ver que hay algunos incumplimientos que ya están disponibles para usted Seguiríamos adelante para mostrar el default. Ya deberías adivinarlo. Será más barato obtener espacio de nombres, espacio de nombres. Estos son los espacios de nombre que están disponibles. Hay una forma corta. Creo que también en esos son espacios de nombres. Quiero estar seguro Bien, así que la S también disponible El atajo que usaría de NS es NS. Entonces NS. Entonces esta es la forma corta. Quiero que ustedes estén usando NS fuera del espacio de nombres para que las cosas se escriban más Bien. Entonces ves el valor por defecto que siempre se pone a tu disposición es este, que es el entorno predeterminado. Cualquier cosa que escribas, cualquier cosa que intentes crear para intentar explorar se vería desde el entorno predeterminado. Entonces, si quieres explorar cosas dentro de este sistema de cubos, no podrás acceder a él por defecto. Así que toma por ti mismo, si digo tubo cortado en cubo, consigue vainas. Lado, no veo sales encontradas en el espacio de nombres por defecto. No obstante, quiero verificar si quiero verificar los nombres donde pueda elegir este espacio de nombres, y solo diré N, esto ¿puedes ver la diferencia Entonces este N es punto a este sistema de cubos. Yo no tengo tiempo para explorar esto, pero estos son los detalles centrales que hacen que los cubanos realmente funcionen, ¿verdad La función de Marques. Toma este planificador. Este planificador es básicamente la guía que despliega realmente programa tu pod Bueno, no estoy explorando esto, no estoy explorando esto. Recuerda, todavía estoy en el espacio de nombres por defecto. Si vuelvo a repasar esto, hago BKoTug NS. Todavía estoy en el espacio de nombres predeterminado. Veamos qué hay disponible con esta versión de nodo. Veamos qué hay disponible. Vamos a solo Kupe koto QCT conseguir vainas, vamos a comprobar entre. Comprobemos esto. Oh, no hay recurso. Aquí no hay vaina. Bien, entonces otro atajo, probablemente les enseñaré chicos. Recuerda que todo esto estará disponible, a menos que veamos el video para elegir los comandos. Qpc dos obtiene PO, ¿verdad? N, usemos el sistema de cubos, que es ese espacio de nombres Bien. Hagamos esto, como pueden ver, puedo usar PO para Potter usando el nombre completo. Creo que explorar lo suficiente. Ahora lo que pretendo hacer es que quiero crear un espacio de nombres único para lo que vas a estar trabajando Eso es lo que quiero hacer. Voy a hacer un CK dos, crear NS. Recuerda que NS es espacio de nombres. Entonces sólo tienes que darte el nombre. Yo lo llamaré prueba. Esto ha sido creado. Esto se crea. Vamos a hacer QK dos conseguir NS. Como pueden ver, ahora tengo un espacio de nombres llamado Tso? Entonces, recuerden, a pesar de que ahora tenemos esta encuesta, ahora tenemos esta, ¿cuál es el espacio de nombres por defecto que sigue activo? ¿Cuál es el espacio de nombres predeterminado? La verdad es que el espacio de nombres por defecto sigue siendo el valor predeterminado hasta que lo especifiques o lo cambies. Entonces, por defecto, esa es la única manera que puedo confirmar. ¿Cómo lo sé? Entonces lo que puedes hacer es si yo tuviera que escoger escoger esto para escoger esto minimizado esta cubierto Bien, así que podríamos usar este comando para verificar y así podríamos hacer un espacio de nombres grab Bien, agarra el espacio de nombres. Oh, lo siento, mezclamos los comandos que Qu kato Esto no nos mostrará básicamente lo que necesitamos en este momento, pero esto es para validar el comando activa cuando solo nos movemos a un nuevo espacio de nombres, podemos ser capaces de ver el espacio de nombres al que simplemente cambiamos Lo que haría es cambiar a este espacio de nombres de prueba que acabamos de crear. Entonces ellos Kukato Kukatu config Entonces hacemos un concurso conjunto. No tienes que meter esto, ¿verdad? No tienes que tenerlo en la cabeza. Siempre está disponible la documentación. Simplemente escribe cómo verificar los nombres predeterminados o cómo cambiar un espacio de nombres y cubanos y lo encuentras, ¿verdad Entonces corrientes, luego guión toachnamespace, recuerda, espacio recuerda, Entonces usas el dash toachnmspace, entonces solo podemos usar el N. entonces solo podemos usar el N. Cualquiera que prefiera. N, luego solo pasa la prueba. Creo que quiere los cuatro dits dash dash Emspace name space Entonces esto es. Entonces estás diciendo que hemos modificado. Entonces volvamos a ejecutar este comando. Veamos esto. Vamos a panificarlo. Confirmemos esto. Esa es una vista de configuración, luego prueba. Bien. Ahora ve los comandos apropiados config set context, dash, dash, name space, then equals to test, then cube, config then view minify web name space Creo que este es el error. Estaba usando el espacio de nombres. No lo he escrito correctamente. Espacio de nombres, ¿verdad? Aquí hay un propio. Espacio de nombre de prueba de espacio. Vamos a retomarlo. Este que estaba buscando. Cuando se corta a la vista de conflicto, este tipo muestra que los nombres que se están ejecutando ahora es la prueba. Cualquier cosa que creamos, cualquier cosa que hagamos será directamente en este nombre en particular s para probar los espacios de nombre de una tienda. Ahora para proceder con esto, rápidamente estaría mostrándonos unos proyectos de demostración que creé Proyecto demo simple muy rápido. Ahora, la forma más fácil de probar cobonts como las personas aconsejadas cuando estás aprendiendo, tienes un proyecto de demostración que puedes fácilmente simplemente girar y ejecutar Si nos fijamos en este proyecto, este proyecto no hace nada significativo. Son solo detalles muy minuciosos. Todo lo que hago es solo que tienen un solo método G y el método G es solo Teske, nos dice lo que acabas de llamar Yo solo vuelvo en respuesta a ti. Eso no es nada más. Uno incluso se agota. Entonces estoy esperando un param. Paso en un param, que es un modo. Un modo es un ym. Ya ves el modo, es o desarrollos o producción. Pasar de esta cadena y para realmente sacarlo, luego nivelar, pasar un nivel y el nivel es un nom, ya sea un novato o SPAt Entonces esta es una respuesta aquí. Lo construí un disco. Nada nextra. Si nos fijamos en el archivo de configuración, realmente no hay nada aquí. Acabo de configurar el perfil para que sea dev. Comprobamos aquí acabo de establecer una propiedad que es nivelar novato, el nivel automático, entonces en realidad uso lo que les mostré antes en caso de que quieran establecer realmente la propiedad predeterminada o la propiedad environment, que se esperará. Quería mostrarle a este tipo, este es el proyecto a usar a partir de aquí para probar realmente para probar las funcionalidades básicas. Lo usamos para probar cómo crear un pod, lo usamos para declarar realmente usando un servicio, luego implementamos realmente para copares usando este proyecto Una vez que lo hayamos hecho y acertamos este espectáculo visto que las cosas están funcionando bien. Recuerda que no hay conexión a base de datos. Una vez que has hecho esto y te sientes cómodo con él, luego elegimos la imagen modulada, luego pasamos por el mismo proceso y las cosas luego se vuelven mucho más claras Esto no tiene complejidad. Pero la pantalla modular tiene que conectar con base de datos o fuente de datos y estamos tratando minimizar estoy tratando de minimizar varios la complejidad, tenemos que realmente trueno Empecemos con un proyecto muy sencillo. Voy a cometer esto o mejor dicho ya lo cometí. Creo que el nombre del proyecto es demo, creo ATS. De hecho agregaría esto a También proporciono esto en la carpeta de recursos o en la pila de recursos, a la que ustedes realmente podrán acceder también, me comprometo esto también agrego esto a lo accesible. Realmente no hay nada difícil aquí y ya me adelanté al archivo Docker y ya he corregido el error que hicimos principios de esta primavera y esta cuerda en la pulidora Creo que son buenos para toparse con el siguiente video. Chicos te ven en el siguiente video. 137. K8s pod 1: Oigan, chicos, Z aquí. Gracias por volver conmigo. He empujado esto al repositorio de Githu, y está disponible en la carpeta de recursos en el archivo de recursos Al mismo tiempo, también te darías cuenta ya he empujado esto a la imagen ya está disponible. Dokaimage. Si miras esto, puedes ver que ya tenemos la prueba demo k, que hice hace unas 18 horas. Pero sin embargo, para los que son mensajeros, hagámoslo rápidamente Envejecer paquete limpio. No hay prueba, pero nuestro CIS mantiene pruebas. Pruebas de salto D. Esto simplemente va a hacer esto y juntar todo con esto hecho. Nosotros tenemos esto. Recuerden, ya he seguido adelante para explicar en el último video todo lo que tenemos aquí. Después en segundo lugar, Docer Dude T, luego demo, prueba K es el nombre que uso, luego puntos Permítanme que de hecho comience esto por ahora. Entonces, vamos a tener esto. Déjame encomiar este comentario si quieres comentar, solo pones un símbolo hash y yo comento todas las obras para Bash y Linux Esta es una combinación de seminarios bash, parciales y Linux, que es para las ventanas Bien, esto para seminario Linux digamos. Ahora bien, esto hecho, déjame seguir adelante y eliminar Docker Image ARM, luego Dahef luego Entonces hice 1.0 realmente, 1.0. He eliminado. Puedo traer de vuelta a este tipo, luego quitarle esto y recrear. La dosis critica de repente. Esto va a ver, esto está hecho. Esto está hecho. Nosotros tenemos esto. Recuerda, mencioné que puedo usar cualquiera de este comando ya sea que uso uso el Ubuntu o el power share. Yo sólo puedo alternar entre los dos. El motivo es porque no quiero que nadie con sistema operativo diferente piense que estoy haciendo algo diferente. Simplemente se puede usar. Preferiblemente, sólo voy a consultar con mi terminal. Este terminal de aplicación, básicamente funciona para mí. Bien, entonces, ¿qué es lo siguiente que vas a explorar? Lo siguiente que vas a explorar es que estaremos creando una cápsula. Ahora bien, ¿qué es una vaina? La forma en que tiene un contenedor en un Docker en el motor Docker, que es la unidad más pequeña En Cuberts el más pequeño es una vaina, no un contenedor. Sin embargo, una cápsula ahora puede contener uno o varios contenedores. Voy a tomar rutas algo fáciles, pero solo quiero que tengas ese conocimiento de que el pod contiene uno o más contenedores, ¿verdad? Entonces estaremos cortando la vaina para crear una vaina, hay dos formas de crear una vaina. Ahí está el estilo imperativo, y hay un estilo declarativo Ahora, el estilo imperativo simplemente significa que ejecutarías un comando para crear el pod, especificar la imagen, como todo en un solo comando. Declarativo es que vas a estar usando un archivo de configuración Va a configurar todo en el archivo de configuración. Haría lo mejor posible para explorar ambos, ¿verdad? Entonces voy a seguir adelante y hacer un Qu dos. Recuerda, esto estará disponible. Q dos, entonces correría. Si quieres crear el pod, usas run. Corre, luego dale el nombre, el nombre, así que lo llamaré demo. Demostración. A continuación, especifique la imagen. Entonces la imagen, la imagen que voy a estar ejecutando en la imagen es demo, recuerda, demo KHS un punto cero Entonces esto cuenta directamente, pero quiero mostrarles algo chicos. Es una opción llamada Dry Run. Cliente de corrida en seco. Entonces especificas la versión del archivo, diré Yamel. ¿Qué hace esto? Esto es decir, quiero ejecutar una vaina que tenga esta imagen. No obstante, todavía no quiero que lo ejecutes. Yo solo quería generar un archivo de configuración para mí en Yamel También puedes generarlo en JSON. Lo que voy a hacer aquí es que lo haría entonces para aquellos que no están familiarizados con Linux, esto significa copiar la salida de este comando en un archivo llamado demo dot Yamo Espero que ustedes puedan relacionar eso. Así que por favor mira este video si quieres si te equivocas. Vi que este es el nombre que tenemos el pod, la imagen que creamos, esto es guión, la imagen que creamos, y mencioné que Dry run O Yama generará el archivo de configuración de Yamal que necesitamos, luego ejecutarlo y luego pasar la salida en así una demo el archivo Yamo Entonces hagámoslo. Así que vamos a explorar. Seré un CAT demo punto Yamo. ¿Puedes ver? Esto genera todos estos detalles s, lo cual es impresionante. Esto es increíble. Genera todos estos detalles, Rose. Ahora, podría haber seguido adelante para simplemente ejecutarlo directamente. Podría haberlo ejecutado directamente. Pero solo necesito mostrarnos que si quisiéramos crear declarativos esto es exactamente lo que creamos Se trata de formatos declarativos, formato Delativo. Si revisas la configuración, simplemente te mostraré rápidamente una selección de palos. En realidad voy a ver esta parte, esto es Kubernetes Esto es Kubernetis. ¿Ves? Así es exactamente como se ve. Si comparas con lo que tenemos por aquí, ¿lo ves? El algo se ve igual, ¿verdad? Te ves igual. Ahora bien, la parte del contenedor no es porque no especificé parte. Si especificara piezas, la hubiéramos visto ahí, ¿verdad? Quiero mostrarles que este es un concepto muy chulo. Solo estoy intentando Estoy tratando de matar dos osos a 1 piedra mostrándote cómo hacer botas de verdad y haciendo eso. Bien. Creo que eso es genial. Vamos a ejecutar esto de nuevo. Entonces hagamos dash pods dash, luego dash pods. Creo que estamos corriendo en lo que Esto es 80, 80 80 porque no puse el bote ser 88. 88. Hagamos esto, y hagámoslo. Bien. Vamos a explorar esto ahora. Gatos, demo, yamo. Bien, ¿lo ves? Ahora tenemos la olla contenedora expuesta. Verán, chicos, esto es interesante. Realmente increíble, hombre, realmente increíble. V realmente impresionante. Todo bien. Entonces ahora te lo pedimos, pero aún no has ejecutado el comando. No, el comando no es una carrera. Solo te estoy mostrando que solo estoy afuera para mostrarles cómo funciona esto básicamente, ¿verdad? Entonces encontrarás todo este comando básicamente disponible, todo este comando, yo lo pongo a tu disposición chicos. Pondré algunos para que sean imperativos o algunos declarativos, ¿verdad? Les mostré chicos que en realidad pueden haciendo esto Giron clientes O YAML, esto en un archivo, esto en realidad pone en un archivo, van a cortarlo. Eso es lo que hicimos. Déjenme mostrarle esto. Espero chicos que esté claro. ¿Y si quiero ejecutarlo directamente? Ahora que tengo mi demo Yamo tengo mi archivo demo Jamo. Antes que nada, exploremos el aspecto de correr directamente. Voy a copiar este comando. Voy a copiar este comando, voy a borrar esto. Ahora, vamos a hacer un corte arriba conseguir tirado o conseguir PO. Recuerda que te dije que cantaras. Esto se ejecuta en el espacio predeterminado. Voy a hacer esta prueba de RN. Recuerda, creamos la prueba. Memorizar corte de cubo obtiene NS. Recuerda, tenemos los entornos de prueba, ¿no? Creo que porque estaba usando la terminal. Vamos a venir aquí. Vamos cubo consigue PO. No hay recurso en el espacio de nombres de prueba porque no he cambiado mi concurso. Creo que funciona por terminal, ¿ verdad? Yo salvo el peramial Vamos a seguir adelante y hacer lo mismo aquí. He enviado un mensaje de texto en el comando antes, así que solo entraré aquí, colocaré el comando aquí, luego haré pruebas, ¿verdad? Prueba. Entonces alrededor de eso vamos a ver. Vamos a mover esto. Grabit. Bien, entonces esto no es Linux, ¿ verdad? Entonces no está bien. Así que vamos a solo que no es completamente Linux. Esto está entre power shalar Linux, pero algunos comandos no funcionan porquería no funciona. Así que vamos a hacer P Bien. Al menos en este momento, estamos diciendo que no, está en el espacio de nombres de prueba, a diferencia de cuando estamos entrando en el espacio de nombres predeterminado. Entonces podemos seguir adelante y ejecutar el comando directamente. El comando en realidad se ejecutará sin el giron. Te mostré te expliqué qué significa gyron? Ustedes ahora entienden qué giron voy a hacer esto. Yo sólo voy a mandar este de aquí. He escrito no quiero volver a escribir, solo saca esto. Todo bien. Así que vamos a ejecutar esto directamente. Entonces le pegué directamente. ¿Puedes ver la demo de pod creada? Así que vamos a explorar. Mantener a Cato se pone peo Como puedes ver, demostró que la demo está intentando crear pero no encuentra nada que se llame imagen. Eso es lo que esto está diciendo. Entonces hay una manera de averiguarlo. Vemos esto diciendo no hay nada como imagen de copia de seguridad completa. Se trata de buscar la imagen. Por qué buscas la imagen, vamos a explorar. Así que solo les mostré chicos, estoy tratando de cambiar terminales por encima de la consistencia. Yo sólo voy a pegarme a la terminal de Ubuntu, voy a pegarme a la terminal de arranque. Recuerdo que acabo de mostrarte que puedo usar mi Powershell, puedo usar este derecho Esto me gusta un poco cuando en realidad estoy tratando con Kubernetis Eso es solo una preferencia personal. Eso es conseguir PO. Ahora, veamos la razón por la que si no estás seguro de lo que está pasando. Podrías hacer bekotu describir puedes describir la vaina. Recuerda atajo. Entonces el nombre del pod que es demo, lo que está sucediendo. Entonces esto es decir, si bajan, diciendo, el planificador automáticamente, recuerden que mencioné que el planificador es uno que en realidad crea el bote para ustedes chicos Esto ya se ha hecho. Esto está bien. Pero no puede sacar esta imagen. Está tratando de sacar esta imagen, pero la imagen no está disponible, y está buscando la imagen. La prostituta no existe o puede requerir el inicio de sesión de Docker Solicitar acceso denegado a esta imagen. La misma solicitud de acceso denegado a esta imagen. Lo siguiente que haremos, solo haré una demostración de Docker image S que una estrella Ves esto está disponible guión de demostración, kTt. Y esto se considera como lo último, ¿verdad? No puedo ver ningún punto cero. Entonces significaría cuando estábamos creando el comando elia, era lo último que me usaron. Por lo que no se utilizó uno Broad zero. Entonces por eso estamos teniendo este tema. Entonces yo haría es que voy a volver así que les he enseñado a ustedes otro comando más, cierto, cómo mostrar, que es lo que les mostré esto. Si el nombre del pod, que creas, recuerda cuando estábamos creando el pod, ¿verdad? Y estamos creando la vaina. Creo que lo hice en esta terminal. Y estamos creando la vaina. Especificé el nombre aquí, que es demo. Así que por favor tenlo en cuenta. Estoy tratando de seguir progresivamente para que no te confundas. Tengamos esto en mente. Así que volviendo a mi otra terminal, ahora intenté describir y esta descripción nos mostró que el nombre o algo no coincide, que en realidad pude mostrarles chicos. Yo en realidad pegaría aquí. Yo pego eso en mis notas para que en realidad pudieras ponerlo disposición también diciendo que esto no describe pod. Bien, entonces volviendo aquí, vemos esto. Entonces siguiente parada, cubo Cortes PO. Este es el tema que estamos teniendo. Así que vamos a eliminar este pod. Podemos hacer un cubo, cortar borrar PO. Entonces, una vez que eliminas el pod, el nombre del pod es demo. Ahora bien, si haces esto, estarás esperando a que Kubernetis haga un elegante cierre. Después fy eliminar. Esto podría tener algún efecto. Si fueras a asistir al programa Kubernetis o a la certificación de uberntis, no tendrás tiempo Esto va a perder mucho tiempo. Entonces puedes usar algo llamado dash dash grace period. Periodo de gracia, fuerza de datos. Espero haber conseguido este comando correctamente, cero. Estás diciendo, quiero este quiero darle un periodo de gracia de cero, pero quiero obligarlo a cerrar. Ya veo. La eliminación inmediata no espera la confirmación de que el proceso en ejecución ha sido terminado. Entonces no espera. La mayoría de las veces no tienes que esperar. Haces un cubo cortar dos consigue PO. Se fue. Si no haces esto, dijiste que esto era inmediato, pero si no haces esto, esto llevará tiempo. Volvamos a hacer lo mismo. Nuestro comando de servicio, vuelve a hacer lo mismo. Permítanme crear con lo que hicimos antes. Keep cut runmo dash dash image, que es una prueba de guión K demo, luego hice 10, luego lo que hace dash pots El índice es 80 80, lo que hice. Entonces si vuelves a ejecutar esto, esperémoslo. Verás, error de extracción de imagen. No pudiste sacar la imagen porque no podías sacar esta imagen, ahora volvamos a ejecutar este comando sin el periodo de gracia. Movamos este periodo de gracia y veamos qué pasa. Cuentan más segundos? Uno. Verás, tardé alrededor de uno a 2 segundos para que se elimine. Si la vaina es pesada, tardará más segundos. Por eso te mostré estas dos diferencias. Esta es otra forma. Guarde esto también en las notas, para que ustedes puedan realmente estar disponibles en la nota en las notas y ustedes realmente puedan tener acceso a ella. Todo bien. Con esto hecho, eliminemos de nuevo. Entonces he eliminado, así que esto es ir. Hagamos un cubo para obtener la cáscara. Aquí no hay nada. Ahora volvamos a ejecutar la imagen. Recuerda, esto está buscando lo último así que veamos. Cutter de Cue consigue pelar. Puedo ver. Lo que debería simplemente hacer que se pegue, saquen, luego miren. Cuando haces un reloj, qué debería mantenerlo funcionando abierto para que no tengas que simplemente salir de la sede común. Ahora estamos diciendo que la imagen sigue teniendo problemas. Vamos a explorar. Déjame ver exactamente cuál es el tema aquí. Todo bien. Voy a dejar esto ¿me describe también? ¿Describes, describes la demo? A ver. Por lo que todavía le resulta difícil tirar físicamente diciendo Activo denegado para demo K prueba más reciente. Hay el mismo error. Es posible que requiera un inicio de sesión de Docker o se deniegue el recurso de acceso Bien. Entonces estamos recibiendo el mismo error, así que solo voy a arreglar ese bit. Bien, chicos. Entonces, mirando esto, lo estoy viendo. Está tratando de sacar de él está tratando de sacar de Docker de Docker Hub, Esto es tratar de sacar de Docker Hub porque eso es exactamente lo que está tratando de hacer esta extracción Tratando de sacar de Docker Hub. Nunca empujamos nuestra imagen a Docker Hub, ¿verdad? Esta imagen nunca estuvo disponible en Docker Hub. Renta en registro local y así es exactamente como funcionan los Kubarncs Kubant no conoce el registro Docker Local. Hemos estado empujando al registro local. Así que tenemos que empujar estas imágenes a mi Docker Hub, y eso es exactamente lo que tengo que hacer Lo empujo a Docker Hub, será accesible Lo que voy a hacer de varias maneras de hacerlo. Podrías simplemente aclarar esto. Antes que nada, voy a aclarar esto. Entonces hagámoslo yo solo haré la imagen de Docker. Estos dos tipos, quiero juntar esto. Voy a hacer Docker push Empuje Docker, luego solo elige Modult. Ya que vamos a estar haciendo eso al final del día bajo cero, vamos a empujar esto. Puedes ver se refiere a que podría tener este es el camino completo porque no especificé el camino completo, solo escogí a este tipo, escogelo. Ahora, el acceso está denegado porque requiere que realmente inicie sesión. Haré un inicio de sesión de Docker logging Docker. Entonces mi nombre de usuario, Bien. Estoy tratando de empujar. Iniciar sesión correctamente He iniciado sesión. Hagamos lo mismo. Todavía no me permite empujar. Déjame ver la razón por la que he iniciado sesión con éxito, estás diciendo que puedes iniciar sesión en contraseña persona. Esto es aprender más tt. Si no tienes Docker ID, C Veamos que esto Y no me permite empujar. ¿Bien? Déjeme seguir adelante y darle mi nombre. Entonces esto para que quieras empujar a veces requiere que pongas tu nombre de usuario al frente. Entonces déjame empujar mi nombre de usuario al frente y veamos esto. A ver. Empuja este Docert hace. Bien, entonces está buscando esto. Todo bien. Déjame resolver esto. Bien, entonces no está diciendo y está esperando mi nombre de usuario porque estoy viendo esto, está tratando de empujar al Docker Hop predeterminado. Por lo que requiere mi nombre de usuario. Bien, creo que sé cuál es el problema. ¿Bien? Bien, así que vamos a aclararlo. Iré a los proyectos, iré al proyecto. En esta ocasión, voy a hacer Docker Bute T, luego mi Después demo, creo, Hs, luego uno Dot Ser un punto er. Si no especificas una etiqueta para ser usada como última, así que solo especificaré etiqueta porque necesito una etiqueta. Vamos a hacer Docker pero. Entonces escojamos esto sobre este hecho ¿bien? Bien, así que hemos empujado. Ahora esto ahora va al default. Entonces revisamos ahora. Hacemos una imagen Docker, S se puede ver tengo una imagen con mi nombre de usuario al frente Ahora bien, por favor recuerde la razón por que esto es si no uso mi imagen, debería estar tratando de poner el registro Docker predeterminado, que está en Docker Hub, lo cual no está Esto no lo va a encontrar. Pero si quiero hacer esto, tengo que asegurarme de especificar mi nombre de usuario de Docker Hub, cortar el nombre de la Etiqueta y la Entonces esto irá automáticamente a mi usuario nm, a mi perfil o Docker Hub Con esto hecho así puedo copiar esto volvamos a esta terminal y Docker push Entonces queremos empujar esta S, entonces la etiqueta es uno hacer cero. Estoy diciendo empujar a mi propio perfil. Este perfil con este nombre de usuario. ¿A ver qué pasa? Todo bien. Dices que esto funciona. Entonces es decir ahora está empujando a IO Zico Z, entonces esto. Antes de ahora, decía Docker IO Library Library default, que es el general disponible en Docker Hub Pero esto ahora va a mis propios proyectos, y esto es increíble. Mientras esto está funcionando, seguiría adelante para presionar por modulador también para que no tengamos que esperar en este video para tener eso hecho porque al parecer quiero que ya esté disponible. Lo que voy a hacer es publicar este video. Cuando esto termine, volveré con ustedes. Todo bien. Todo bien. Esto está hecho. Como puede ver, esto se completa con éxito. Vamos a mi Docker Hub. Creo que incluso podemos verificar desde aquí, ¿verdad? Creo que esto está disponible en Docker Desktop. Si has iniciado sesión, yo he iniciado sesión aquí. He iniciado sesión. Creo que puedo ver mis imágenes remotas. ¿Me equivoco? Bien, Hub, este es Hub Hub Hub Es Local D Hop. Así que vamos a revisar mis imágenes, ¿verdad? Entonces, ¿ves que he empujado el modulate y empujado eso para el demo cad ambos están disponibles en Docker Hub, verdad Debes asegurarte de hacer lo mismo. Recuerda que el comando a usar es Docker. Una vez virtualmente pero la imagen, debes construir la imagen con esta etiqueta. Acabo de mostrarlo antes. Por favor, amablemente actualiza los videos para verificar. Construyes esta etiqueta, que es tu nombre de usuario en Docker Hub. Si no tienes una cuenta Docker Hub, creas una cuenta, es gratis Docker Hub, entonces la etiqueta no está en esto, creo que la mostré aquí Es por aquí. Vamos a subir un poco. Se puede ver esto lo hago yo pero con esta etiqueta. Hacer un slash slash. Lo que hay antes de que el slash indique tu nombre de usuario, después del slash es el nombre de la etiqueta que quieres usar Entonces si no pones ninguna de estas columnas dis se resolverá al último carbón automático pero a partir de esto y puntos significa pero de este directorio, directorio actual. Entonces puedo entonces empujar. Yo he hecho lo mismo por los moduli, y por eso Una vez que hayas hecho esto, una vez que construyas esta etiqueta, lo que tendrás aquí es esta. Tienes a este tipo y a las ventanas. Esta es la etiqueta la coloqué. Si no lo presionas, recuerda que tienes lo último allí no te alarmes si olvidaste esto y limo solo significa una vez que estás haciendo eso, tienes que especificar la palabra clave latest u omitirla, luego tirar Si usas un número, yo he usado, tienes que especificar exactamente lo mismo. Este video es cada vez más largo. Me pondré en contacto con ustedes en el siguiente video. 138. K8s Pod 2: Bien, chicos, gracias por volver conmigo. Les mostré a ustedes cómo empujar la imagen a su Docker Hub Me tomé mi tiempo para explicarte, por favor puedes ver el video para verlo y tomar nota de los puntos clave que mencioné para lograrlo. Recuerden que se nos está denegando el acceso. Intenté iniciar sesión y descubrí que no era que necesitaba pasar mi nombre de usuario. Entonces mi nombre de usuario era muy clave. Pasando el nombre de usuario que construí usando mi nombre de usuario, lo estoy mostrando de nuevo solo como referencia para que podamos recordar. Construimos pasando tu nombre de usuario, luego recortamos el nombre de los proyectos que quieres usar, luego uno lo haces o usas cualquier nombre de etiqueta, entonces eso es doblarlo desde el núcleo de trabajo dict explica esto cuando estés construyendo el Dale, puedes verificar Doceri Pat uno para ver qué Esa es la primera parte, entonces hay que empujar. Necesito empujar, solo elige exactamente este mismo nombre que has usado. Solo usa Docker push Entonces este mismo nombre exacto, que mostré en esta terminal, Docker empuja exactamente el mismo nombre He seguido adelante para hacer lo mismo para modular. Todos estos son proyecto de prueba. Con esto hecho, creo que estamos bien para ir. Ahora bien, ¿por qué hicimos esto para refrescarnos de verdad? Kubernetis no conoce tu registro Docker local. Se tira exactamente de Docker Hub. Debido a que estoy usando Docker Registry, estoy usando Docker Dektop, asumirá sacar de cualquier registro que lo coloque, honesto si no busco esa imagen en ningún lugar de DockerHub porque ese es el valor predeterminado que usa excepto para darle una onda privada y hay que darle un contexto completo Eso está disponible en Kubernetis. Pero como estás usando Docker de solo apégate a lo que realmente estamos aprendiendo aquí Tienes que dar el nombre de usuario, recortar el proyecto exactamente así Así es como tienes que especificar tu imagen. Si no haces esto, no va a encontrar la imagen, y es por eso que estamos obteniendo el Docker Po porque no había una imagen llamada demo guión K prueba un punto cero Con esto hecho, voy a copiar esto y volver al comando que estamos ejecutando antes, el comando que estamos ejecutando antes. Yo solo puedo volver ahora arriba cortador obtiene POT es el área que tiene sondeo de imagen. Vamos a borrarlo. Eliminemos esta imagen directamente porque no la necesitamos bien porque esta imagen no está funcionando para nosotros, haz una eliminación. Se borra, creo que el inicio debería estar aquí en el comando aquí. Yo no lo creo. El corte de cubo deberías estar acostumbrado a él, pero esto por ahora, elimina luego pod, que es una forma corta de pod o pods, luego demo, luego dash dash grace period Quiero que termines el mal inmediatamente, luego cero, luego dash dash cuatro. Bien, entonces eso está hecho. Entonces hacemos un cubo, cortamos dos, consigue PO. Verás, aquí no hay nada. Oh, espacio de nombres predeterminado. ¿Bien? De hecho lo cambié, así que volvamos con el otro tipo al que estábamos corriendo antes. Entonces iría a la orden. Pero no tienes que sólo saber el comando que estás escogiendo. Estamos usando el espacio de nombres de prueba, el espacio de nombres de prueba. Así que volvamos al espacio de nombres de texto. Entonces veamos esto Sí, genial. Esto fue para validación. Recuerda, si este comando no te funciona, todo lo que tienes que hacer es simplemente mantener el corte se tira. Esto se está ejecutando en estos tipos, acabo de borrar. Así que te llamen. ¿Ves? No, es solo en el espacio de nombres de prueba. Ahora estamos de vuelta para probar el espacio de nombres. Ejecutemos el comando que hemos estado ejecutando antes de ahora, que les mostré antes chicos sobre qué usar. Eso es un comando directo sin usar el archivo, que es este. Recuerda, este fue el problema que estamos teniendo, así que lo colocaré como Z llamada Z slash Esperaba ir a recoger imagen de mi registro, voy a sacar esto adentro. Vamos a probar esto. Entonces, ¿se tira de un cubo de ganado Te dije que puedes dash dash watch para verlo correr como si tira. Ahora, ¿ves que hay una diferencia? ¿Cuál es la diferencia? Antes de ahora, lo que estamos teniendo era ver esto se está ejecutando, hay un error Esto se está ejecutando, hay un error. Entonces el error es diferente. Entonces, ¿K has hecho mal? Oh, muy sencillo. Lo que he hecho mal es esto. Entonces, vamos a quitarnos esto. Eso es lats. Cuatro Clats. No describamos. Cube utu describe Demostración de pod. Veamos qué está pasando. Entonces, veamos esto. Un tema está ocurriendo. No se encuentra el problema. Entonces, si no encuentras el problema, ahora hay otra opción. Si no lo encuentras en describir, no puedes revisar los registros del contenedor. Así que eso recordará, he mostrado describe la descripción que nos dio esto así que vamos a aclarar esto. Pero el cubo cortó dos Troncos. Recuerda, demo. Es una vaina. Cuando los registros, definitivamente funciona para pods, pods para los que funciona y el nombre del pod es demo. Verás, ¿qué es? Se busca perfil de resorte, y eso es muy preciso. Verán, quiero que ustedes vean esto. Ustedes ven esto. Recuerda, en el archivo doc, estamos diciendo que debes usar lo que pasemos en el perfil para ser el perfil aquí, lo que pase aquí debería ser el perfil, ya sea para Dev o para Docker Recuerda que lo que estamos tratando de reflejar aquí es Docker desktop Estoy tratando de simular para los módulos. Así que volviendo aquí, creé el entorno Dev, cred it Docker Así que en realidad quiero elegir el perfil Docker. Y como no especificé nada, no sabe cuál usar, en realidad está por defecto al valor predeterminado Y una vez que se pone por defecto a esto, no lo ve. Entonces ahora tenemos que especificar, Oye, quiero que uses Ok. Suponiendo que aquí especificamos el nivel de alquitrán, esto no causará un problema porque el Dev realmente se habría resuelto directamente en las luces, ¿verdad? Por lo que está buscando el perfil de resorte que se establece dentro de esta guía. Estoy repitiendo de diferentes maneras para que podamos entender. El cliente entiende de una mejor manera lo coloco. Eso es lo que estoy tratando de lograr aquí, ¿verdad? Todo bien. Se puede volver a verlo. Cuando me escuchas decir algunas cosas y lo doy la vuelta para enviártelo diferente, solo estoy tratando de transmitir la comprensión de diferentes maneras. ¿Qué hacemos? ¿Qué vamos a hacer? Ahora que existe el tema. El problema ahora es, que pasé de Pod Pod ahora es capaz de funcionar, pero ahora estamos diciendo que necesitamos pasar en la variable de entorno. ¿Cómo pasamos en la variable de entorno? Pregunta impresionante. Ahí es donde ahora llegamos al siguiente bit C config map, config map, y eso es lo que estamos viendo en el siguiente video. 139. Mapa de configuración de K8s pod 3: Bien, gracias chicos por seguir conmigo. Ahora antes de ahora, hemos estado haciendo de todo, desde el estilo imperativo. Sin embargo, si ahora estás intentando crear el mapa de configuración a partir del estilo imperativo, sí, puedes hacerlo. Esto es muy sencillo de hacer. Pero las cosas empiezan a complicarse, y eso es lo que necesito para mostrarles que podrían hacer esto desde la línea de comandos con un comando para entrar en uno. Estilo imperativo, puedo crear el mapa de configuración. Pero para que veas ahora cómo se conecta para luego conectarlo a la vaina se volverá muy confuso. Descubrí que me tomó un tiempo aprovechar realmente esto también. Pero tenga en cuenta que puede crear un mapa de configuración. Puedes crear directamente el mapa de configuración usando puedes crear un mapa de configuración usando la ruta de la que te hablé usando el estilo imperativo, y eso es exactamente lo que voy a estar mostrándote chicos ahora mismo, mostrándote chicos ahora mismo, para hacer eso, lo que haremos es que te mostraré cómo crear un mapa de configuración. Solo te mostraré la documentación cómo crear un mapa de configuración a partir documentación de uberts, cómo crear un mapa de conflictos, luego pasamos a usar el estilo declarativo porque es más fácil poder detectar cómo conectar el mapa de configuración desde un punto de vista declarativo, d desde el punto de vista imperativo, y eso es lo que voy a hacer el mapa de configuración desde un punto de vista declarativo, d desde el punto de vista imperativo, d desde el punto de vista imperativo, y eso es lo que voy Entonces voy a hacer esto para crear un mapa de configuración. Todo bien. Uh bien. Lo estoy mostrando ahora, vengo aquí y estoy mostrando cómo crear mapa de conflictos. Esto tiene que crear mapa de conflictos. Simplemente escribe en la documentación isCubanzio que puedes ver, puedes crear usando el imperativo sys crea mapa de conflictos, mapa de conflictos, la forma corta o el nombre corto es CM, CM, C y M, Entonces crea mapa de conflicto, luego pasas. Entonces decimos que si quieres pasar en archivo, entonces en realidad estableces un par de valores clave. O si no quieres pasar el archivo, entonces podrías guiarse desde literal, luego la clave y el valor. Entonces si usas un giroscopio, recuerda lo que te dije sobre gyron es crear el archivo para Sigamos adelante y hagamos eso. Sigamos adelante y hagamos eso. Yo haré Kipct crea CM, o podrías hacer configmap es a la vez lo mismo Por qué verlo, luego dash dash de literal. Si lo haces desde archivo, te sugiero usar de archivo. Si tienes una gran cantidad de propiedades ambientales que quieres pasar, listas todo en el archivo en pares de valores clave, luego lo pasas. Pero siempre me siento cómodo usando a este tipo de Literal, que siempre es divertido para su uso. F literal, entonces paso mi llave. La clave, recuerda la clave es primavera, perfil iphone. Y el valor es ¿qué? El valor es Docker, ¿verdad? Entonces quiero una corrida en seco. Todavía no quiero ejecutarlo en mi compont. Correr en seco. Yo sólo quiero obtener el archivo. Cuando consiga el archivo, entonces lo vincularé en un archivo diferente que tenga una olla, después veremos cómo funciona. Entonces cliente, luego O, YamuTenga en cuenta que también hay que colocar a Jason Conseguimos a Jason para ti. Vamos a hacer Jason. Digamos que no me equivoco Le es solo decir Jason. ¿Dash era esto? Bien, perdón, no me pasó el nombre. Así crea ConfigMap. Yo sólo lo llamaré demo. Vamos a darle el mismo nombre que Demo. ¿Puedes ver? Este ret tiene a Jason. Verás, obtiene el valor clave de pago. Sólo quiero mostrarles que esto es realmente increíble. Pueden pausarlo aquí chicos y explorarlo un poco, pero yo solo voy a seguir adelante para que puedan continuar con. Entonces entro aquí y lo paso Jamo, ¿verdad? Increíble. Entonces ahí lo tenemos. Esto es exactamente lo que necesitamos. Voy a mover esto a un archivo llamado. Recuerda, ya tenemos un archivo llamado Demo o Yama, Demodo Yamo Pero ejecuto esto en una terminal diferente, así que será en una diferente así que solo colocaré Demo o Yamo Si hago un gato, Demo o Yamo, puedes ver que ya existe en este archivo Ahora, entonces volvería a escoger el último comando que ejecutamos para crear el pod, Para crear el pod. ¿Cuál es el comando otra vez? ¿Cuál es el comando o no lo ejecuté en esta terminal? Bien, lo que voy a hacer es buscar vaina. Veo éste vamos a borrar esto. Vamos a borrarlo. No queremos quedarnos con esto. Vamos a borrarlo. Este es el comando que estoy buscando. Escojo este comando, sosténgalo, luego eliminemos. Voy a borrar la cápsula. Voy a traer aquí este comando, este comando, entonces yo diría dash dash dry roun Lo mismo, no quiero ejecutarlo. Yo sólo quiero presionar todo junto. Entonces cliente dash todo YAML. Entonces quiero anexar a la demo o YAML. Recuerda, cuando usas un solo un letrero hacia adelante ese es un signo mayor que. Recrea el archivo o cancelará todo lo que esté dentro de ese archivo y lo recreará Pero si haces el doble mayor que, se anexará, probemos eso. Vamos a hacer una demo CAT dot Yarmo. ¿Puedes ver? Esto es un bolígrafo lo miro. Empezó a partir de aquí. Necesito un espacio. Ahora bien, si quieres que el ubertith ejecute un archivo de configuración para que tengas varios recursos, no necesitas entrar en el archivo y hacer que parezca que hacemos una VM, yo tengo una VMI es solo cómo editar realmente. Para los chicos que usan Windows, no sé qué VMs, no tienes que preocuparte por eso Todo lo que solo necesitas saber es simplemente abrir el archivo en tu bloc de notas y hacer esto. Eso es todo lo que significa. Entra aquí, entonces pones tres guiones, tres guiones, esto, esto, esto Al colocar esto en estás diciendo, este es un recurso, este es otro recurso, y eso funciona para nosotros. Muy bien, así que si hago una demo de CAT, chicos, pueden reproducir este video para comprobar exactamente lo que he hecho, para decir exacto y ustedes entenderían Ahora, recuerden, no creé esto manualmente. Usé el comienzo imperativo para conseguirlo para mí. Podrías haber ido a documentación a piquete, pero ese es mi estilo Yo uso imperativo para obtener el comando. Yo uso ese giroon obtener el archivo u obtener el formato declarativo, pasarlo a un archivo, crear otro recurso en él, pasarlo en el Después los conecto entre sí. Entonces la pregunta ahora es, ¿cómo conecto este mapa de configuración a este pod para que se pueda la configuración para dentro ver la configuración para dentro de las propiedades del entorno Lo que significa que este pod puede entrar en este mapa de configuración y elegir esta propiedad molesta. ¿Cómo hago eso? Entonces en lugar de que yo te muestre directamente, quiero que también te haga sentir cómodo usando la documentación. Entonces yo haría es que luego iríamos a recoger. Ahora bien, así es como cortar mapa de conflictos. Entonces, ¿cómo lo usas en una vaina? Si te desplazas hacia abajo, ¿verdad? Así que bajemos, entonces config maps, voy a hacer yo solo haré configMap. Si hago mapa de configuración, verías configurar pod para usar un mapa de configuración. Si haces esto, bajemos. Verán, yo lo creo igual donde les mostré chicos, entonces vamos a ir a una vaina. Ahora esta es la salida, crea configmap en archivo Así es como crear a partir de archivo. Les muestro chicos que tienen muchas propiedades, así es como crear a partir de archivo. Les mostré tanto chicos. Para que puedas crear a partir de archivo. Os muestro antes chicos, para que podáis escoger, después escoger el nombre del archivo y como spots. Quiero cablear a una vaina. Ese es el objetivo aquí. Ese es el objetivo. Bien, voy a ir a la vaina. Todos estos son mapas de configuración. Voy a pod, pod, pod, pod, pod. Definir la variable contenedor usando? No. Así que eso es fácil dentro de una vaina. Utilice el mapa de configuración para encontrar en el comando port. Bien, esto es un puerto. A ver. ¿Ves? Ahora, puedo pasar en una clave de mapa de configuración ref. Si no quieres pasar todo el mapa de configuración, puedes elegir solo la propiedad que usas. Pero la mayoría de las veces, no hago esto. Lo que hago es, esto es bueno. Cuando estás usando el mismo mapa de configuración para mucho valor, digamos que tienes la misma aplicación que usando el mismo mapa de configuración. Pero realmente no lo encuentro ideal. Si tiene una aplicación, deje que la aplicación esté cableada a una confinación Una aplicación, un mapa de conflictos, una aplicación, un mapa de configuración. Eso es lo que en realidad prefiero. Yo sólo quiero mostrarles esto también existe. Cobenc es muy dinámico en serio, y es muy, muy divertido de usar Sólo quiero mostrarte todo. Ahora, agregue los datos del mapa de convicto al volumen. A ver. El volumen poblado volumen, esto no es lo que estoy buscando. Agregar transportar volumen específico del parque. Eso no es lo que estoy buscando. Déjame hacer una pausa en este video y volveré. Bien, chicos, gracias. Así que estoy de vuelta. Esto es configurar todos los pares de valores clave en un mapa de configuración como un entorno contenedor todo se utilizará, todo esto se utilizará directamente. Entonces eso es lo que estaba buscando. Entonces ahora que lo tenemos, vuelve aquí, si ves esto, solo tenemos que escoger esto.th estaría bajo porque esto es Yam Bajo Yam Bajo nombre imagen commerce environment from Entonces esto es lo que necesito. Entonces si vuelvo aquí a mi así que voy a hacer una VM. Lo que voy a hacer es dejarme ver si puedo dividir esta pantalla. Creo que del lado de Windows. Entonces esta genial. Creo que puedo dividir esto. Esto es lo que necesito. Solo necesito establecer esta parte aquí. Yo solo haré VI demo vengo aquí abajo, tiene que estar en la misma línea con esto. Misma línea vemos la misma línea. Imagen veo imagen, nombre, tiene que ser la misma línea, de lo contrario, no la encontraría. EMV de Entonces este mapa de configuración, el mismo nombre, por favor, el mismo nombre, cómo se ve exactamente el mismo nombre No deberías mostrar tu escritura correctamente, solo copia. Después columna, luego Sa nombre del espacio. Recuerda que es MO, también tienes que asegurarte de eso. Cuál es el nombre y el nombre de nuestro mapa confinante también es demo, También se llama la demo Eso es lo que me gusta hacer. Si tu aplicación es como un servicio de pago, vamos a configurar el servicio de pago. Si tu mapa de configuración o mapa de servicio de pago, me gusta darte el mismo nombre para que sepas exactamente mismo estoy usando exactamente lo mismo. Todo bien. Con esto hecho, hemos podido configurar con éxito todo lo que necesitamos. Entonces si cierro sistema, si acredito si corté el archivo demo, ves, esto ahora se refiere a esto. Debido a que esto está apareciendo antes de esto, esto se creará, luego cablearía esto luego se crearía buscando este mapa de configuración. Si lo encuentra, entonces escoge la propiedad y la usa. Entonces esas son las maravillas de los cubanos, esas son las maravillas. Para después usarlo, hay que hacer cubo, cortar dos, aplicar. Entonces la gente se pregunta, pero han visto comandos como ubcotu crear y Qu Cotul. ¿Cuál es la diferencia? Cucuu create simplemente significa que no has creado un recurso antes CucURL Apply significa que este recurso ya existe. Sin embargo, el archivo de recursos que estoy tratando de definir, la configuración final contiene cambios. Así que por favor revisa los cambios y actualizaciones porque usamos CPC para crear para una actualización, si te dices que ya existe y se ejecutó pero Cotul aplicaría siempre estaría encendido Me gusta simplemente usar Q Cotul Aplicar. Si es uno nuevo, si es uno viejo, siempre va a funcionar. Entonces ese es el truco que usé. Después F después escojo el archivo. Mi archivo es una demo amo. Ver mapa de configuración creado y este creador. Vamos a spa este mapa de configuración volverá a esto para ver si todo funciona correctamente. Debido cubo cortó dos mapas de configuración. Recuerda, solo obtén una demo de CMS. Verás, esto existe. Esto no se muestra en ningún lado. Esto crea con éxito. Yo lo haré describir, eso es lo que describen. Esto describe ves los datos hay esto y el valor es esto es increíble, chicos, increíble. Ahora vamos a explorar una olla. También hay un comando Keep cut para conseguir todo. Entonces esto te muestra el pod te muestra el servicio a través de este despliegue, aún no tenemos el servicio. Sólo estamos manejando esto. Verás, ni siquiera estoy corriendo todo, demuestra que este tipo ya está corriendo. Esto es increíble, chicos. El ganado de cubo recibe cáscara. Verás, esto se está ejecutando. Es decir, no falló. Si tuviera que explorar, vamos a registrarlo. Cube troncos CatUGS, o troncos Cucatu. Mm te mostré registros, es para vaina. Registros de gato, luego paso en nombre de la vaina. ¿Puedes ver todo lo creado? Encontré esto y pude ejecutar con éxito automáticamente cableado el mapa de configuración. Este tipo definitivamente está bien. Entonces, ¿cuál es el comando que usé aquí? Déjame ver mi rasguño? Recuerda a los lunares usándolo abierto. Puedes usar un cartero aquí. Entonces estoy usando el despliegue aquí. Entonces esto es lo que se supone que debo llamar. Ahora, nos encontraríamos con un tema aquí. Nos encontraremos con un problema. Les voy a mostrar, chicos, cuál es el problema. Recuerda que esto es solo un captador. Puedo usar un rizo, ¿verdad? Si uso un rizo, solo pasa esto en Esto básicamente debería funcionar, ¿verdad? No deberías tener ningún problema. Si vas a conectarte, no hay nada en ATT. ¿Por qué es incapaz de conectarse? Esto es exactamente lo que estoy tratando de sacar a la luz. Debes entender que una vaina es un entorno. Tienes una mejor manera de explicar esto en realidad es sacar a colación mi Joio así que esto podría darnos porque si no entiendes esto, luchas, y ni siquiera sabrías lo que realmente está pasando, ¿verdad Quiero reducir esto un espectáculo. Sí, podemos. ¿Descartar? No. Deseche, bien, deseche, Bien. ¿Qué tal esto se detiene que creé hace algún tiempo Consigamos uno nuevo, un espacio en blanco. ¿Bien? Entonces la hay. Entonces, piénsalo así. Este es todo su sistema. Este es todo su sistema. Posteriormente, este es todo su sistema. Ahora, todo tu sistema puede ser un nodo, el nodo Cuberntis es un sistema lineal Cada nodo de Kubernetis es un sistema , ¿verdad? Es un nodo. Ahora, cada nodo, solo voy a explicar que puede que no sea con precisión, sino como gas en el. Cada nodo del sistema tiene ahora un clúster de Kubernetis. Esto es ubertis Entonces este es su sistema operativo, el dektop Docker de Hals Cual es tu anfitrión, supongo, donde puedes conectar tu 80 82. Pero hay un ambiente que es el cúmulo ubertis. Dentro de este cúmulo ubertis, vamos a hacer zoom ahora tienes un pod aquí se puede valorar. Solo estás golpeando esto cuando haces 80 80. AT ET sólo le está pegando a este tipo de aquí. Entonces ATAT sólo le está pegando a este tipo de aquí. No entra aquí. Esta es tu vaina. Déjenme darle un texto a esto. Pod. Digamos que este clúster de Kubernetes Digamos que es el cúmulo de Cubernss. Este es tu anfitrión. El anfitrión podría ser un sistema Linux donde realmente se colocara a los cubanos La mayoría de las veces siempre es un servidor Linux, y este es un host. Mientras golpeas ATT, esto es lo que intentas golpear. Esto ni siquiera puede entrar aquí en absoluto. Esa es una capa de seguridad. Ahora, ¿qué nos lleva al siguiente paso? ¿Cómo evalúo el pod desde el host desde el sistema host o el propio host Estoy hablando de quante hizo puerto. Quiero valorarlo afuera que estamos haciendo. ¿Cómo lo evalúan? Después hay un concepto llamado port forwarding, Port forwarding, que voy a explorar en el siguiente video. 140. Reenvío de puertos v2 90p mejorado en K8s pod 4: Bien, chicos, muchas gracias por volver conmigo. Todo bien. Esto es Z aquí. Ahora, le expliqué que esto es lo que estás tratando de golpear. Todo el sistema, si lo miras, tiene de cero a 65,535, estoy en lo cierto. Macetas, ¿verdad? Entonces, al intentar golpear esto es diferente de este servidor, ¿verdad? Ahora estás teniendo un Linux. Ahora, cada contenedor, recuerden que les mencioné chicos que la vaina contendrá contenedores, yo contendrá contenedores. Debes entender que el entorno que incluso está ejecutando que tu aplicación está ejecutando en tu contenedor es como un sistema en sí mismo, es decir, en pod. Entonces el como está en las vainas, quiero decir. Lo que estoy tratando de sacar es esto. Déjame sacar esto a la luz. Vamos a expandir estos un poco. Suspenden estos un poco. Vamos a abarcarnos estos un poco. Este bod contiene un contenedor contiene un contenedor. Sólo quiero explicar esto contiene un contenedor o contenedores. Contiene estos contenedores, ¿verdad? Y los contenedores en sí diez chico para entender esto, este contenedor está ejecutando una aplicación que tiene un sistema en sí mismo que tiene de cero a 65,535, Macetas. Este tipo Este tipo tiene lo mismo. Entonces estás tratando de conectar estas ollas a estas macetas. Quieres reenviar un bote aquí. Estas macetas deben estar vinculadas a una olla. Entonces, lo que estamos tratando de lograr es vincular una olla aquí. ¿Por qué se mueve este artículo? Creo que está tratando de ver sacar esto, así que vamos a traer a este tipo aquí. Entonces déjame traerlo aquí. Entonces esto debería estar conectado aquí. Y este tipo debería estar conectado a esto. Bien, creo que deberías hacerlo. Sí, esto debería servir. Así que estoy tratando de conectar una olla aquí a una olla aquí. Entonces, si golpeo un bote en este host, entonces vendría a este contenedor, donde se está ejecutando mi aplicación, y ahí la golpeó en realidad golpeó las mismas macetas. Porque necesito que rebobines este video para escuchar para entender realmente lo que realmente mencioné de nuevo Las ollas que corren sobre tu anfitrión quieren estar vinculadas a las ollas que corren sobre este tipo, y eso es exactamente lo que queremos hacer ahora. Y ese es un concepto en cubano que se llama pot forwarding, ¿ verdad? Reenvío de ollas. Ahora la aplicación se está ejecutando. Quieres conectar una olla en este sistema en particular, recuerda esto incluso ubuntu, ¿verdad? Un sistema Linux al contenedor que ejecuta este tipo. Entonces, ¿cómo hago eso? Hay un concepto entonces haces un cubo cortar un cubo cortar dos, espero recordar el comando. Entonces vamos a hacer antes que nada, ¿cuál es el nombre de la vaina? Obtener vaina. Este es el nombre de la vaina, recuerda, por favor tenlo en cuenta. Entonces lo que entonces hacemos es bien entonces hacer cubo cortar macetas hacia adelante. Macetas hacia adelante. Entonces el nombre el nombre del nombre de la aplicación del nombre del pod del pod, recuerde el nombre del pod. Ese es el nombre del pod es demo, recuerda que el pod es demo. Entonces queremos vincular ocho en el pod a una maravillosa auditoría a ocho en el anfitrión. Ahora podemos ver esto. ¿Qué dice? Se está reenviando desde las ollas locales, estas ollas locales. Eso es contenedor local. Está reenviando TAT a los anfitriones, que es ATAT Esto no se está ejecutando en segundo plano. Entonces puedo entrar aquí. Déjame entrar aquí y luego dividir esto. Verás, me acaban de dividir la proyección. Entonces puedo hacer una llamada. Lo que intenté asesinar no estaba trabajando. Hagamos una llamada. ¿Ves? Tengo las lunas de vuelta. Espero que este concepto sea claro, chicos. Vamos a hacerlo bonito. Vamos a hacerlo bonito. Creo que hay una manera de hacer las cosas bonitas en creo que es JQ o JP? Ahora no me acuerdo. Lo siento, ahora no me acuerdo. Hay una manera de formatos bonitos, Jason Jason entradas en IJQ o JP? ¿Es bonito formato o algo así? No puedo recordar. Bien. Déjame cómo formatear bastante. Creo que es bonito formato formatos bonitos. Déjame fijar tu línea. Vamos a formatos bonitos Jason y Linux. Ponlo ex Jason Linux. ¿Qué es otra vez? Príncipe Bonito. ¿Qué es? ¿Cuál es el comando otra vez? Creo que es Jason. Creo que es Jason Jason subrayado PP, ¿es esto correcto? Sí. Sí. ¿Puedes ver? Jason subraya PP Ya ves que soy capaz de conectarme realmente. Chicos, espero que este concepto sea claro. Déjame repasarlo una vez más. Tienes un servidor, que es un host. Kubansis se desplegó dentro de ese contenedor . Dentro de ese anfitrión. Ahora quiere evaluar que quiere llamar a su servicio, que se desplegó dentro del contenedor Kubansis Estos dos son dos entornos diferentes. Este es un entorno diferente. Es ambiente aislado dentro de este ambiente. Ambos están ejecutando sus propios datos, pero sus propias macetas. Quiero conectar las ollas de aquí a la olla aquí para que cuando golpee a este anfitrión, para reenviarla para entrar en esto y llamar a lo que sea olla que reenvié aquí y eso va a funcionar. Para ilustrar esto más, ahora considere aquí este concepto. Vamos a cerrar esto. Vamos a adelantar eTet a 1991. Entonces, si ahora llamara al 80 EightK ¿qué pasaría? ¿Puedes ver? Ya no entiende esto. No obstante, si ahora lo remito a 90 si ahora llamo 1991. ¿Conseguí esto correctamente? ¿Qué me perdí? Anfitriones locales. Conexión. Esto está bien, veamos. Manejo de esto, esto, esto. Apenas los minutos. ¿Lo estoy mezclando? Apenas los minutos. Déjame empujar este 90 1991. El ocho. Por dirección de mezcla, probablemente mezclándolo. Bien, probemos esto. Ho esto es para los anfitriones. Esto es para el contenedor. Pensé que lo estaba haciendo al revés. Creo que ahora entiendes el concepto. Así puedo cambiar poste el bote al que realmente quiero conectarlo. Entonces chicos, aquí hemos tocado un concepto bastante genial. Les he enseñado a hacer un montón de cosas. El concepto que actualmente estás buscando en el reenvío puntual porque no pudiste acceder implementamos un ubertípodo que está conectado config map. Entiendo. Creo que se puede relacionar eso, pero todavía no sabíamos cómo conectarnos. Entonces esa es nuestra aplicación, y ahí es donde surge el concepto de poner adelante y surge. Hay mejores formas en que no se recomienda pod , no se recomienda para GD play a pod Ahí es donde viene a estar el concepto de despliegue. Pero el concepto de implementación ahora tiene venir con algo llamado servicio, y ese servicio puede ser como un balanceador de carga para luego llegar y obtener todos esos detalles Más de esto viene, pero en la siguiente parada, van a explorar el servicio en el siguiente video, los veo chicos en el siguiente video. 141. Puerto de nodo de servicio K8s: Bien, chicos, aquí, gracias por volver conmigo. Hemos podido explicar estos detalles, y podremos ver esto. Esta era la ruta del reenvío de pod, así que ya no estamos usando eso, así que solo voy a poner esto en cola. Todavía tenemos nuestra cápsula funcionando. Así que mantenlo trabajando consigue PO. Vea nuestro pod funcionando. Entonces, ¿cómo exponemos Z un servicio? De hecho podrías entrar ahí. Este es un comando muy sencillo, solo usamos exponer. Entonces queremos exponer entonces el nombre del pod de exposición de servicio, estás tratando de exponer el pod. Entonces probablemente le daremos un nombre queremos darle un nombre. Vamos a llamarlo servicio de demostración. Esto lo podemos hacer. Entonces estás tratando evaluar realmente la vaina desde, digamos, usemos lo mismo, ATAT Después las macetas objetivo. Yo no dirigía esto. Yo solo haría un tiro en seco a las macetas objetivo. Target pods, T. Con eso en mente, veamos. Veamos ahora el servicio. Esto es demo, sí, sí. Necesitamos el nombre. Es el nombre del pod que es demo. Entonces ese es el nombre de la vaina. Entonces, ¿cuál es el nombre del servicio? ¿Nombre? Entonces llamémoslo un servicio de demostración. Creo que lo estaba mezclando. Eso será un servicio de demostración. Entonces quiero correr como una corrida en seco. Veamos cómo se verá. Ejecutar en seco, luego lente, luego O, DyamOH ¿funciona esto? Bien. ¿Pueden ver a estos chicos? Esto es simplemente interesante. Muy interesante. Entonces ahora, soy capaz de ejecutar un servicio. Entonces hay un concepto llamado servicio. Los servicios son de tres tipos. Podríamos tenerlos como IP de clúster, podríamos tenerlos como balanceador ud Podríamos tenerlos como una olla ud. ¿Cuál es la diferencia? La IP del clúster no es accesible desde el exterior. Este es el tipo de servicio que usas dentro de pods o dentro de servicios en tu clúster de cupones que no es accesible para el exterior. Por lo que nadie podrá evaluar que solía en realidad tal vez el servicio por cable. Un buen ejemplo podría ser que tengas un front-end funcionando en el mismo entorno tu back end pero tu front end quiere evaluar un back end que tenga varias instancias. Entonces, a menos que tu front end también tenga varias instancias, no puedo llamarlo pod directamente. Prefiero llamarlo servicios que harían balance de carga a varios pods varios. Ese es el concepto. Necesito que ustedes vuelvan a escuchar esta parte. Desea conectarse realmente a un servicio o a un pod que tenga varias instancias. Un servicio es la idea. El servicio es como la interfaz que se encuentra al frente y se conecta. Podrías tenerlo como IP de clúster. De esa manera podrías conectarte y una vez que estén en el mismo entorno, podrías elegir la IP. Yo wal renderizo la IP de su servicio y la IP del servicio puede resolver a sus pods ejecutando su entorno. Eso es un poco. Si se está ejecutando como un pod de nodo, nodo pod simplemente significa que quiero evaluar los pots de este servicio desde el exterior. De la misma manera que hicimos post forwarding. Eso es lo que las ollas de nodo. Los potes de nodo SE son reenvío puntual. Quiero verlo desde afuera. Entonces Load balance, como suena su nombre, solo desea equilibrar la carga todo, pero no exploraríamos el balance de carga en esta sección porque Load Balance normalmente funciona con proveedores de servicios que tienen plataformas de equilibrio de carga, que entonces probablemente tendrían un nombre de dominio, en realidad mapeando a través de él, que puede acceder probablemente HDP como wood.com y el como. Espero que en realidad suene mejor. Bien, esta parte quiere decir a lado, no podemos acceder al balanceador de carga, así que cambiaría esto Lo que haría es entonces crear esto dentro voy a crear esto dentro voy a crear y agregarlo para que se siente en el mismo archivo Así demo punto Yermo. Estoy seguro que ustedes saben lo que estoy haciendo esto. Carritos o VI demo punto Yamo. Aquí tenemos esto. De hecho voy a entrar y hacer lo mismo aquí, dash, dash, dash, ¿verdad? Esta vez, recuerda, los puntos objetivo, dicen, ahí está esta parte. Ahora voy a agregar voy a agregar un concepto. Les voy a mostrar chicos, traigan la documentación. Trae a colación la documentación. Echemos un vistazo a los puertos no. No en macetas. ¿Yo sólo un contrafind? No en macetas. Estas son macetas de notas ver el uso, un tipo, notas. Ya ves, ahora tenemos que usar un tipo, note pots. Ver no recuerdaMPK it from ¿Dónde está la etiqueta? Simplemente bien. Está bajo especificación lugar bajo especificación. Entonces bajo spec, voy a tener un tipo node pots, y cuando tengas un tipo node pot, tienes que asegurarte de pasar en los botes de nota. Verás, NodePots solo está disponible en esta gama. No se puede hacer 88 con los pods de nodos. Recuerda, mencioné que la olla es 0-65535, ¿verdad? Pero sin embargo, cuando estás usando macetas de nodo tienes que elegir dentro de este rango. Eso es lo que sólo está disponible para ti. Voy a recoger a este tipo ya asignado en las ollas. La olla es una olla es lo que la olla en la que se encuentra el servicio. El punto objetivo, el bote objetivo es la vaina las macetas de la vaina, la vaina a la que intentas acceder, ¿verdad? Eso lo expliqué en el último bit. Entonces la última parte que estamos tratando de hacer aquí. Voy a entrar aquí y voy a poner un bote de nodo. Nodo Desnudo Hots. ¿Qué acabo de hacer? Oh, hombre, estropeé el archivo. Hagamos unas botas. Vamos a editar. Esto es lo que estamos haciendo. Bien. Por lo tanto, el tipo de especificación de los potes de nodo. Macetas de nodo. ¿Eso es exacto? Así que vamos a confirmar eso. Sí. No ollas, entonces las últimas partes que entran aquí. Bien, todavía en estado de ánimo de edición. Las macetas de nodo. Entonces escojamos el rango. Recuerden, 3 mil. 30,000, solo elijo 10,007 o simplemente puedo usar algo diferente que estamos usando aquí Yo sólo puedo escoger 32,007 60. Todavía está dentro del rango, 30 mil. 2000 lo siento, 2760, todavía dentro del rango. 32,760. Sí, puedo elegir esto y esto funcionaría. Ahora, ahora estamos usando un balanceador de carga, así que básicamente puedo usarlo. Puedo quitarme esta . Ahora usando un balanceador de carga. Me he quitado esto. Recuerden, lo he distinguido. No lo he hecho. El archivo estaba desordenado así que algunos aquí. Yo haré esto. Voy a guardar esto. Todo bien. Entonces la demo de Kat. Todo bien. Entonces tenemos esto. Lo que voy a hacer, recuerda, te mencioné si tienes el servicio encendido antes de que entonces puedas aplicar. Aparte de que corremos, creamos, corremos, queremos aplicar ahora, hacer un cubo. Yo uso a este tipo para exponer realmente. Estoy seguro que ustedes pueden relacionarse en caso de que necesiten esto, ¿verdad? Muéstrales chicos para que realmente se presenten. Eso también lo demuestras. Sí, eso lo demostramos. Entonces uh sí. Nosotros haremos esto. Yo sólo quiero subir un poco y recoger el bote adelante. Recuerda, el primer tipo aquí es para el anfitrión, mientras que el segundo es para la propia vaina. Yo sólo quiero mostrarles a ustedes para “pot forward”. De hecho, he agregado los comandos, así que solo quería actualizar mi lista. Ahora que tenemos esto, ¿qué hacemos? Sí recuerdo CAT demo amo, entonces tenemos todo esto. Todo lo que lo configuramos, luego podemos hacer corte de cubo dos aplicar. Recuerda la diferencia en demo. Entonces, ¿puedes ver que esto no cambió? Esto no cambió, al igual que, oh, ya se ha configurado. Concord acaba de ser creado nuevo. Esto se acaba de crear nuevo. Vamos a explorar. Mantener cortado Kcat dos obtiene PO SVC Y ustedes se preguntan, ¿qué acabo de hacer? Yo no hice nada. Cuando quieras llamar a dos Vss o tres viseras juntas, podrías hacer esto Podrías separarlos con un comando y te va a conseguir todo. Esto es todo lo que estoy manejando. Digo, consígueme la vaina. Consígueme el mapa de configuración, consígueme el pod y consígueme el servicio. En realidad agregaré este comando también, así que también está disponible para ser usado. Entonces entiendes eso y ya puedes ver, estamos manejando todo esto. Ahora, Asumi no es un balanceador de carga, un balanceador de carga automático se mapeará una IP pública que IP estaba disponible pero no lo estamos haciendo Entonces esto es lo que estamos haciendo. Entonces tenemos que ver esto algo así como un reenvío de bote que ahora está reenviando 80 80 a 32,007 60 Eso es lo que se está haciendo casi como internamente. ¿Entiendes? Entonces con esto, vamos a evaluar ahora para que no podamos evaluar TI para estar evaluando desde 32 mil 760. Hagamos nuestro Kern Justo lo mismo lo estaremos haciendo o kern. ¿Cómo se llama llamada? Bien, sí. Entonces el Kern, en esta ocasión va a estar evaluando desde ese bote como 2760 entonces como lo hemos hecho antes, vamos a formatear, Jason en el Sco PP Todo bien. Verás, esto funciona. Esto funciona bien. He podido explicarles cómo pueden usar servicio en coberts, cómo pueden exponer Una vez que tienes una cápsula funcionando, no necesitas realmente empezar a preocuparte por tu cabeza. Solo usa el comando para exponerlo, exponerlo. Entonces recuerda, como también mencioné, necesitas cambiar realmente. Necesitas realmente hacer las ollas de modo Notep te dije nota ollas es más como el reenvío de ollas Le dije que hay tres tipos IP cerrados, note pot, balanceador de carga El balanceador de carga es para proveedores de nube que mapean automáticamente una IP pública, lo que no está haciendo aquí ¿Cuál es el nombre? El tipo de cierre se usa internamente para comunicar internamente por qué las ollas de humor es lo que estamos usando en este momento para evaluarlo desde el exterior. Y eso es exactamente lo que hemos podido lograr aquí. Espero que esto sea genial, chicos, y espero que hayan encontrado esto muy atractivo hasta ahora. Bien, con esto hecho, hemos podido conectar realmente sus servicios, ¿verdad? Y lo último pero no menos importante de lo que vamos a estar hablando, que es el maestro de armas de todo, que se utiliza en la producción. Por lo que el pot forward no se utiliza en la producción. La exposición de servicio para la vaina no es como en producción. Lo que se utiliza es el despliegue. Repito lo que es qué despliegue. Entonces, el despliegue es lo que se usa porque el despliegue nos sirve para poder establecer el número de instancias del pod que se ejecuta a voluntad Podemos reducir, podemos escalar. ¿Hacemos todo esto? Quienes hacen todo esto. Os voy a mostrar chicos cómo funciona en el siguiente video. 142. Despliegue de K8s: Bien chicos, gracias por volver conmigo. Esto es Z aquí. Ahora hemos llegado a la parte más emocionante de usar Cuperti, que son las implementaciones, ¿verdad? No es lo más emocionante de esto. Muy divertido, de verdad. Al menos ese es el quid de lo que estamos tratando de lograr aquí Ahora, no podemos usar el pod ya creado porque se supone que la implementación administra tus pods, se supone que administra tus pods y se supone que debes construir para escalar hacia abajo, puedes aumentar la instancia, las instancias. Con ese concepto en mente, necesitamos hacer cola al pod. Tenemos que sofocar los servicios están disponibles. Tenemos que hacer cola, pero podemos dejar el mapa de configuración porque el mapa de configuración se utilizará aún cableándolo. ¿Qué hacemos? Yo explicaría esto en detalle. Cubo dos. Para los que están cansados como yo, tecleando esto para que solo puedas alias. Alias, Q dos, solo puedes establecer clave. Entonces vamos a Keep Koto, ¿verdad? Kupkato Entonces ves un skip Koto. Yo puedo hacer K. Bien, consigue CM, SVC SVC significa servicios. Puedes escribir servicios o el formulario corto en SVC. Entonces qué pod PO. Entonces servicios en ningún orden en particular. Entonces haces esto, así que tenemos todo, ¿verdad? Entonces quiero sacar a este tipo porque ya no lo necesitas. ¿Qué hacemos? Me pondría en cola Eliminar pod. Bien, qué, primero eliminemos el servicio. Eliminar SVC SVC, el nombre es Demo service. Todo bien. Entonces, volvamos a ejecutar esto. Así que ya ves, ya no tenemos servicio. Así que vamos a eliminar el pod ahora. Este es el servicio POT lo siento, esto es Demo más bien. Así demo Periodo de Gracia. Periodo de gracia DF. Oh, lo siento, Dash, lo que te guias. Eso es ir. Vamos a comprobarlo de nuevo. Todo bien. Solo tenemos esto disponible. Ahora entonces necesitamos entonces crear el archivo de implementación ahora. No estaríamos usando el servicio estaría exponiendo el archivo de implementación. Ya no la vaina. Recuerda el pod, el servicio expone un solo pod, que es el pod que hicimos antes. Pero imagina si ahora tienes varias instancias de una vaina. El servicio se conectaría entonces con el despliegue que está administrando todos los pods y exponiéndolos desde un solo punto de entrada. Entonces, una vez que lo golpees, irá a cualquiera de las vainas por defecto. Estoy seguro que es más como que no sería un round robin, como un balance de carga y un equilibrio de carga automático dentro del despliegue cuando lo golpeas a través del servicio, para luego marcar cuál está menos ocupado y volver a ti. Teniendo eso en cuenta, ¿cómo se crea una vaina? K, crear, implementar o usar implementaciones en su totalidad. Desplegar es una forma corta, implementar, luego el nombre del despliegue, lo llamaré implementaciones de demostración Entonces dash dash imagen. ¿Cuál es la imagen que estamos usando? La imagen que estás usando es Zico Z, ¿recuerdas? Después guión demo, KHS, luego 10. Estoy seguro que esto es Clays, luego la olla, ¿cuál es la olla a la que estás apuntando? El bote es ATAT. ¿Nosotros? Sí, ATT. Entonces hagamos un giron Líneas Dash gyroun, O, Yarmo. Cuántas réplicas queremos dash dash replica, Réplicas. Son réplicas o réplicas o finales si no lo ve Queremos menos tres réplicas, réplicas dash dash, Esto es lo que la vaina no tiene. Muy bien, Sky fácil. Aquí soy una réplicas, y esto me ha dado exactamente lo que necesito chicos Dejaría el archivo demo que hemos creado hasta ahora, lo dejaría solo y procesaría que en realidad lo publicaría en una carpeta de recursos. Así que vamos a hacer es conectemos esto a un archivo llamado Deploy. Yo lo llamaré demo. Implementación de demostración. Esta debería ser la mejor demostración de despliegue de Yarmo, Thermo desplegado o Yarmo Así que los CATs, luego despliegan, para que podamos tener todo junto. Después despliéguese. Ya ves que lo tenemos. Voy a seguir adelante y después hacer una demo CATS punto Yermo. Recuerdo que necesitamos el pase porque necesita evaluar realmente el pase para el mapa de conflicto. Haré un despliegue de demostración VI, luego haré un inserto, luego pasaré esto aquí, luego volveré aquí, luego haré guión guión, guión Ahora tengo mi mapa de configuración. Mi mapa de configuración vendrá aquí para conectarlo. Recuerda que también necesitamos luego entrar aquí para luego cablear estás cableando el mapa de configuración. ¿Recuerdas? Esto está en el mismo nivel que esta parte, este ambiente de esperanza lo conseguí correctamente. Entonces déjame ir a este expediente. Solo vayamos a este expediente. Entonces lo que quiero hacer es que vayamos a este archivo aquí. Sólo puedo cortarlo directamente demo yamo. Entonces esto es lo que necesito entorno desde entonces config MapRef. Entonces, ¿cuál es el nombre? El nombre es Demo. Todo bien. Se puede ver que los chicos han podido hacer este éxito con él. Esto es exactamente lo que necesitamos y hemos podido lograrlo de hecho. Bien, chicos, esto se ve bien. Esto se ve muy bien. Hemos podido realmente hacer todo lo que necesitábamos hasta ahora, y esto en realidad es bastante exacto. Bien, así que en realidad tenemos esto realmente resuelto. Entonces creo chicos, ustedes entienden lo que hemos hecho hasta ahora. De hecho, hemos podido cablear esto reemplazar el archivo de implementación. El archivo de implementación ahora usa la configuración. Entonces el archivo de implementación es lo que estamos usando ahora. Así que vamos a ejecutar esto. Veamos esto accesible. Si esto es accesible, eso es una gran victoria para nosotros, chicos. Entonces solo podremos exponer el despliegue desde el servicio, y voy a tomar exactamente este mismo formato, ¿ verdad? Exacto mismo formato. Y sería bueno ir, chicos. Bien, así que hagamos esto. Entonces voy a hacer esto. Y bien, vamos a ejecutar este archivo. Vamos a ejecutarlo. Voy a hacer, una vez más, asegurémonos de que nada corra. Verás, solo se está ejecutando el mapa de conflictos , así que solo voy a despejar esto. Solo cortaré dos aplicar porque el mapa de conflictos ya existe. No quiero recrearlo F, luego despliegue Deploymo, ejecutemos Verás, demo creada, implementación creada. Vamos a ejecutar otro comando Esta vez solo empieza a desplegar. Dame todo. Verás, tenemos tres instancias ejecutándose. ¿Esto no es interesante, chicos? Tienes tres instalar porque ves el pod, está mostrando el número de pod existente. Tres vainas están funcionando porque son tres. Tres implementaciones porque obtienes las tres instancias usando tres disponibles tres, y esto es lo que encontramos. Esto es simplemente increíble. Esto es increíble. Kubernetes es simplemente increíble. Necesito mostrarles chicos para que ustedes vean cómo es y disfruten usando Kubernetes Ahora que hemos hecho esto, necesitamos saber si está funcionando. Necesitamos saber realmente ¿esto está funcionando o no? Tenemos que exponer. Tenemos que exponer el despliegue. Tenemos que exponer el despliegue ¿verdad? Y para exponer las implementaciones, tenemos que ejecutar tenemos que ejecutar la aplicación Tenemos que ejecutar el servicio de exponer para hacerlo realmente. Así que de la misma manera que logramos el último, solo voy a hacer eso y lo agregaría a un archivo de despliegue, y eso haría que las cosas en realidad se muevan manera más espontánea. Entonces, ¿cómo hago eso? Hago PC dos, expongo implementaciones de despliegues. Hagamos algo. Necesito el nombre de mi archivo de implementación. Bien, ese es el nombre. Así que recuerden que lo he usado como, exponer despliegue, o puedo decir exponer despliegue, lo que funcione para usted, despliegue ¿Cuál es el nombre? El nombre es demo Deployment. Implementación de demostración. Implementación de demostración, ese es el nombre, implementación de demostración. Entonces, ¿cuál es el tipo? Quiero tipo. Quiero tipo. Quiero tipología node pots porque eso es lo que necesitamos, Node pots. Recuerden, podríamos crear esto de manera declarativa. Pueden ir a revisar la documentación, pero solo les estoy mostrando una manera sencilla tener esto realmente cableado. Entonces, ¿cuál es la olla de la vaina que estás tratando de evaluar? La vaina la vaina es 80 80. Hagamos un Gyro en él. Gyron liens O. Eso es O Yarmo ¿Ves? Esto me lo da. Obtiene el servicio. Simplemente haré lo que voy a anexarlo a mi archivo de despliegue de demostración Impresionante. Voy a aclarar esto. Entonces haz VI demo, despliega, y tengo eso. Si vengo aquí, aquí es exactamente donde está. Comienza desde aquí. Mi hago esto, entonces solo hago dash, dash , dash y completa todo lo que necesito. Recuerda, cuando estás usando una olla de nodo como te mostré para la última parte cuando estamos exponiendo una vaina, necesitas agregar dos cosas. Número uno, ves que ha agregado el tipo nodo pot, así que no importa que esté arriba o abajo, sino que debe estar en la misma línea con esta sección de pot. Esto está hecho. El siguiente objetivo es que necesites agregar tus macetas de nodo NodePort, desde qué bote de nodo quieres acceder a él Así que me quedaré por ahí. Yo solo uso al azar. Entonces 32 000. Bien. Eso es tan 32 mil, así que eso funciona el resto Entonces con esto hecho, solo voy a hacer esto. Voy a estar bien. Ahora que lo he configurado todo, pueden pausarlo, chicos. Déjame solo cortarlo de nuevo por si quieres hacer una pausa aquí, solo para cortarlos caso a corte, así ya ves, es así lo que parece. Para que puedas hacer una pausa y ver comparar con lo que has generado desde tu propio fin. Me aseguro de que todo sea exacto. Una vez que muestres que todo es exacto, entonces puedes hacer una solicitud de K. Recuerda, estoy postulando porque ahora tengo dos recursos creados. No quiero recrear. Pero a medida que cubas, aplica, luego despliegue de demostración. Así que ya ves, esto no se crea. Esto no se crea. Esto se crea. Entonces hagámoslo ahora hagamos ahora todo esto para conseguir todo. Verás, tenemos un mapa de configuración, tenemos una demo, tenemos un puerto que se está ejecutando, no hay errores, tienes una nota puertos. Esto tiene un cerrado sin exón explicó qué es el En yp en el último video Entonces también tenemos esto, que es el bote reenviado a 32 mil. Esto hecho, voy a mostrarles algo un poco increíble, ¿verdad? Así que me alegro de estar usando a este tipo. Me alegro de estar usando ¿cuál es el nombre? Esta terminal. Este terminal me asiste puedo dividir pantalla, varias pantallas. Ya ves que tengo otra pantalla aquí, ¿no? Ahora bajo pantalla. Entonces vamos a conseguir una pantalla más aquí porque tenemos tres. Entonces, ¿qué voy a hacer? Quiero mostrarles chicos. Recuerda que podríamos usar troncos. Los registros podrían decirnos cuál estamos golpeando por vez. No sé si le agregué registros, pero ojalá podamos conseguir. No lo sé. Yo no comenté. Hombre, creo que no hice eso. Lo que ojalá agregué algunos registros aquí. Vemos entrar el registro, así que sabemos cuál se está evaluando por vez. Veremos cuál se está evaluando por vez. Creo que sería genial porque yo habría expuesto a los tres. Yo te habría mostrado tres solicitudes, ¿verdad? Las tres aplicaciones. Todo bien. Solo hagamos una demo. Si no lo entiendo, entonces probablemente sea algo que rápidamente me apresure a hacer y luego configurarlo todo de nuevo. Lo que voy a hacer es elegir a este tipo. Y voy a hacer K. Recuerda, no puedo hacer K aquí porque no he terminado como, aAsk Kekutu Entonces Alias, K a Kukatu no tengo que teclear un cuatro K tenias K a Windows, realmente no sé cómo usar en Windows. Bien. Entonces con esto, entonces hago un Kog K logs. ¿Ves? Esto me da los registros. Ahora quiero quiero verlo. Quiero vigilar los registros. Iniciar sesión Kupkotpp Sigamos. Creo que es F. Creo que es F. Genial. ¿Ves? Yo puedo seguir. Yo elijo a este segundo tipo. Yo entro aquí y hago K, registros, F. Recuerda, podrías hacer DF antes o después no importa. Yo le sigo. Ahora ya ves. Entonces el último, elijo a este tipo y hago K logs, F. El último. Tenía estas tres instancias ejecutándose. Hagamos una llamada. Ahora, haz una llamada. Entonces déjame recogerlo de mi boceto. ¿Dónde está el boceto? Este tipo, voy a hacer una llamada, luego voy a hacer una V. V da más contexto. Yo contexto. Entonces obtienes Gen. Quiero ejecutarlo Quiero ejecutarlo Quiero ejecutarlo en Era el nombre ahora Quiero ejecutarlo. Digamos, todo en 1 segundo, y debería correr muy rápido. Me vendría bien un reloj, ¿verdad? Creo que puedo usar un reloj porque solo quiero seguir golpeándolo varias veces. Yo sólo quiero ver tratando de recordar el comando ahora. Hay un comando en Linux que te permite. Simplemente le das un tiempo y sigues llamando a los endpoints Creo que lo que voy a hacer es hacer una llamada. Déjame buscar dash, dash help. ¿Está aquí? Para todas las opciones, use la forma de ayuda de dash, todas. Ellos tienen. A ver, ¿tiene que pensar que es N o algo así? Ahora no me acuerdo. N. Usando pasa, eso no es lo que estoy buscando. Ver ahora, Sí. Creo que olvidé que el comandante estaba buscando. Podrías hacer un reloj. Un reloj siempre golpearía puede ver N en Linux, luego 02, luego curl entonces lo que estoy tratando de ejecutar, que es hasta el 2000. Recuerda que lo enviamos al 2000. Lo que esto hará es cuando agreguemos esto seguirá llamando a la aplicación confíe cada 0.2 segundos. Entonces puedes ver que está golpeando a todos estos nodos, todo junto, o a todo. Ves a cada uno de ellos moviéndose aleatoriamente, lo que significa que en realidad es balanceo de carga automáticamente. Pero sin embargo, no verás porque no agregué ningún registro, así podrás ver cuál se está moviendo. Lo que voy a hacer para habilitar esto para asegurar que tenemos esa funcionalidad y en realidad se podría ver que lo que voy a hacer es agregar un registro dentro de este contenedor. Lo haré en SLL para J en SLF en SLL para J, como me fui para J, luego entraré aquí justo antes de que se imprima, y haré Log Entonces diré que diré que es código. Prueba el código de Keke. Entonces pondré una marca de tiempo. Pondré una marca de tiempo Solo diré que la marca de tiempo y la marca de tiempo serán sistema que es Hagamos esto. Vamos. Una vez que está en esto definitivamente cambiar. Vemos que esto es salidas cada vez. Lo que voy a hacer es empujar rápidamente este registro de commits agregado a los puntos finales. Yo sólo hago esto. Yo solo empujo esto muy rápido, muy rápido. Estoy tratando de ver los tiempos casi 17 minutos ya. Bien, entonces ahora que hemos empujado esto, lo siguiente que voy a hacer para tener realmente este tono es VN paquete limpio. Entonces dash esta prueba de mantener. Ustedes ya están familiarizados con estos comandos, chicos. Solo estoy haciendo lo mismo solo para llevar esto a donde realmente podamos desplegar? Entonces esto para. Entonces el siguiente paso es Docker Yo lo haré DRM Image. Quiero eliminar los guiones d Demo, luego uno sí sirve A ver. ¿Cuál es el tema g? No hay tal imagen. Sí, sí, sí, eso es ZZ eliminado. Ahora construyamos la imagen. Yo seré Docker. Yo sólo entraré solo ayúdame a mí mismo. Construcción Docker. Dash T, ¿verdad? Dash T. Entonces vengo aquí puntos. Puntos. ¿Bien? Bien. Todo bien. Entonces con eso, así que vamos a empujar consigue Doka lo siento. Empuje Docker. Lo mismo. Yo sólo escogeré esto. Llamemos a esto 2.0. Vamos a codificar este 2.0. Eso simplemente sería más increíble. Vamos a codificar esta 2.0 para que se vea como la siguiente versión, ¿verdad? Eso lo convertiría en Docker Bud, 2.0. 2.0. Esto es más cvates. 2.0. Con eso hecho, entonces haré Docker, lo mismo Pero esta vez, lo haré Docker push, push lo mismo Empuje. Esa no es la p. pero luego empujo, empujo Bien. Todo bien. Esto luego empujará porque no tiene muchos detalles muy rápido porque ya tengo la mayoría de las capas disponibles. Con esto disponible, mientras esto esté funcionando, entonces vendré aquí y tiraré todo hacia abajo. Hacer corte de cubo, lo siento. Eliminar, desplegar. Es un despliegue de demostración. Así lo llamé yo. Eliminé todo lo que paré. Entonces llamemos a todo lo que tenemos. ¿Vamos a eliminar el servicio eliminar servicio.Esto es Servicio o eliminar como vemos, vemos el nombre es qué? El nombre es este tipo. Bien. Entonces no hay necesidad de servicios. Así es. Eso está bien. Eso está bien. Eso es todo. Bien, así que vamos a conseguir todo otra vez. Ya ves, todo se borra. Ahora, vamos a comprobar ¿esto ha empujado con éxito? Esto ha empujado con éxito. Y eso es empujado con éxito. Vuelve aquí. Haré una demostración VI, desplegaré, luego cambiaré la imagen. La imagen en servicio, recuerden, es ahora lo que 2.0. Ahora es 2.0. 2.0. Todo bien. Voy a hacer con esto, iré a Docker Hub. Entonces, si revisamos Docker Hub, si refrescas esto, ¿qué es este tipo? Refresca esto, vuelve aquí. ¿Por qué no hay refreshi? Este tipo no es refreshion. ¿Cómo te refresco? Este tipo, vamos a ver. No quiero ir a Docker Hub. Yo sólo quiero estar aquí, llama a esto aquí. Llama a esta búsqueda este tipo. Bien. Necesito esto, dame esto. Lo sé. Encuentra esto. Entonces ahora esto se está poniendo complicado. Vamos a DocHub Hub. Yo sólo voy a entrar. Esto es D Hop. Yo sólo voy a iniciar sesión. Contraseña de nombre de usuario. Ese es mi nombre de usuario. Mi contraseña está ahí mismo uso el mismo chico. Bien, entonces puedes decir que empuja esto. Vamos a abrir este tipo revisamos las etiquetas. Tienes varias etiquetas disponibles. Entonces hay un 2.0. Se puede ver. Bien, no hay problema. Voy a arreglar esto más tarde. Entonces es 2.0. Entonces tienes un 2.0. Eso es lo que estaba tratando de ilustrar. Volvamos rápidamente. Ahora que ya hemos hecho esto, volvamos al siguiente video para probar esto. Nos vemos en el siguiente video. 143. Despliegue de prueba en K8s: Oigan, chicos, aquí Z, este es el momento de las pruebas. Como pueden ver, he creado He abierto el terminal Windows, el terminal Linux. Lo primero que voy a hacer es despejar la pantalla. Vamos a traer esto. Este despliegue, asegurémonos de que esto es lo que tenemos aquí ya que pueden ver esto termina con los siete F cinco, 785. Así que lo traje aquí. Entonces solo estoy limpiando antes que nada, esta es una Clare para limpiar los registros y traer y poner en marcha, ¿verdad? Entonces los troncos. Entonces para esto, lo mismo. Si ves esto termina con un 785j VR 77, JVR 77. Entonces esto es correcto. Creo que ¿con qué termina esto? Yo no verifiqué eso. Bien. Hacer, NH correcto. Y el último es Z nueve, ¿verdad? Este es Z nueve. A ver. Bien. Todo bien. Ahora, tengo hay un concepto llamado reloj que te mostré puedes usar reloj. Mira, aclaremos este Watch, luego llegará al punto final en el momento que coloques, esto está disponible solo para Linux. Cuando hagamos esto, verás que todo se toca al mismo tiempo. Eso demuestra que está siendo balance de carga. Recuerda, estamos llamando a los anfitriones locales 2000, que es el pod de notas al que accedes. Está pasando por el balance de carga de servicio en todas las vainas. Vamos a darle a esto ahora. ¿Puedes ver? Todo está siendo evaluado. Esto, esto, esto solo va hasta el final, ¿verdad? Entonces esta es una buena prueba para que sepas que las cosas están funcionando con precisión, ¿verdad? Entonces pruebas para Linux, chicos de Windows que te cubrieron, no te desmayes Entonces lo mismo para Windows, solo haces un reloj. Así que nuestros proveedores vigilan esos murciélagos para que estén en los formatos exactos. Nuestros proveedores vigilan esos murciélagos para que ustedes los usen para Windows. Entonces haz una llamada y haz lo mismo a menos que golpee esto. Verás, está funcionando con precisión. Entonces esto es increíble, hombre. Bien, chicos, esto es exactamente lo que quería mostrarles. Y para aquellos que tienen curiosidad por el contenido del archivo de reloj o este es el contenido del archivo de reloj, el contenido es solo eso es todo lo que necesitas hacer, ¿verdad? Para que puedas acreditarte a ti mismo. Si no usas el archivo, puedes simplemente copiarlo o simplemente ingresarlo. Pero proporciono un archivo, lo pongo a su disposición chicos. Ahora que hemos podido probar esto y vemos que las cosas funcionan con precisión de la manera que deberían ¿qué sigue? Recuerde, tenemos que pasar a un proyecto de demostración para evaluar rápidamente cómo funcionarían las cosas y pudimos lograrlo. Entonces, lo siguiente que tenemos que hacer ahora es que necesitamos a nuestros proyectos base en los que estamos trabajando y que conozcas antes de usar este proyecto demo, nuestro pod base que es exactamente lo que usamos en este curso. Ahora traeremos la imagen, configuraremos el servicio de configuración, usaremos y configuraremos las implementaciones. Ahora, ya no voy a exponer pod porque solo te mostré cómo hacer reenvío de puertos, pero exponemos el despliegue, creamos un servicio, luego lo probamos para ver cómo funcionan las cosas. Esta vez también estamos cableando la base de datos. Ve ser un poco complicado, pero lo consigue hecho. Vea cómo se puede utilizar la base de datos. En lugar de usar un local que alma probablemente esté usando la IP de mi sistema. Entonces la IP de mi sistema es exactamente lo que se va a usar y eso se encontraría. Bien, chicos, volveremos. Volveremos a eso. Para esta, la IP, entonces hay un Neto CP. Hay una IP a la que se puede acceder o Sos el netoop probablemente voy a Les voy a enseñar cómo hacer eso. Una vez que llegas al siguiente video para la aplicación Base en la que estamos trabajando. Los veré chicos en el siguiente video. 144. CD de CI, parte 1: Oigan, chicos. Oigan, chicos, genial tenerlos de vuelta. Todo bien. En esta sección, básicamente, estaremos hablando del CICD Tenemos que ver una pista de lo que vamos a estar pasando, y es por eso que en realidad está aquí. ¿Todo bien? Ahora, descubrí que mover mucho mi músculo en realidad causaría que las cosas estuvieran creando algunas líneas punteadas en la pantalla y las cosas realmente se verán bien. En el paso uno, ves que estamos tirando del código. Ahora, lo genial es que tenemos algo llamado acciones que está disponible. Para ayudarnos a crear parte de esta tarea ya en GitHub, para que no tengamos que escribirlas nosotros mismos Ves que el código de extracción de filas de ruta es el paso uno, que está disponible. La parte para entornos virtualizados, que está disponible. Hay un concepto llamado runner, donde en realidad podrías poner en marcha un Windows o Ubuntu, usando Ubuntu en nuestro caso. Ahora bien, si te das cuenta de que en realidad se configuraría tenemos un entorno Java Mv en, no significa tirar dependencias, la compilación un AcbImage lista los Ahora para la parte de subir artefacto, ya hay una acción que nos ayuda a completar eso Pero la parte de descargar en el paso dos, también la tenemos disponible. Ya está disponible la parte de iniciar sesión en Sudoker o empujar en Sudoka. Sólo quiero mencionarlo. Entonces si realmente te desplazas dial lo ves, tenemos el concepto de corredor. En realidad se podía ver ese enlace. Ese enlace está realmente disponible. Uno por uno, solo moveré esto a mi otra pantalla y comenzaré a abrir los enlaces uno por uno. Empezamos a ver cómo funciona realmente. Para ello, vamos a tirar en el primer enlace, copiar esto. Todo esto estará disponible, ¿verdad? Esta es una almohadilla para corredores. Si miras cómo elegir un corredor, ya tenemos corredores disponibles. Así que podrías elegir corredores. Esto diciéndote que los corredores están disponibles Linux, Windows, Macows Voy a estar usando Linux, estoy usando Upunt. Esa es una parte Esto está disponible, así que ya está eso. Ahora bien, ¿qué pasa con los contenedores de servicio? También verá los contenedores de servicio listados? En el archivo, voy a compartir los contenedores de servicios son una forma de poder realmente tirar o traer una imagen de Docker a su alrededor En ese caso, lo estaremos usando para Postgs para ayudarnos a simular realmente la conexión a Postgres, en el servidor virtual. Eso es otro poco. Entonces, ¿cómo ver el software disponible, el software que está disponible, bien? Software que están disponibles dentro de cada uno de los corredores. También hay otro enlace. Voy a proporcionar este archivo como mencioné que contiene todo esto. Si realmente revisas y bajamos, verías que tenemos todo el software ya instalado dentro. Estos son todos los softwares, ya instalados. Ahora, se puede ver que aquí no hay Mv, habrá haciendo algunos ajustes. Entonces también hay otro bit que quiero mostrarles antes de que luego entremos y luego empecemos a desarrollar. Ahora ve esta parte. Esto es para JDK. Ahora bien, si me desplazo hacia abajo para el JDK, el JDK ya tiene soportes Ahora bien, si lo miras, ya tiene soportes geniales para Java 21, pero no tiene para Java 22. Tenemos que hacerlo manualmente por ahora. Si también lo miras, se supone GravyM pero como esto no está disponible, tienes que hacerlo manualmente Este es un punto que en realidad necesito mencionar. A medida que avanzamos, comenzamos a mirar cómo usar todas y cada una de estas acciones una por una. Quiero que esto sea muy breve. En el siguiente video, simplemente saltamos y comenzamos a trabajar con nuestros flujos de trabajo o los vemos en el siguiente video. 145. CD de CI parte 2: Oigan, chicos, genial tenerlos de vuelta. Para esos se siguen en mi último caso, hice una manera muy detallada de usar realmente los flujos de trabajo. Esta sección puede no ser tan detallada, pero puedo asegurarle que cubra todo lo que necesitamos construir y empujar a Docker Hub Todo bien. Ahora, en realidad empezar. Estaremos dando algunos detalles y esos detalles, como los necesites ya que los estás usando, te lo estaré mostrando. Ahora para que realmente construyas un flujo de trabajo de Github dentro de tu proyecto, recuerda que este proyecto es empujado a GitHub y ya tenemos algo ya empujado. Quiero sacar eso a colación. Bien, tratando de comprobar que mi otra ficha. Ya empujaste esto. Ya lo tenemos, sí, lo estoy mencionando. Bien, genial. Entonces esto ya está disponible. Esta parte que ves esta parte de las acciones de Gear es lo que va a desencadenar nuestro trabajo y estar usando y estar trabajando con todas las cosas que vas a crear de inmediato. Empecemos. Para que Git Asha reconozca tu archivo eso, Oye, quiero que ejecutes esto como un trabajo para mí. Necesitas crear un paquete o un directorio, y tu nombre es Git Hub, y tiene que estar en la carpeta raíz. Tiene que estar en tu carpeta raíz. Si no está ahí, no va a funcionar. Es GitHub, no JT Hub. Es GitHub. El GitHub, esto tiene que estar ahí. A continuación, hay que tener un directorio llamado workflows. El flujo de trabajo necesita estar ahí, muy importante. Voy a seguir adelante y llamar a esto. Voy a crear un flujo de trabajo que va a estar conteniendo todos los scripts a usar llamado deploy the Yarmo Esto es lo que se requiere. Impresionante. Impresionante. Ya ves tengo una extensión ya me quejé, Oye, tienes que proporcionar esto Baje. Vamos a llegar ahí. Bien, así que procedamos. En primer lugar, me das un nombre y el nombre, solo llámalo pero construye y empuja la imagen para el despliegue. Todo bien. La siguiente parada es donde queremos ejecutarlo, ¿verdad? Los puntos son o ¿qué acción queremos ejecutarlo? Quiero ejecutarlo a empujón. No lo voy a ejecutar a empujón. Entonces, cuando presiono, esto debería suceder. Si hago algún cambio, y presiono, esto activará el flujo de trabajo. Si estás empujando, qué rama, tienes que definir la rama que esta tiene que ejecutar y quiero que corra en la rama principal, ¿verdad? Porque si notas que estás corriendo en la sucursal principal, ¿verdad? Así lo llamábamos. Entonces revisamos nuestro código. Consulta nuestro código. Esta es en realidad la rama principal que no es la marca principal, por lo que va a correr en la rama principal. Vamos a definir algunos detalles geniales ahora. Ahora el siguiente paso es establecer por defecto. ¿En qué entorno quieres que se ejecute este flujo de trabajo? Quiero que se ejecute en shell. Para ejecutar un shell, hay que pasar algunos valores predeterminados, ejecutar un shell, ejecutar luego shell Shell quiero Bash. Podrías definir porque soy más conveniente usando bascript así que voy a usar Bash Ahora esta es la empresa Era la compañía ahora porque está buscando trabajo, creo, vamos a llegar ahí. Ahora queremos definir nuestro trabajo. Este es nuestro trabajo. Bien, ahora para un trabajo, debes darle un nombre a un trabajo. Un trabajo necesita tener un nombre. Se podría pensar en un concepto un trabajo, un flujo de trabajo tiene una serie de trabajos, un trabajo sería una serie de pasos que quiere lograr. Así que tenlo en mente. Eso es exactamente lo que vamos a hacer. Voy a estar usando Voy a llamar a esta sección de trabajo construido. Construir sección de empleo, y ¿en qué entorno te vas a ejecutar? Ahora bien, esto es muy importante, chicos. Esto es muy importante. ¿Qué ambiente queremos? ejecutar un ambiente llamado acción. ¿Dónde se llama acción a este entorno? Es necesario poder decir dónde se llama acción a este entorno. Ahora, si vas a la configuración, ve a la configuración, Entornos. Quieres que sea capaz de cuando esta acción se esté ejecutando, podrías crear tantos entornos. Esto podría funcionar normalmente para usted. Si tienes cosas como si tienes cosas como tal vez una muerte, una puesta en escena, una producción, entonces normalmente podrías definir hacia dónde quieres que corran las cosas. Para mí, quería ejecutar algo llamado acción. Voy a llamar a esta acción. Bien. Entonces este es mi entorno. Tengo un ambiente ahora llamado acción. Ahora, mi entorno ahora guardará cosas como secretos y mantendrá variables de entorno. Entonces, a medida que avanzamos a medida que agregamos los detalles, tenemos que estar viniendo aquí para usarlo realmente. Bien, así que procedamos. Volvamos a esta parte. Muy bien, así que estoy usando acción y quería ejecutar Runs Ubuntu. Quería correr en Ubuntu más reciente. Ubuntu ts. Vamos a correr en Bunsuats. Ahora bien, esta es la parte en realmente quiero atar mis contenedores de servicio. Como mencioné, los contenedores de servicio te ayudan a ejecutar imágenes Docker en un entorno virtualizado dictamente para que puedas probarlo En realidad quiero traer un contenedor, quiero una pontina Quiero llamarlo Pzgres Pogues porque voy a poder usar este nombre en lugar Eso es muy muy importante. Entonces quiero servicios. Servicios que quiero, quiero llamarlo Postgres también. Esta es la parte de la historia. Este es el nombre que quería decir, esta parte aquí, este nombre voy a ir en lugar de IP. Post gas, entonces la imagen que quiero usar es un PostgressPostgress 162 porque eso es lo que Ahora quiero establecer algunos detalles del entorno del entorno que se van a usar para conectarme realmente. ¿Cuáles son los detalles del entorno, Postgres DB? Esto está disponible en Docker Ho. Esta configuración está disponible en Docker Hall. ¿Verdad? Ahora para realmente buscar entorno, necesitas así es como buscas un Obtener entorno, usa la palabra clave llamada vas que es Db Name ¿Lo llamaste Db name? Vamos a confirmar. Voy a entrar. Voy a abrir esto lado a lado. Voy a abrir esto lado a lado, dividido, para que podamos verificar. Dijimos nombre Db. Esto estará esperando nombre D. También tienes postgresa en la contraseña así. Entonces esto será ya lo has adivinado. Este sería el jarrón. Entonces ahora esta es contraseña, tan sensible, así que esto va a mantener en secreto. Secretos, lo llamaré DB en la contraseña de Sco. Verás, coincide con esto. Entonces esto estaría en mi nromentable. Esto estaría en mi secreto. Recuerda, te lo mostré antes. Secreto de variable de entorno. Entonces eso es lo que estoy reflejando aquí. ¿Bien? El siguiente paso, voy a tener un post grass en el usuario de Sco. Los mismos detalles, voy a sustituir esto. Pero esta vez alrededor mi usuario será SQUs luego DB guión bajo nombre de usuario Creo que eso es realmente funciona, chicos, Dibnderscore, nombre de usuario. Vamos a poner las ollas. Las ollas porque estamos esperando una olla aquí también. Vamos a decir ollas. Bien, probablemente no solo me preocupo por las ollas y solo voy a hacer que todo funcione ahora 543, dos, 43, dos, 543, dos, así que no solo lister esto con variables de entorno Voy a tener ollas, estas ollas deberían estar directamente aquí. Sí. Esto se habría podido configurar. Ahora, puedes ver que necesitamos ir a crear el dbname usando db user name Secretos tienes que establecer esto. Estas cosas son muy importantes. Estaremos haciendo estas cosas. Hagamos esto de una vez por todas. De hecho voy a tirar hacia arriba, vamos a tirar hacia arriba a este tipo. Vamos a poner a este tipo arriba. Recuerda que recogemos acción. Esta es la acción que en realidad configuramos acción. Vamos a entrar aquí. ¿Cuáles son los secretos que tenemos? Déjame probar tenemos DU Underscoe nombre de usuario, Db UnderscoPassword Los secretos lo llaman Db underscoeuser name. Esto sigue esto paso a paso, chicos. ¿Cuál es nuestro nombre de usuario? Yo solo quiero usar exactamente lo que usamos aquí, exactamente lo que usamos aquí. Nuestro nombre de usuario, cual es el nombre era usuario, voy a entrar aquí. El apellido es usuario. Según lo creado. Ahora vamos a crear para contraseña, Vamos bajo secreto. Vamos a llamarlo DB llamemos contraseña. Y pide contraseña. Como solo ves cuál es la contraseña que usamos, lo mismo que usamos aquí. No voy a cambiar el inten por el bien de la consistencia. Voy a ir aquí a Secret. Bien, entonces esto es genial. Esto es bastante genial. Entonces lo siguiente que configuramos es el host, configuramos el host y configuramos los pots, ¿verdad? Tenemos un anfitrión aquí y tenemos un alfarero, así que tenemos que definir el anfitrión y la olla. Prácticamente podríamos decir que queremos un anfitrión local aquí, ¿verdad? Así dicen las publicaciones de host. El anfitrión va a entrar, vamos a ver. Tenemos que definir a nuestros anfitriones. Queremos en este ambiente, así que va a estar entrando aquí, solo un post. Lo que acaba de forzar va a hacer aquí. Entonces no solo estamos haciendo uso de la olla, sino que este post es esencial, por lo que somos capaces de conectarnos a la aplicación. Ir a las ollas 5432, porque eso es exactamente lo que colocamos aquí, ¿verdad Eso es exactamente lo que estamos configurando en un archivo de implementación, este archivo de implementación, ¿verdad? Entonces coincide. Ahora el siguiente paso, aún no sabemos lo que va a ser esto, ¿verdad? Es este host de servidor caliente. Aún no sabemos lo que va a ser, ¿verdad? Entonces solo voy a dejar esto solo voy a dejar esto fuera, bien, porque esto básicamente funcionaría para nosotros más adelante. Pero esto normalmente es necesario para que nosotros construyamos también. Entonces estos los podemos ignorar por ahora porque directamente no estamos usando. Solo queremos construir nuestra imagen y nuestra imagen no se conecta al servidor caliente para construir, ¿de acuerdo? Así que prácticamente podemos ignorar esto por ahora. Bien. Bien. A ver. Entonces esta es mi queja aunque no, ¿no? A quejarse. Probablemente solo estableceré un récord ficticio por ahora, un disco ficticio De lo contrario para quejarse. Así que solo lo configuraré. Entonces en caso de que lo busque, ve que está disponible, ¿verdad? Para que ese ambiente esté disponible. Para esto, solo lo llamaré anfitrión local, solo para poner algo ahí. Pero algo ahí. Para las piezas, 8099 lo que usamos. Entonces aquí, 8099. Entonces, por último, esto. Sólo llámalo salud por ahora, salud, ¿verdad? Solo salud. Todo bien. Hemos sido capaces de configurar esto. Después volveremos el siguiente video para continuar desde donde paramos. Los veré chicos en el siguiente video. 146. CD de CI parte 3: Oigan, chicos. Oigan, chicos, genial tenerlos de vuelta. Hemos entrado en configurar estos detalles, Db Name, D pass, el nombre de usuario. Hemos creado en estos entornos que mostramos antes y el ambiente se llama acción. Esto ya está configurado hasta cierto punto, por lo que sólo podemos volver atrás. Medio ambiente. Si lo sacas a colación de nuevo, tenemos cinco detalles, dos secretas cinco variables, lo cual es muy correcto. Eso ya está disponible por ahora. Esto es lo que estamos usando. Esto está disponible en la variable de entorno. Asegurémonos de que añadimos eso a la variable de entorno. No, no tenemos que inte crear esto. Se llama DB name, DB DB en el nombre sc. ¿Cuál es el nombre que usamos? exactamente el mismo nombre usando aquí? Solo curso GraphQL. Voy a colocar esto aquí. Bien, así que eso es bastante genial. Hemos agregado esto en, hemos agregado todos estos detalles y podemos proceder a esta parte. Esto ha sido establecido. Esto se ha configurado en secreto y nosotros lo hemos montado, procedamos. Voy a ir a la derecha otra vez, empujar quiero que este comando actúe sobre el empuje. Las ramas en las que realmente deberías trabajar son las principales entonces una vez que usas Bash, para cualquier comando que queramos ejecutar De hecho ya lo hemos hecho. Lo siguiente que queremos hacer es querer establecer su número de pasos que queremos que sucedan. ¿Qué pasos quieres que suceda? Primero lo hacemos una vez que obtenemos el código. Vamos a llamarlo, código G. ¿Cómo obtenemos el código? Utilizamos una acción. Quiero usar una acción, usar la palabra clave usa. La palabra clave utiliza. Ahora, ya he explicado cómo son las acciones. Si lo miras, he sacado una página antes. Todavía puedo sacarlo a colación. Es una página que mencioné antes. A ver. Bien. Entonces la página me butopela solo agrégalo aquí. Todo bien. Entonces esta parte para sacar código, mencioné que tenemos aletas para ayudarnos realmente a hacer esto, ¿verdad? Para ayudarnos a sacar código, las acciones y similares que tenemos eso está todo disponible. Entonces, para que realmente el código de pago, tenemos algo llamado las cajas, ¿verdad Tenemos algo llamado la acción de pago. Así que vamos a explorar cómo se ve el mercado ito market. Veamos cómo se ve, ¿de acuerdo? Entonces voy a decir GID action checkout. Entonces GID acción checkout. Si lo miras, así es como se ve. Y usamos la palabra clave usa, ¿verdad? Usos. Eso es lo que usas. Entonces todos estos básicamente no son necesarios. Te envié alguna configuración extra que quieras agregar. Pero solo haciendo esto solo, sacaremos tu código de GitHub y lo llevaremos a ese entorno virtualizado ¿Bien? Esto es genial, chicos. Es bastante genial. Entonces eso es exactamente lo que voy a usar de la misma manera en que en realidad se especificó. que voy a usar ya lo tengo escrito en alguna parte así que solo voy a traer esto y solo copiarlo. Entonces sí, así que eso está fuera. Después siguiente paso. Así poder realizar ese siguiente paso. El siguiente paso, queremos configurar set. Vamos a configurar. Configurar JDK, llamémoslo gravIn Gavian JDK. ¿Recuerdas lo que hicimos localmente? Lo que construimos localmente es exactamente lo mismo que quiero hacer aquí, ¿verdad? Eso es lo mismo que quiero hacer aquí. Gavio 22, ¿verdad? Entonces usamos run porque esta vez estamos usando la palabra clave run y ejecuto porque voy a escribir algún conjunto de comandos porque en realidad no podemos básicamente no hacer no hay te mostré Ella que no tenemos un 22 soportado en este momento. Entonces tienes que hacer esto a nivel local. Ahora, he entrado en escribir todos estos comandos, y voy a espaciar es muy, muy voluminoso, ¿verdad Chicos muy voluminosos, pero voy a mostrarte cómo se ve todo, ¿verdad Bien, entonces tal vez te estés preguntando por qué tengo este comando. Así que tenga en cuenta. Cuando tienes esto aquí, simplemente significa que quieres colocar varias líneas. Eso es lo que esto significa. Esto significa que quieres colocar varias líneas, no hace nada más que eso. Cuando tienes esto, esto está vinculando esto. Si coloca esto, significa el comando en la siguiente diapositiva y esta diapositiva que debería estar en una línea. Eso es lo que significa todo el último Bo slash. Por eso digo que todo contiene Bo slash. Ahora pasemos paso a paso y veamos qué hice. El primer paso, lo que hice, en realidad estoy construyendo y haciendo y actualizando el servidor Ubuntu, actualizando, entonces en realidad estoy instalando WG WG es en realidad más como un rizo, una forma de descargar realmente cosas Después me descargo el bunt 22. Descargo el Boto 22. Lo siento, descargo Gavian 22 del sitio web de Oracle. Lo descargo en, y también descargo Apache maven. El último Apache Mv 399, entonces realmente extraigo la gal VM. Cuando haces una estrella, la estrella coincidirá con cualquier cosa que tengas aquí, cualquier cosa que tengas aquí para igualarla. Eso es lo que estoy haciendo. Si lo estoy igualando, estoy extrayendo. También estoy extrayendo al maven apache, lo cual es genial. Después de extraer y estoy quitando estos archivos. Después de extraer, ya no los necesito , elimino esto, elimino los archivos zip zipl o archivos GZ Los elimino después de eliminarlos, luego expse ahora exportando esto a BSD Ahora bien, ¿qué es Bs DLC? Si esto estoy exportando a bash o LC es porque la forma en que estableces una variable de entorno en Java y la forma en que estableces una variable de entorno lineal es exactamente lo que está sucediendo Estoy exportando a bash o LC. Cuando se supone que debes darle un golpe al LC alrededor de la salsa, lo haces pegar y podrás hacer versión Java y luego la versión VN Eso es exactamente lo que estoy haciendo aquí. MavingHme También estoy haciendo lo mismo. Puedo ver ahora para Github, tenemos un concepto de si estás usando Jenkins, tenemos un concepto de espacio de trabajo Ambiente en el que estás trabajando. Te puedo dar ese espacio de trabajo. De hecho estoy tirando de esto, es un comando Git up que te da acceso. Estoy haciendo eco a esto. Estoy diciendo el espacio de trabajo actual, eso es lo que significa. El espacio de trabajo actual, busque apache mediante el cual descargó y extrajo el bin. Quiero que hagas eco de estas partes en la parte de Git up. GituPad es más como si estuvieras configurando la variable de entorno así que debería estar ahí Lo mismo que estoy haciendo aquí estoy configurando la variable de entorno. Entonces estoy agregando todo a las partes. Estoy ndingeo las partes. Hay un concepto de partes, así que voy a mostrarte de esta manera. Esto en realidad lo dejaría muy claro. Entonces si revisas, había algo llamado bash C. Así que cuando haga un punto de gatos Bash, ya veré A mí me falta algo. Bien, en caso de que esta golpiza de deudas onduladas, LC. Todo bien. Entonces esto es bash LC Así es como se ve. Así es como se ve bash LC Si quieres que algo sea permanente un comando, lo agregas a tu bashLC y ves que agregaste esto y eso es exactamente lo que estoy haciendo Esta exportación exportación, también hay un concepto de palmaditas. Pat todo lo que agregue a las rutas es como Java home. Es como tus partes de Windows que lo pondrán a disposición en todo el sistema, para que puedas hacer eco de la ruta de eco. Entonces ves que todo esto es un camino. Entonces es por eso que tienes disponible el NVN, algunos comandos disponibles directamente porque en realidad se agrega a la ruta Entonces exactamente lo mismo que estoy tratando de actualizar aquí. Esto no hubiera sido un problema, asumiendo que tenemos mavn soportado directamente en este contenedor o en este runner que es Ubuntu, y tenemos esta acción, tenemos el conjunto de acción Java Habrían hecho toda esta fila yo lo estoy haciendo de forma manual. Por último, estoy llamando a la salsa el RLC porque salsa la bash LC hará que esta sea permanente Después de hacer esto, estoy imprimiendo, estoy imprimiendo, solo estoy imprimiendo algo aquí, oye, eso imprime aquí. Asegurémonos de que llegué aquí. Después estoy imprimiendo la versión Java y estoy imprimiendo la M v en versión Con estos chicos, te veré en el siguiente video. 147. CD de CI parte 4: Oigan, chicos, genial tenerlos de vuelta. Hemos entrado, en realidad hemos hecho esto. Te expliqué el último video fue una explicación total de lo que es esto, y también te mostré cómo configurarlo con todos los secretos vinculados al entorno y hemos podido lograrlo , debería ser bueno volar. El siguiente paso, el siguiente paso que quiero agregar voy a llamar al nombre, preparar. Recuerda que el nombre puede significar cualquier cosa, pero hazlo significativo para que puedas saber lo que estás haciendo, salsa en configuración y construcción Eso es lo que quiero hacer. Entonces quiero ejecutar algún conjunto de comandos también ejecutar. Recuerda, cuando pones esta pipa noticia, quieres correr mult line Entonces voy a hacer una versión Java ayudándole a sacar el código así no voy a estresarme Sólo para traerlo. Hagamos esta pipa. Entonces vamos. Voy a traer esto. Si nos fijamos en este es exactamente el mismo comando que ejecuto área. Nada diferente, ¿verdad? Entonces veamos esto. Esta es la versión Java. Estoy diciendo que este paso debería ser lo mismo ahora. Este comando es lo que lo pone a disposición hace disponibles las bibliotecas nativas, mismo que tenemos en este archivo Docker, pero si nos fijamos en el nivel Z lib, esto deletrea este entonces nivel Gleb CD Si miras esto, solo estoy trayendo los sentials Built porque si te estás ejecutando en un directo a ubuntu o Linux, debes ejecutar este comando Estos son los comandos que ejecutas. Pero para el archivo Docker, queremos más como una versión micro, y por eso uso Mico DNF para sacar las exactas que Pero para Ubuntu, en realidad puedes ser un poco autobús y traer todo esto. Ahora bien, no conformé este comando. Si realmente entras, vas a GravIn ve a GravIn ahora, ya ves, esto es para Linux Si quieres apostar por Linux, este es un comando. Aquí es exactamente de donde lo recogí. Entonces si estás usando DNF, te dijeron que usaras esto para DNF Esto es exactamente lo que tenemos en un archivo Docker. Pero en lugar de usar DNF, estoy usando Mico DNN que es versión simplificada, pero estoy usando los comandos set exact Puedes ver esto no lo hice. De hecho lo estoy trayendo directamente de lo que se mencionó para Gravim Esto es. Vamos a proceder. Ahora cuando ejecuto el comando, este comando lo ejecuto localmente enviando amoniaco Mv en limpio. Sólo voy a mover la limpieza. No creo que necesitemos limpiar porque siempre está limpio una vez. Tienes P nativo, nativo brújula skip step, entonces todo es igual. No estoy haciendo nada. Podrías cambiar esto. Estoy en África legos eso es lo que legos de África. Entonces esto físicamente recuerda que podrías saltarte esto. Ahora bien, este es el concepto de perfil. ¿Qué perfil de resorte debes usar? Entonces podría decir que quiero este tipo quiero que este tipo use Docker Quiero que este tipo me use Docker para llenarlo. El perfil de giro que uso es Docker. Con eso, entonces entraré, vamos a configurarlo. Voy a ir a esto, voy a esto y voy a configurar esto. Diré primavera en el perfil de puntuación, use Docker. Voy a tirar de eso. Espera espera, ingenio. Tenemos las cosas configuradas y esto ya está configurado. El siguiente paso es entonces, intentemos ver. Hay una manera de hacer caché a Maving. Hay una manera de guardar Mv en caché. Ahora, lo he usado un par de veces, pero a veces funciona, a veces no funciona, así que me embolsa. Probablemente me falta algo. Vamos a caché Maving voy a tratar de caché para que construya realmente simple Hay un concepto o hay una acción disponible para eso, que se denomina caché de acciones que actúa VF lavar la versión actual en la versión cuatro Entonces debes tener alguna suite de detalles extra ¿cuál es esta? Esto entonces diría, busca el 102 Eposit y lo guarda en caché y si vas a esta acción, verías, como mencioné, no me invente las cosas, ya está ahí para C. Caso y ver dependencias, si revisas, esto Si vas a buscar Hombre Hombre Hombre Maven, Maven. Veamos desde Neven. ¿Aquí el Maven? Sí, Java Maven. Miramos en Java Maven, ya ves, esto es exactamente lo que mencioné y eso es exactamente lo que estoy usando Todo bien. Entonces eso es bastante genial. Entonces tenemos esto. Entonces sólo voy a seguir adelante y sólo enumerar el archivo. Quiero enumerar los archivos que ya están en. Vamos a enumerar archivos. Así que estoy enumerando los archivos en mi directorio de destino después de que esto se haya construido con éxito. Entonces quiero subir artefacto. Ahora P el artifactor quiere que funcione. Quiero que se guarde en caché durante cinco días. Eso es lo que estoy haciendo con esto. Quiero que escriba. decir, si existe un artifactor, quiero verite Esta acción también está disponible para subir También podrías comprobarlo y ver cómo funciona. Así es exactamente como se llega a usarlo. Pero en esta ocasión, estamos guardando archivos Docker y nosotros estamos guardando en caché, estás guardando Dockerfile y target graph ko c Recuerda que esto es ejecutivo, así que eso es exactamente lo que Ya casi terminamos, chicos. Ya casi terminaste, chicos. Lo que voy a hacer es que iba a tirar de los muchos comandos que se escriben. No quiero aburrirte con todo esto. Muchos comandos están trayendo el trabajo del Paso dos igual que te mostré. Todo bien. Lo que esto hace es, aquí es donde empujamos la imagen. Primero, consigue el medio ambiente. El mismo ambiente es la acción, que es el mismo que definimos aquí, la acción. Ahora, estoy diciendo que este necesita significa que esta sección nunca se ejecutará ahora. Por defecto, el flujo de trabajo de Github se ejecuta en paralelo. Cada trabajo se ejecuta en paralelo. Pero en el momento en que uses algo así como medicamentos, este tipo dependería de él? Dije que esto dependería de ello Si esto no se ejecuta, esto nunca va a correr. Esto debe ser igual. El nombre debe ser el mismo. Verás, este nombre de trabajo debe ser el mismo. No es lo mismo, no va a funcionar. Debe ser lo mismo. Esto lo necesita. Todo bien. Si trato de destacar esto. Ves que resalta este reconocer automáticamente es correcto. Entonces una vez que corres con Bontts de venta, estoy jalando esta acción, esta acción también es necesaria Recuerda, estamos empujando aquí y estamos descargando aquí. Podrías haberte saltado esto, pero solo quería mostrarte cómo podrías usar múltiples trabajos Todo bien. Aquí lo voy a llamar GraphQL Entonces voy a descargar una vez que descargue Aof Dload content by is Quiero enumerar lo que hay, todo lo que hay ahí. Una lista entonces, quiero instalar Docker, Docker Install. Yo llamo a este Docker Install. Ahora, ¿qué me di cuenta? Me di cuenta cuando estaba construyendo y desarrollando este curso. A pesar de que mencionaron que Docker estaba disponible para el medio ambiente, no lo pude encontrar. Fue muy difícil para mí por eso tuve que hacer esto. Tuve que ejecutar e implementar Docker manualmente. Eso es lo que está haciendo esto. Estoy desplegando Docer manualmente Un Docer desplegando manualmente, se puede ver, estoy usando pseudo y obteniendo Si vas a ejecutar Docker con scripts de conveniencia, solo tienes que escribir esa cosa, encontrarás esto disponible Así es exactamente como este te puedo mostrar. Digamos Docker. Instalar Docker Instalar Docker en Ubuntu. Entonces quieres instalar Ubuntu. Vas a Ubuntu y te desplazas hacia abajo hay algo llamado crips de conveniencia, tazas de conveniencia Si estás usando copa de conveniencia ya ves, es el mismo comando que estoy ejecutando. Esto instalará el campo Docker. Es exactamente lo que estoy haciendo. Simplemente ejecuta esto y esto instalará Docker. Eso es lo que hice. Entonces estoy iniciando sesión. Hay una acción para iniciar sesión. Echemos un vistazo a esta acción para iniciar sesión. Acción para iniciar sesión. Entonces te estoy mostrando que todo está disponible, bien, para que no tengas que repasar los eventos en el camino. Entonces solo tienes que usar esto directamente. Entonces esta es la acción para iniciar sesión realmente. Pongo tu nombre de usuario, un nombre de usuario de Docker y una contraseña de secretos Ahora para esto, te voy a mostrar cómo configurarlo. Voy a estar haciendo eso en el siguiente video. Todo bien. Entonces esta parte, te voy a mostrar. Pero esta parte es donde inicias sesión y aquí es donde empujas, ¿verdad? Empujas usando esto. Ahora bien, entonces todo esto es detalle. Volveré en el siguiente video para explicar este genial stock, veamos en el siguiente video. 148. CD de CI parte 5: Oigan, chicos, genial tenerlos de vuelta. Quiero hacer alguna explicación más sobre estas partes. Entonces, ¿cómo se obtiene un nombre de usuario? Este es tu nombre de usuario de Docker Hub. Es tu contraseña de Docker Hub. Pero no tu contraseña, me refiero a docHub token antes solía ser una contraseña, pero se volvió muy arriesgado, así que siempre puedes usar Vamos a crear un token que vamos a usar. Te voy a mostrar cómo crear un token. Lo cargo mi Docker Hub. Quiero estar segura de que no estoy exponiendo nada sensible. Pero esa es la mayoría otra pantalla, así que vamos a Docker Hub Docker Hub, voy a iniciar sesión y te lo mostraré. Bien, así que estoy iniciando sesión. ¿Bien? Eso va a entrar. Estoy tratando de iniciar sesión. ¿Bien? Firma. Bien. Así que firmé esto con éxito, así que voy a traer la pantalla de vuelta para mostrarles cómo funciona. Todo bien. Entonces, esto es todo. Así es como se ve. Así es como se ve Docker Hub. Ahora bien, si quieres generar un token, vas a las partes. Entonces vas a la cuenta esta parte de la configuración de la cuenta, déjame estar seguro. Creo que las partes. Configuración de la cuenta. Verifique la configuración de la cuenta. Esto se está cargando. Configuración de la cuenta. Déjame estar seguro. Quiero estar muy segura. A la vez, no quiero evadir nada. Bien. Todo bien. Creo que lo descubrí. Vas a ajustes. Voy a repasarlo otra vez. Entras aquí, vas a la configuración, configuración cuenta y llegas a la configuración de la cuenta, scode y ves token de acceso personalizado Aquí es donde hay que ir. Vas al token de acceso personalizado, ellos crean un nuevo token. Mi nuevo token, lo voy a llamar gráfico QL Cs. Curso de Gráfica QL. Después fecha de vencimiento. No quiero que caduque. Básicamente, quiero caducar en 30 ds, ¿verdad? Entonces, ¿qué quiero que haga? W se lo voy a dar todo. Lee, escribe, borra, todo. Entonces después de este tribunal, físicamente, sólo voy a revocar la tasación Por lo que genera. Lo ves generado, luego copias. Usted copia. Este es mi Dername que luego puedo copiar Ahora, recuerda que esto es una cosa de una sola vez. En las indicaciones de contraseña Enter. Esto es lo que se supone que debes entrar. Esto no estará disponible dos veces. Así que por favor recuerda que esto no estará disponible dos veces. Copia porque no puedes volver a verlo. Lo he copiado, lo he copiado, voy a ir a mis secretos. ¿Cuál es la otra pestaña que estaba usando? Creo que esta fue esta temporada de pestañas esa pestaña de mi pestaña de acción. Aquí, voy a llamarlo mis secretos Docker Underscore Nombre de usuario, mi nombre de usuario es consistencia. Después siguiente, Docker dsc contraseña, contraseña. Yo pisti aquí dentro. Todo bien. Contraseña de Doc Chisondsco. De ahí viene esto. Hacer Canaches un nombre. Hacer bien a Canas. Yo lo llamo token. Entonces voy a llamar a esta contraseña. Contraseña que utilizo. Yo sólo sea consistente. DondersCpassword. Eso es lo que tengo ahí. Todo bien. Entonces probablemente solo voy a llamar a esto y vamos a llamarlo graph que one dot zero. Gráfica QL un punto cero. Cuando empuja, entonces usa mi nombre de número. Esto es básicamente todo lo que tenemos que hacer. Voy a hacer un resumen. Recuerda la primera parte que estamos usando usa la acción push. Acción push, branch main, quieres usar un Bash. Todos estos comandos que se están ejecutando son comandos bash. Por eso estoy usando Bash aquí. Entonces quiero acción ambiental, te mostré cómo crear un ambiente. Quiero correr en Bunstt te mostré lo que contiene Buncats Estoy usando contenedores de servicio. Así es como tú. Esto está disponible en Git en Docker Hub. Cuando escribes en post chicos, solo puedo mostrarte de inmediato. Esto es muy importante. Di Cerdo Doa. DockerHub, escriba en Creo que ya estoy conectado. Así que solo busca psqes. Psques. Y busca psques Escalados muy hacia abajo. Escalado hacia abajo. Ves el uso. Bien, entonces este es el uso Bien, así que publica adivinar la contraseña. Sí, creo que hay otra que es más definitiva. Pero déjame revisar Postguest así que estos son los comandos Usuario post gas, PostgasPassword. Sí, entonces la variable de entorno que podrías usar para que estés pasando eing. Entonces pas esta variable de entorno entonces postga ZB, derecho, esto va a poder realmente averiguar exactamente a qué te refieres Y eso es lo mismo que hicimos aquí. Lo miras con cuidado, ¿verdad? Post guess ZB, PostguPassWD, usuario de postgas, y de ahí fue de donde lo obtuve Detalló que GavinNgavin no tiene acción para GavianF Tengo que configurarlo manualmente y explicar este bit. Consulta el último video para ver lo que te expliqué. La lista es un camino que estoy construyendo, ¿verdad? Te mostré de dónde sacar este comando. Te mostré en el sitio web de GaviM y te mostré este comando que en realidad ejecutamos localmente Esto también está disponible por escrito en notas que se adjunta a esta sección. Entonces estas son las partes donde luego usamos la acción para intentar almacenar en caché tal vez, aunque no estoy del todo seguro de si funciona, entonces enumeramos el archivo, luego subimos esto. Una vez que lo subas, qué estamos subiendo. Recuerda, esta es la carpeta de destino, estamos seguros de que obtenemos esta gráfica QL caso isecutable también haciendo el Dockerfile es esencial para nosotros. Entonces más o menos, creo que eso es lo que empujamos. Cuando llegamos a la imagen push, luego descargamos los artefactos, luego ejecutamos esto. Entonces esta es la parte en la que te lo dije, no estoy seguro de que Docker estuviera realmente en ese corredor de Ubuntu, así que solo tuve que instalar Docker Entonces me conecto, te muestro donde esta. Yo solo te enseñé cómo usar tu nombre y contraseña y luego a este tipo. ¿Bien? Entonces en el siguiente video, lo vas a ejecutar y ver cómo funciona. Y la forma de ejecutar esto es muy sencilla, chicos. Entonces lo que voy a hacer es, sólo voy a concluir esta sección. Lo que voy a hacer es concluir esta sección con solo presionar. Entonces Git comete A CM, lo llamaré yo solo lo llamaré CI, CID LCD action, LCD action, first push o debería simplemente llamarlo guitar box flow? Flujo de trabajo de GitHub. Primer empujón. Bien, eso debería cerrar cierra. Confirmemos eso. esto para que puedas comprobarlo. Bien, ¿dónde está mi carpeta? Bien, esta parte de aquí. Acabo de entrar aquí, la sección de código con la sección de temas, cuestión acritano. Pon esto aquí. Entonces recojo esto, y voy a estas partes. Todo bien. Ya etiqueté eso solo escoge 33, eso es 33. Bien, cierra, h 33. Todo bien. Entonces voy a empujar esto. Ahora este va a ser un proceso largo. Va a ser un proceso largo. Cuando lo empuje, verán de inmediato se pone en marcha. Entonces, cuando entres aquí, revisemos nuestra acción. Cuando cargamos esto, ya ves, esta es la primera así que ya ha entrado . Entonces vamos a rastrear. Ves que esto es dependiente. Esta sección de imagen push depende de esto. Esto va a llevar mucho tiempo. De hecho voy a terminar el video. Entonces el siguiente video, te voy a mostrar cuál es la salida y si hay un error, te voy a mostrar de igual manera. Os veo el siguiente video chicos. 149. CD de CI, parte 6: Oigan, chicos, genial tenerlos de vuelta. Todo bien. Entonces, ¿recuerdas el trabajo que empujamos en el último video? Entonces este es el resultado. Todo funciona con éxito excepto la sección push image. Veamos el error diciendo que no puede encontrar ningún artefacto llamado artefacto GAF kill Entonces, lo que significaría que cuando en realidad estábamos empujando estamos presionando este nombre podría no haber correspondido. O este artefacto no está disponible, así que vamos a comprobarlo. El conjunto de juergas At fad ya ha caducado y fue subido usando una versión compatible de dos kits. Así que vamos a revisar. Yo voy a hacer, voy a comprobar. Voy a entrar aquí. Vamos a descargar la sección de subida. La sección de subida, cambié este nombre. Quería subir el artefacto de pozo clave GAF. El problema era que el problema era que ahora agregué aquí. Creo que quiero hacer un delantero aquí. Vamos a hacer retroceso. Bien. Entonces aquí, estoy usando At Graph Activat pero mientras tanto, estoy usando el demo de Graph Quo, porque lo copio y pego, así que esos son los males de copiar y pegar así que esos son los males de copiar y Con esto, deberías poder entrar y ellos deberían poder encontrar esto, vamos a comprometerlo una vez más. Git commit, solo voy a cometer y solo decir, no voy a adjuntarlo a ninguna idea. Decir nombre fijo de descarga y carga. Porque usa el nombre para conocer el para practicar empujar, ¿verdad? Entonces esto es muy, muy importante, chicos. Entonces esta parte. Entonces ahora son lo mismo, deberías poder realmente hacer frío. Entonces vamos a dar empujón. Entonces, una vez que empujes, esto volverá a entrar. Entonces es un construido esto um porque recuerda que siempre fue decir, empujar, empujar. Construidos. Entonces esto va a construir. Entonces esto tomó un tiempo antes de que lo hiciera. Entonces si nos fijamos en esto, inicialmente, que construimos tardó un más tiempo para esto el más largo tardó 9 minutos, ¿verdad? Entonces voy a presionar de nuevo. Sí, así que esto está presente ahora mismo. Entonces esto básicamente tomará unos 12 minutos justo antes de que realmente termine. Bien, entonces voy a pausar el video y una vez hecho esto, voy a ponerme en contacto con ustedes, y procederemos a ver si esto se completó y empujó a Docker con éxito ¿Todo bien? Ahora voy a publicar el video. Ustedes. Todo bien. Esto terminó con éxito. Todo bien. Y esto es bastante impresionante chicos. Pasemos por los pasos. Veamos qué pasó. Vemos que esto realmente funcionó. Esto realmente funcionó. De hecho, somos capaces de configurar nuestro mazo en realidad nos llevó tanto tiempo o no mucho tiempo Este fue uno que tanto tiempo tardó preparar el mazo y construir Al parecer, eso fue lo mismo que llevó tanto tiempo mientras estábamos construyendo localmente, esto funciona y enumeremos nuestros archivos. Vamos a enumerar los archivos. Si revisas para listar archivos, puedes ver esto básicamente nos muestra todo dentro de este archivo. Este es un curso de GAF Que. Esto es ejecutable. Este de aquí, esto es ejecutable, y esto es realmente genial. Todo bien. Si bajas, veamos el artefacto que subiste, nuestra subida de artefactos fue exitosa Entonces si comprobamos, esto fue cuando subimos, entonces vayamos a la sección push image. Recuerda que dependen el uno del otro. Descargué el artefacto. Por eso se descargó con éxito, que fue la que llenó la otra vez. Entonces veamos el contenido. Se ve el contenido, el expediente Docker y el caso GAF QL Entonces esto instaló Docker con éxito. Entonces esto fue capaz de iniciar sesión con éxito, Login tuvo éxito. Entonces si miras esto fue capaz de empujar la imagen con éxito. Recuerde que había configurado para ejecutar algunos detalles geniales antes de que realmente se publicara y esto en realidad estaba haciendo una limpieza posterior y esto funciona Vamos a revisar. ¿Tenemos esto? Deberíamos tener algo llamado Gráfica Q ¿un punto cero? Porque así es exactamente como lo llamamos. GPhC Wonder cero. Esto es. Gráfica Q Wonder cero. Déjame revisar esto otra vez. Estoy viendo talla como hace apenas 2 minutos. Me pregunto por qué está bien, déjame abrir esto. Bien, una las imágenes geniales. Imagen Docker. Publica porque necesitas agregar algunos detalles. Me pregunto por qué esto en realidad no está mostrando el tamaño total. Volvamos a revisar. Probablemente algo salió mal durante la deuda. Va a confirmar, Login exitoso. Déjame revisar la imagen push. Entonces la parte donde estaba post push para limpiar la carpeta, empujaron. Voy a bajar todo el camino. Yo empujé, empujé, empujé, al strctan, veamos qué pasó al final Veamos desde aquí, esta parte, copié esto fue interag un archivo Docker Copié desde la base de construcción hacia arriba, luego me muevo a esta parte exponiendo capas. A ver. Estas son las capas de empuje. Estoy esperando 19819815 MB empujando capa y dice que todo esto fue empujado Veamos qué es esto. Mira los metadatos. Los metadatos dicen que la maravilla gráfica es correcta. A ver. Todo bien. La única razón por la que esto no será. La única razón por la que esto podría ser porque cuando uso el costo, podría estar recogiendo de esto y no se ve como lo mismo, pero aún así espero que muestre esta parte. Bien, lo que voy a hacer, voy a tratar de sacar de mi servidor local, mi Docker local Si voy aquí, da clic en esto, debería poder tirar. Debería poder hacer Docker pull y voy a copiar esto bajo cero. Entonces Docker tire Veamos a qué se mete. Dónde está Docker, creo que tengo Docker abrió Docker. Docker de mano abierto. Tengo las ollas. Mira Imágenes, se llevó un contenedor. Bien, busca imágenes. Entonces voy a hacer ZG Graph QQ. Dav QO, luego un D cero. Gap k1z lo encuentro? Sí, ya está. Esta Gráfica k una la Z. esta es. Vamos a tirar de esto. Vamos a tirar de esto. Estoy tratando de sacar esto, acabo de pasar el video y sacarlo y ver qué es lo que realmente. Si tengo los detalles completos, probablemente la subida aún no estaba hecha. A lo mejor la subida de probablemente el nombre del tamaño no solo se esté mostrando y tenemos los detalles de la guía, así que ve a publicar esto Bien, así que esto demuestra que fue un éxito. Entonces esto fue tirado tirado con éxito. Lo que voy a hacer quiero traer en mi terminal. Vamos a ho en mi terminal. Vamos a aclarar esto. Voy a hacer Docker. Imágenes. Mira las imágenes. Eh. Entonces puedes ver que esto realmente fue exitoso. Así que simplemente tiró, ¿ y esto es qué? 273 MB. De hecho, trabajé con precisión. Entonces supongo que fue la acción de Git la que no solo está poblando o Docker Hub que no solo está poblando Todo se muestra como debería. Y esto es bastante genial. Esto chicos bastante chulos y tenemos los detalles que necesitamos. Todo bien. Entonces esto es básicamente todo lo que estábamos viendo, y en realidad somos capaces de obtener todo correctamente. Entonces supongo que hay un proceso para actualizar esto es actualizar esto. Tenemos todo lo que necesitamos, y ahora lo tenemos en nuestro entorno local. Ahora podemos ejecutarlo en contra. Probablemente solo podamos construir el ubertiJAFL desplegado en CubertAsí que los vemos 150. CD de CI, parte 7: Oigan, chicos, genial tenerlos de vuelta. Todo bien. Ahora que hemos seguido adelante para ser realmente la imagen con éxito, hemos empujado y hemos empujado al doctor Hub y pusimos a Local puse mi registro, mi registro local, así que he seguido adelante para agregar el archivo de implementación de Kubernetis Entonces, comenzando con, creo un mapa de configuración. El mapa de configuración es básicamente donde guardas toda tu configuración que debería existir dentro del registro o que debería existir básicamente dentro de tu aplicación. Y eso es lo que he hecho aquí. Esto coincide con todo. Db nombre de usuario, Db par como se puede ver el host los pods que es el host caliente. Tienes el anfitrión, tienes las vainas o hay algo así como anfitriones calientes. Tienes el anfitrión, tienes las ollas y nosotros tenemos el cuidado de dbNameGap llama al perfil de primavera que estamos usando, tú eliges este perfil Entonces también tenemos el servidor host, este chico Osa host y no server pots. Tenemos esto. No he incluido esto y esto todavía por una razón porque voy a estar usando mi IP Wi Fi, ¿verdad, mi IP local, verdad? Entonces no quiero usar esto porque no puedes usar host local, tienes que usar tu IP. Entonces pasando por Internet para conectarme a mi entorno local de Cbonets Entonces voy a agregarlo antes de iniciarlo. Entonces para la parte expuesta, estoy usando star así que solo quiero exponer todo por ahora. ¿Todo bien? Después en adelante, el archivo, archivo de implementación, así es básicamente como funciona. Tenemos las actualizaciones rodantes. Nuestras actualizaciones rodantes, tenemos cosas como las que expliqué esto en los videos anteriores. Yo me aseguraría de que todos estos videos se agreguen cuidadosamente revisa los videos, ves todas las explicaciones al mismo. Entonces en realidad te estoy dando algunos detalles básicos para iniciarlo. Esta es la imagen. Debes poner en donde debes sacar del nombre de usuario, luego la imagen. Básicamente, esto es lo que tengo. Bien, recuerda nuestro actuador, aquí donde entra. Oc trator ayuda a la disposición y la ligereza habló. Vea este servicio que usamos ahora para exponer el servicio y así poder llamarlo desde un entorno local. Estoy usando el concepto de note pot. Ya he explicado todos los detalles en los videos que sembramos, asegúrate de verlo realmente Ahora mismo que tenemos esto funcionando lo siguiente que tenemos que hacer es sacar a colación ubernttis en nuestro Ve a Kubernettis y arranca Kubernetis y aplícalo Kubernetis Va a tomar unos segundos, los minutos y en realidad empezar así que solo publico el video cuando vuelva, vuelva. Todo bien. Así que gracias por regresar. Y como se puede ver, ahora se inicia acbntis. Así que vayamos a una terminal para comprobar realmente esto. Entonces voy a usar esta terminal. Voy a usar esta terminal. Ya tengo Keep cul en almacenado. Así es como realmente interactúas. Lo que haría, lo comprobaré. Mantuvo configurar el contexto actual. Digamos el contexto Docker Dktop, que es bastante genial. Navega check LS, tenemos este archivo de implementación, pero adelante y simplemente despliega este archivo de implementación directamente. Voy a hacer Keep Co Keep Co dos, luego aplicar o podrías hacer crea F, luego Deployment Yama file Solo usaré esto. Crea todo junto. Entonces llamaré entonces. Keep Cut two get all gets all. Bien, entonces hay un error, y el error está buscando. No encuentro nuestra Imagen. Entonces entremos en esto para ver qué pasó. Entonces entraré aquí y haré Kip Cats Logs. Ahora, presione esto Registros F. Bien. A ver. Verás, está esperando porque no se puede sacar la imagen. Está buscando esta imagen, pero no puede encontrar esta imagen. Este es este tipo. Está buscando esta imagen no se puede encontrar. Voy a hacerlo describir. Describir. Describa la vaina. Veamos qué está pasando. Está buscando, mira la ortografía, agarra GHQL ese es el problema Co aquí, la imagen debe ser grafica esta imagen. Lo que voy a hacer, voy a sofocar así que entraremos aquí Voy a borrar esto, voy a borrar todo y desplegamos. Mantenga Kaká obtener todo. Mantener Kat eliminar, eliminar despliegue. Grandes implementaciones, y el nombre de implementación es lo que Graphkyw. GAF QO. Como suprimido. Ahora borra el servicio. ¿El servicio es qué? Servicio GAF Q. Puedes ver que estoy haciendo aquí GraphQL. Servicio Gp Q como el nombre que realmente especificaste. Eliminar servicio así podría decir eliminar SVC, ¿verdad? SVC Y por último, eliminar el mapa de configuración, que es CM. Dices config map completo o simplemente un CM. Gráfico QL. Esto está hecho, voy a tratar de redesplegar todo de nuevo. Mismo comando. Esto se hace de nuevo y voy a hacerlo ir. Error de tiempo de ejecución del contenedor. Soiferent error ahora, así que vamos a ver cuál es este error. ¿Voy a sacar esto bien? Y digo corte de cubo para describir. Describir puerto. Bien, entonces, ¿cuál es el problema? Así que míralo, dices fallar al crear tarea, C runtime up este permiso es desconocido. desconoce el permiso. ¿Cuál podría ser el problema? Vamos a revisar. Z Z. éste está realmente presente en la máquina debido a la que ponemos tantos, está bien Ahora el problema no se pudo iniciar la respuesta del contenedor de Damon no pudo crear la tarea de Shim, que es que OCI crea no pudo exacto esto Permiso denegado porque se desconoce, no lo sabe. Necesitamos ver qué es esto y mirar nuestro archivo Docker una vez más y ver cuál podría ser el problema porque se supone que todo va a ejecutar realmente a este tipo Vamos a verlo. Tengo un archivo Docker. Estos son puntos de entrada, y esto básicamente debería funcionar. ¿Cuál podría ser el problema? Vamos a verlo. Tenemos esto. Tenemos esto arriba. Estamos copiando esto en esta a, entonces estamos comprobando a los directores que ya están en esta app y lo estamos jalando Déjame ver como nos volvamos a poner. Obtener todo lo que pueda hacer así que esto menos tratar de depurar es un poco más. Veamos qué está pasando. Espero que esto se haya copiado con éxito. Las exhibiciones no se copiaron con éxito. Lo que voy a hacer, déjame intentar correr D Dcer ya veo. Sever podría ser el problema. Para que pueda correr esta formación es la nueve, tengo un problema, recuerden que no definimos a nuestro anfitrión. Esto también sería un tema. Esto no está claro cuál es el problema voy a ir a poner en mi anfitrión e intentar ejecutarlo de nuevo y ver qué pasa. Voy a publicar video, poner esto adentro, lo voy a poner en una diferente mi otra pantalla para que no exponga mi IP, ponga, luego borraré esto y lo haré. Sigamos adelante, borre. Seguiré adelante, eliminaré el despliegue, eliminaré el servicio o eliminaré la configuración. Eso es. Así que puse en mi anfitrión. Bien. Oigan, chicos. Decidí que solo estoy en este video. Entonces en el video que viene de la edición del sábado, luego para ver exactamente por qué estamos teniendo ese problema, entonces volveremos a terminar esto, los veo en el siguiente video. 151. CD de CI, parte 8: Hola a todos, genial tenerte de vuelta. He podido construir esto con éxito , solo voy a mencionar eso. Esto se ha construido con éxito, sin embargo, hay una advertencia. Yo fui capaz de construirlo. Esto en realidad bulled con éxito, ya lo he registrado y voy a ver el código ahí Yo solo reviso el cuando te registras en la Gite en el código en Git, compruebo el flujo de trabajo y poder ver que todo va Sin embargo, debido a que ejecutamos demasiados comandos o por alguna razón, estoy descubriendo que la imagen nativa en realidad arroja un error extraño o algún problema de permiso. He intentado depurar desde hace bastante tiempo. Con el fin de terminar realmente este video para que realmente se vea construido para lograr el propósito, construí el uno. El que construimos localmente, en realidad presioné a github y realmente pude hacerlo. Me refiero probablemente al servidor Ubuntu que en realidad era provisión le faltan algunos detalles o alguna biblioteca. Ahora mismo, lo que he podido hacer es lo que construí localmente, lo llamé gap one merecer. No sé por qué elegí el nombre, y eso está funcionando con éxito. De hecho, podemos simplemente entrar. Yo solo cojo esto solo escojo esto hago más lindo exec. Yo hago exec, luego dash IT. Entonces metí eso sin el slash delantero. Para slash Bn bash. Verás, en realidad podrías entrar. De hecho, nos muestra todo lo que tenemos, que es un ap y eso fue exactamente lo que usamos. Si revisas el archivo de Daco, ves que está arriba, en realidad la estamos colocando arriba y esto está funcionando correctamente Ahora bien, si voy a salir esto existiendo esto, entonces puedes comprobarlo. Vamos a describir esta vaina. Yo voy a hacer esto. Voy a describir esta vaina para ver cómo se ve el tronco. Voy a hacer Qc describir la vaina. Uh, eh. ¿Vemos esto entrando? ¿Estamos en condiciones de ver esto en realidad Todo va bien. Comprobemos los registros. Voy a revisar los registros ahora, Cubitadora y troncos. Muy bien, entonces vemos que esto realmente comenzó con éxito, y así es básicamente como se ve. Esto es muy maravilloso, y creo que en realidad podemos trabajar con esto. Todo bien. De hecho, hemos sido capaces de construir esto con éxito. De hecho, intentemos con el comando. Intentemos comando para ver si realmente funciona. Lo que voy a hacer es que voy a arrancar mi servidor de autorización. Fresco. Tengo mi servidor de autorización. Esto ya comenzó. Todo bien. Tengo mi servidor de telecon Esto se pone en marcha. Ahora, ya puse mis datos. Ya puse en mis datos, que solo voy a mostrar el servidor caliente. El servidor caliente y el host, lo señalé a mi IP local, y eso es en realidad eso es bastante genial. Lo que voy a hacer ahora mismo es que luego puedo hacer una llamada. Si entonces hago una llamada a esto y obtiene la ficha, bien, entonces tengo esta ficha Ahora bien, lo que expuse, si realmente miras el archivo, déjame intentar mostrarlo desde una pantalla de modelo para que en realidad no exponga ese bit. Bien. Así que estoy tratando de presumir de eso. Bien, entonces eso viene bien. Todo bien. Tráelo a colación. Sí, aquí está. Entonces, si lo miras para las ollas de nodo en realidad estoy exponiendo 32 mil Entonces significa para nosotros coll desde afuera, vamos a estar usando 32 mil. ¿Todo bien? He copiado. He copiado la ficha. Así que usa esto. Ya tengo este set. Entonces dijiste 2000, cambiemos las probabilidades. Recuerda usar un Control A, para que no tengamos sobras Probemos esto. Solo vamos a buscar a la compañía. Todo bien. Impresionante. Ya ves que podríamos conseguir todo lo que tenemos aquí. Comprobamos departamentos, departamento está funcionando bien. Significa que realmente somos capaces de trabajar esto, el depósito de aplicaciones. Al menos en realidad se metió en la vaina. Entonces significa que esto está funcionando con precisión, bien. Hemos podido cubrir todo lo que nos propusimos hacer. Y esta es una guía bastante impresionante. Esto es bastante impresionante. Entonces, el siguiente paso, lo que vamos a estar viendo es ver cómo ahora, si tienes un servidor GraphQL funcionando, ¿cómo te conectas a él Entonces vamos a seguir adelante y hacer clic en el cliente. Y con ese cliente, luego nos conectamos a este servidor Graphc Entonces veremos cómo comunicarnos con mutaciones y también veremos cómo comunicarnos con la consulta para que tengamos un proceso de extremo a extremo, estamos construyendo un servidor de cue de gráficos nosotros mismos, o en realidad estamos creando o realmente nos conectamos a un servidor de atención gráfica. Con esto, los veré chicos en el siguiente video. 152. CD de CI parte 9: Oigan, todos. Genial tenerte de vuelta. Todo bien. Entonces lo que pretendemos hacer en esta sección es bastante sencillo. Entonces, lo que queremos hacer es en la última sección, miramos el despliegue usando un pipeline CICD, y en realidad implementamos un GA ViaMH Pero sin embargo, podría haber un escenario que solo quieras desplegar el jar fat normal, normal o el jar ejecutable, lo estamos viendo en esta sección. Estoy a punto de registrarme en la sucursal D. Usar la rama para manejar realmente este tipo de implementación. Actualmente estoy en la rama Dev como puedes verlas en dev. Vamos a cambiar en lugar de amina, ya que hemos dedicado nuestro principal a empujar realmente gravimg usando la muerte para impulsar esto ¿Cuáles son los cambios que van a pasar? Todo va a permanecer igual, si lo miramos hasta ahora. Esto va a cambiar. Todavía vamos a estar usando la misma acción. Todavía se va a utilizar la misma acción. Ahora aquí es donde potencialmente entrará el cambio. Vamos a sacar el código. Todavía necesitamos todas estas versiones necesitamos el gravi podríamos usar el mismo graviu Si no eres consciente Gavin básicamente también tiene un mal momento de JV equivocado, no excluye es solo que construye encima de él y es capaz de hacer algo más único Bien. Aquí lo tenemos ahora. Esto es lo que va a cambiar. Ahora para nuestro comando, no vamos a ejecutar estos animales, vamos a hacer envian paquete limpio Podríamos simplemente hacer paquete, creo que acabo de hacer paquete ambiental. Empaque luego omita pruebas, luego eliminamos todo el derecho. Aparentemente, no creo que todo esto realmente haga ninguna diferencia, ¿verdad? Porque nosotros solo básicamente solo hay comandos adicionales que en realidad podrías agregar. No creo que necesite cosas como llamada paralela o los me gusta, pero podría simplemente darle al usuario los tiempos que podrías establecer a los tuyos entonces recuerda que mencioné esto es básicamente para darnos un algoritmo criptográfico más seguro o más fuerte para un aleatorio seguro que si vas a estar usando creo que esto es básicamente lo que necesitamos Vamos a conseguir un archivo jar, chicos necesitan un archivo Ja. Ahora, algo más necesita cambiar. Ahora bien, si estás al tanto, recuerda que el archivo Docker que creamos, este archivo Docker prácticamente era para el Necesitamos modificar realmente make for Docker file. En lugar de modificar, voy a dejar esto como esto. Voy a crear otro archivo Docker. Voy a señalar ese archivo Docker para construir nuestra imagen Eso es exactamente lo que vamos a hacer. Sólo voy a traer eso enseguida. Muy bien, entonces tengo una cabeza para hacer eso, como pueden ver, cupo Dokofle llamado Docker file OD y estoy usando Amazon Coreto 22, ¿verdad? cupo Dokofle llamado Docker file OD y estoy usando Amazon Yo solo quiero usar el número Jeff Recuerda, ese es todo el propósito de este video, ¿verdad? Entonces para construir el hecho jecutable. Entonces de la misma manera, sólo estoy pasando. Entonces estoy usando compilación en capas, ¿ verdad? Construcción en capas. ¿Correcto? Básicamente, solo tengo de una vez que se ha hecho el paquete, en realidad solo me despojo todo y elijo todo lo que necesito que necesito, y realmente soy capaz de construirlo. Así es básicamente como debería verse, ¿ verdad? Se registrará el tishod Esto no es diferente. Esto no suele ser diferente del aspecto que tienes y tienes tal vez Java luego guión jar luego tu jar, queremos usar un punto de entrada, y los me gusta Podrías decidir ir con la convención que acabo de ver que solo muestra una diferente para usar realmente construye tu archivo Docker usando una compilación en capas Esto es básicamente lo que vamos a tener. Ahora tenemos esto, tenemos que seguir adelante y modificarlo. Ahora recuerda, esto no sería mirar esto. Si piensas en esto, entonces tenemos esto. no necesitamos este comando porque ya no estamos haciendo esto. Voy a tomar esta orden. Este mando ya no es necesario, ¿ verdad? Porque no tenemos que hacer esto. Yo saqué a este tipo, ¿verdad? Vas a estar sacando, ¿verdad? Esto sigue activo. Aquí en realidad estamos configurando la versión Java. Estamos configurando la versión Java y el Maven y las luces blancas porque esto básicamente funcionaría, Java dos, y básicamente podremos ayudar a ver el correo electrónico como un archivo Java, en realidad podemos usar Amazon corrector para completar el trabajo, eso básicamente debería funcionar Entonces si no avanzas para ver cosas que estás guardando en caché, esto está bien Ahora necesito mencionar este almacenamiento en caché, creo que me falta algo ahí Todavía no he podido averiguarlo, pero al parecer, creo que necesito agregarme algún tipo de clave para habilitar el almacenamiento en caché Voy a seguir adelante como patrón desde aquí. ¿Qué más tenemos que hacer? Ya no necesitamos esta lata porque aquí estamos escuchando archivo y haciendo cumplir este ejecutable Ya no necesitamos esto porque en realidad estamos construyendo el archivo Java, el archivo Java, así que ya no necesitamos esto. Voy a sacar esta orden. Ahora queremos subir los artefactos. ¿Cuáles son los artefactos que necesitamos? Ahora, recuerden, aquí estarán subiendo cualquier cosa. ¿Subiendo un conjunto de cosas? Si miras cómo lo subimos, necesitamos archivo Darko Lo que estoy subiendo Docker file Underscore OD. Esto es exactamente lo que estoy apuntando a Docker file disco Old Esto es muy importante, chicos. Hacer archivo subrayado Od. Eso básicamente sería tener. Entonces, cuando construimos esto, creo que normalmente estará bien una vez que construyamos. Veamos exactamente cómo se ve. Pero cuando construyamos esto, vas a tener un archivo jar, ¿verdad? Es cualquier cosa que tenga un tarro de punto estrella. Esto es exactamente lo que estamos buscando pedir. Recuerda, voy a copiar estos datos, voy a tenerlos. Entonces tenemos todo esto está bien. Voy a llamar a este maravel artifi jar, para que no entre en conflicto con lo que teníamos antes Vamos a descargar lo mismo y lo que descarguemos será AvelGQL quiero decir, no Gavi, GraphQL no Gavi, Bien, así que también lo tenemos hecho. Entonces esto es para la sección de descargas y este es un detalle que se va a descargar como ya conocemos . Entonces ahí lo tenemos. Voy a tener un Jap voy a tener un objetivo, voy a tener esto, y esto básicamente debería funcionar como debería Ahora bien, la diferencia es, piensa en esto, si tuviera que hacer esto, usando este inicio de sesión de Docker, el inicio de sesión Docker utilizará el archivo Docker predeterminado Necesito revisar tu documentación para ver cómo podemos especificar un archivo Docker diferente, y volveré en un minuto Yo sólo pegaré el video y volveré. Bien, así que puedo averiguarlo. Entonces tenemos esto. Sólo te voy a mostrar lo que tenemos en la documentación. Si nos fijamos en la documentación, básicamente, esta es documentación para la acción de compilación y empuje. Y si buscas la acción build y push, indica que en realidad podrías usar algunos comandos adicionales, y estos son los comandos adicionales que puedes usar ahora. Si quieres. algunos de los ejemplos que se dieron. Este es un contexto en caso de que quieras. Ahora bien, si no mires hacia abajo, verás que hay un archivo en caso de que quieras partes para Dockerfile Esto es por defecto, pero estamos cambiando. Entonces estoy usando los puntos, luego slash. Mi Dockerfile sería entonces docophlon que se llama esperanza. Así es exactamente como deberíamos trabajar. Veamos cualquier otro ejemplo. Expediente. Yo sólo miro, mira eso. ¿Alguna otra cosa? A ver. Entonces esa es básicamente la única descripción que tenemos para ello. Todo bien. Entonces espero que eso realmente funcione y en realidad no tengamos ningún error, lo contrario, en realidad volvemos. Entonces esto es básicamente lo que tenemos. Así que en realidad he podido tener que modificamos que vamos a meter en el frasco. Y lo mismo que tenemos aquí, he añadido la madera Docker No voy a recoger el expediente Docker. Así que estoy recogiendo esto, el frasco. También estoy escogiendo esto. Entonces todo va a ser traído. Entonces somos capaces de construir y empujar realmente. ¿Bien? Entonces vamos a ser cosecha. Quiero cambiar esto para que sea diferente. Voy a llamar a este frasco de cull Graph. Llamémoslo G Giga, Giga un punto cero, eso en realidad nos daría un poco de diferencia Giga un punto cero, eso en realidad nos daría un poco de diferencia. Creo que esto básicamente es. Tenemos esto para trabajar en Dev y voy a empujar esto. Voy a empujar esto, en realidad deberías entrar. no debería estar construyendo la imagen grande Ya no debería estar construyendo la imagen grande y vamos a ver las cosas bien. Vuelve en el siguiente video, te voy a mostrar los resultados, y si hay alguna otra actualización por hacer, en realidad voy a mostrar esto. Los veré chicos en el siguiente video. 153. CD de CI parte 10: Oigan, chicos, es bueno tenerlos de vuelta. Todo bien. Entonces esto está hecho, ¿verdad? Cuando acabamos de empujar, todo funcionó con precisión, no obtuvimos ningún error, ¿verdad? Todas las correcciones que hicimos para empujar el número jar realmente funcionaron con precisión, y luego seguiré adelante para mostrar Docker Hub para ver la imagen que se empujó Y esta es mi cuenta, si la revisas, y esta es la Jarra. De hecho compruebo si vuelvo a Docker Hub en la base, ahora ves que solo es empujado GJar si lo abres, básicamente podrías ver eso, solo empujado hace 2 minutos Esto realmente se hizo y tienes el que cero y todo está funcionando con precisión. También tienes la talla es 266, ¿ verdad? Todo funcionó con precisión. Ahora bien, ¿cuál sería entonces la implicación y cómo ejecutamos esto localmente Lo primero que vamos a hacer si realmente sacamos esto a colación, es que se supone que debemos iniciar sesión en el escritorio de Docker y extraer la imagen localmente Para sacar la imagen localmente, luego actualizamos un despliegue amo fuego. Ese es básicamente el siguiente paso que se supone que debes hacer. Sigamos adelante y en realidad hagamos eso. Hagámoslo enseguida. Voy a construir mi dock en el escritorio. Escritorio Docker, eso se acerca. Bien, entonces entraré en mi sección de imagen. Entonces voy a cambiar esta brecha G. Te diré a GJ un punto cero. Entonces esto va a poder realmente obtener la imagen, ¿verdad? Ahora, mi Docker está realmente levantado. Entonces, lo siguiente que voy a hacer es que voy a sacar esa imagen, ¿verdad? Voy a sacar esa imagen. Ahora, recuerden, fácilmente puedo simplemente buscar aquí. De hecho, podría elegirlo directamente porque ya está sincronizado con mi sartén, diré slash G o G Jar Entonces Giga, ¿verdad? Así es. Esto es. Entonces, si ve, ahora puedo seguir adelante y simplemente tirar de esto, ¿verdad? Y esto no solo introduce esto en mi repositorio local o simplemente podrías ir a tu terminal y simplemente hacer un pull de Docker, solo sacar el nombre Ahora bien, ¿cómo se obtiene el nombre? Es muy sencillo. Así que solo ve a Docker Hub, que mostré antes. Una vez que vas a Docker Hub, ya ves, ya tienes esto así que podrías usar este mismo nombre, pero en lugar de empujar, usa pull Tirador de Docker. Tira, entonces entonces realmente tiras esto que va a ser Giga entonces un punto cero Al parecer eso es lo que va a pasar. Creo que esto debería haber salido adelante. Entonces esto sigue jalando ahora mismo. Esto ya está hecho. Esto ya está disponible. Vamos a echarle un vistazo. Comprobemos las imágenes. Vamos a las imágenes, después buscaré a Gi Ja, se puede ver que esto ha sido jalado. Esto se tira, y esto es chicos bastante increíbles. Esta bastante impresionante. Ahora ya tenemos esto hecho. El siguiente lo siguiente disponible que se supone que debemos hacer es traer a colación un Cubontis Mabunti está corriendo como puedes ver aquí abajo. Mac Boni sigue funcionando. Voy a seguir adelante para establecer mi anfitrión. Recuerda, este va a ser el host de tu sistema ahora. Esta es la razón porque tenemos un entorno virtualizado que no está disponible para nuestro sistema host De ahí que en realidad estoy poniendo a mi anfitrión Wi Fi. Así es mi IP Wi Fi, quiero decir, así es como probablemente va a través de Internet para luego conectarse a cosas como las credenciales, más como el servidor at que creamos, el servidor autiano que creamos, y luego la base Esa es toda la idea. Voy a hacer eso voy a hacer eso y traerlo. Antes de hacer eso, voy a poner en marcha mi servidor de autorización. Entonces mi servidor de autorización, lo traigo a colación, entonces esto es todo. Lo traigo así esto comenzará en el número de macetas. Voy a sacar esto a colación. Esto va a correr. Lo pondré en la otra ventana, lo pondré en la ventana, esto viene arriba solo tamiz, sube. Arol. Esto es para arriba, esto está arriba, ¿verdad? Entonces lo tenemos iniciado el 88998099. Entonces esto está arriba, voy a traer esto. Lo llevaré al otro lado. Fresco. Esto es bastante genial. Ahora que lo hemos hecho, se supone que hay que hacer lo siguiente, bastante impresionante. Empiezo se suponía que debía agregar la TI. Voy a tomar esto en mi otra pantalla. ¿Correcto? Entonces voy a seguir adelante agregar mi IP. Recuerda, si estoy usando el Windows, todo lo que necesitas hacer es escribir IP config, y poder verlo realmente para un MAC, puedes escribir espacio IP AGR Voy a ser capaz de realmente sacar eso. Entonces voy a hacer eso mi otra ventana. Recuerda, es secreto. En realidad no lo expones. Entonces voy a hacer eso por mi bien. Así que lo elegí y en realidad he reemplazado esos valores, ya los he reemplazado, y esto es genial. Esto es bastante genial. Ahora, creo que ya lo he hecho. Déjame simplemente hacer algo también para comprobar. Creo que tengo eso. Entonces puedo verificar. Comprobemos Kubernetis o clados. Pasemos de nuevo a pasar por el mismo proceso para estar seguros de todo en fuerza. Voy a decir mantener CTL eso es todo. ¿Hay algo corriendo? Sí, algunos de los últimos detalles que ejecutamos mientras en realidad estaba haciendo algunas pruebas. De hecho voy a quitar todo esto porque me olvidé de aclarar esto. Voy a hacer un cubo CTL, eliminar e implementar, simplemente eliminar desplegar. Se trata de un despliegue. Yo sólo voy a elegir el teclado gráfico, quito esto. Elimino esto. Entonces si quieres quitar el servicio, yo haré SVC, que es tomas de servicio para el servicio. Eso también funciona. Voy a mover el servicio. Vamos a sacar esto. Después también quita la gráfica. También elimino el mapa de configuración, CN. ¿Tenemos ese mapa de configuración? A ver. Creo que no tenemos ningún mapa de configuración por el momento, así que esto está bien. Volvamos a ponernos. Olvídate, esto es lo único que tenemos disponible. Todo bien. De hecho, hemos podido completar los detalles con Clay para luego ejecutarlo tal como está, bien. También hice algunos ajustes si voy a mostrarme enseguida. Tengo mi IP en la parte superior, así que es seguro. Ahora bien, si ves también he aumentado el retraso inicial porque recuerda para galv, si no estás ejecutando una gavage, el inicio del tiempo en realidad tomará un poco de Solo me refiero a 30 segundos, son 30 segundos, aquí están 30 segundos también, en realidad podría llegar así que necesito hacerlo en realidad en esto. Esto también es muy clásico. Porque si en realidad estableces solo 2 segundos para el retraso inicial como lo hiciste en la otra parte, realidad lo tienes que llenar bien. Todo bien. Entonces creo que tenemos todas las cosas básicas que necesitamos. Vamos a seguir adelante, hacer un LS. Bien, genial. ¿ Qué tal mis archivos aquí? Mi despliegue para cy acaba de implementar. Yo solo clare haré una Q CTL, aplicaré al chef, luego despliegue, el Todo bien. Ahora haz un Q CTL, consigue todo Todo bien. Entonces esto es quejarse de la imagen, así que veamos qué está pasando En realidad solo entramos en algo sobre el pool de imágenes. Entonces Q CTO describe, luego describe la olla y tiene esto Creo que necesito quitar las piezas. Sí. Lo que dijiste, Bao tirando de tarro de imagen, 10. La imagen retrocede en realidad puede encontrar esto. Vamos a ver qué está pasando aquí, ¿verdad? Quiero estar seguro, sí, agregué la imagen correcta, jar. Ahora, déjeme retomar esto. Grita esto. Yo lo haré Docker, Docker Image s Voy a hacer Gjar luego estrella. Bien. Ya que no tenemos este cero de Windows. Interesante. No tenemos esto. Voy a jugar, veo la razón por la que. Creo que debería ser ZZ, Theko porque tiraste directamente, ¿verdad Uh, eh. Este es el tema, ¿verdad? Entonces por eso falló la imagen. En realidad no coloqué en los derechos. Lo que voy a hacer, voy a venir aquí. Debería ser Theta k, ZZ, entonces tal. Esto debería poder encontrar la imagen ahora. Voy a borrar. Voy a borrar todo de nuevo. Eliminar todo. ¿Cuál es el último? Adelante y solo borra el último. Lo borraré, luego solo revisaré de nuevo. Esto se aplicó luego eliminar. Eliminado todo. Intentemos aplicar esto de nuevo. Yo sólo voy a aplicar. Hagamos un get all ahora. Ahora bien, este es un error diferente. No es un error de imagen genial. Vamos a entrar a ver cuál es el tema. Voy a ir en un par de esto hago un cubo CTL, luego describir vaina y tener esto Digo esto ya presente genial. Pudo encontrar esto ahora. Pero el dicho atrás de reiniciar contenedor y vaina esto. Está reiniciando el contenedor. ¿Cuál podría ser la razón por la que se está reiniciando? Comprobemos los registros. Yo voy a hacer esto. Voy a revisar las bitácoras. Cuando digo bitácoras. A ver si se desvirtieron Bien, entonces hay un problema. Ah, sí, y estoy seguro de que sabes por qué es este tema. No se puede encontrar el marcador de posición. No puede encontrar el marcador de posición. Así que en realidad vamos a comprobar esto. Entonces al mismo tiempo, si sabes que no hemos iniciado nuestras bases de datos, eso también podría ser un error potencial. Muy bien, así que arregla todo eso en el siguiente 154. CD de CI, parte 11: Oigan, chicos, genial tenerlos de vuelta. Genial tenerte de vuelta una vez más. Todo bien. Así que en realidad hemos podido ver que estamos lidiando con el tema de los perfiles. Entonces, lo que he tenido que hacer hice alguna modificación. Reviso Dockerfile habría actualizado esto para usar los perfiles de resorte activos que en realidad estaban Así que en realidad podrías mantener lo que tenemos. Entonces lo he cambiado a DB host. Entonces también tenemos los DB pots DB host y DB pods como básicamente lo tienen ahí, ¿ verdad? Todo bien. Estoy tratando de hacerlo para poder ser mi anfitrión Db. Recuerda que sin apuntar realmente a mi IP, y también he actualizado este cheque la aplicación Docker Ya está todo aquí, Db Host, DB pots. Ahora tenemos esto, ¿verdad? Ya me adelanté, construí y empujé Dock Hub. hecho, he empujado a En realidad he empujado aquí, déjame mostrarte un empujón a la acción. Si miras la acción, disbte con éxito, utilizo el requerido, debería ser requerido mal escrito, requerido host Entonces esto en realidad se hace correctamente. Entonces en realidad saco la imagen. Si miras solo mira la imagen, la imagen de Docker, S entonces ZeQuz slash De hecho saqué esto hace 13 minutos, lo cual hice esto. Esto ahora está funcionando para que podamos entonces realmente ir en prueba y verificar nuestra vivacidad se rompió y nuestro libro de preparación y ver si las cosas están funcionando como Lo que voy a hacer, entonces sólo voy a entrar y simplemente aplicar esto. Yo sólo mantengo que todo esto está funcionando. Recuerden que dije 32. Si tuvieras que mirarlo, creo que no mostré esa parte. Si revisas el despliegue, entra aquí, bien. Fije 30 segundos como segundo de retardo inicial. Antes de que realmente comience y comience a patear para ver si está activo o no, son 30 segundos para ambos por la preparación y vivacidad Entonces solo espera. Esto es 24. Comprobemos de nuevo, este es el 28. Entonces el periodo, dije que debería comenzar a verificar son 15 segundos después. Estamos viendo esto. Sólo vamos a esperarlo. Creo que en realidad debería darse vuelta Así que vamos a comprobar de nuevo. Si quieres, podrías hacer un dash dash watch, pero en un comando en el Linux, Esto tiene que ser un q específico, físicamente. Entonces ves que empezó, yo empecé. Si quieres que haga una pausa, golpeando de nuevo el comando, otra cosa que podrías hacer es simplemente decir consigue página, luego dash dash watch. Sólo quédate en esa espera. Bien, así que eso está arriba, así que revisemos su sonda de preparación y revisemos su sonda de vivacidad Esto es para la preparación. Si le pegas a esto, está funcionando. También quiero mencionar que cambié el cuaderno a 32,001, y vamos a revisar su sonda de preparación Reviso su sonda esc vivacidad, bien. Verás, esto está funcionando con precisión. Bien, chicos, creo que en realidad hemos podido ver que la apportiy comenzó, así pueden seguir adelante y probar de la misma manera que probamos cuando realmente sacamos la imagen que recuerden usar tu IP, tu IP es una cosa clave que revisé en Revisé en el archivo plomer. Esa es la clave que necesitas para asegurarte de poner en lo demás, esto no va a funcionar. Déjame moverlo déjame mover mis IPs para mostrarte exactamente dónde vas a colocar eso para un repaso. Trae esto para que veas, tenemos el host hot server y el host DB para colocar ahí la IP y poder tener esta conectada. Con esto, creo que hemos cubierto todo lo que necesitamos cubrir en este curso. Tenemos solo un detalle más, que es si se está ejecutando una aplicación Gp QL, ¿cómo me conecto a ella ¿Verdad? ¿Cómo escribo código contra él, para poder usarlo realmente en reste o clientes de descanso? Usamos clientes de descanso para crear una forma muy genial de conectarse realmente a un servidor de graph curo existente, que puedas saber cómo hacer mutación y al mismo tiempo, sabes cómo hacer realmente una lectura. Con eso, los veré chicos en el siguiente video. 155. Cliente Graphql 1: Oigan, todos. Bienvenido a la última sección de este curso. Ojalá, esta va a ser la última sección, ¿no? Bien, lo que estamos haciendo aquí es construir realmente un cliente. Como mencioné, pudimos construir un servidor, ¿verdad? Tradicionalmente, no es de la misma manera que te habrías conectado a un Gavi, estarás conectado a un servidor HTTP o a una aplicación que está construida con HTTP A pesar de que es sill HTTP, te estás conectando de alguna manera, pero Gavi es un poco diferente, para realmente hacer esto, tuve que dejar un proyecto diferente que voy a estar revisando y estar disponible en la sección de descripción Siempre se podía comprobar para ver dónde está. Ahora, también he seguido adelante para crear varios detalles porque no quería que este video fuera demasiado largo, ¿verdad? O hay algunos detalles innecesarios que siento. No es necesario, ¿verdad? En realidad es necesario, ¿verdad? Pero siento que podría hacerlo fácilmente más fácil creando distancia por delante. Entonces voy a pasar por explicar todo lo que he hecho. Este video en particular antes explicaré todo lo que se ha hecho hasta ahora, y empiezo a construir sobre eso a partir de videos posteriores. Todo bien. Bien, genial. Entonces, para conectarte al servidor AGA VM, ¿cuáles son las cosas que estás viendo? Así que vamos a darle paso a paso, ¿verdad? ¿Cuáles son las cosas que estás viendo? Entonces tomaremos un escenario. ¿Correcto? Tomamos un escenario y el escenario, los dos escenarios que ya están hechos en estos momentos es la creación de una empresa. Si quieres crear una empresa, necesitas algunos detalles. Comprobemos también la búsqueda de todas las compañíast. Un a fetch company, necesitas pasar todos estos detalles. Ahora, lo genial para recuerdes es que cuando intentas crear realmente estás tratando de usar realmente Gan quieres conectarte a un cliente, no uses un cliente para conectarte al servidor de Gavian Es casi similar a la prueba que ruteamos. Significa que tenemos que encontrar la manera de poder pasar nuestras entradas si tiene algunas no tiene. Después lo pasaremos a la gráfica HTTP Gavi HTP QL. Perdón por estar diciendo Gavi media gráfica, perdón. GraphQL a ese punto final. Ahora bien, si tuvieras que mirar, si tuvieras que mirar esto, voy a estar cambiando mucho de pantalla así que probablemente lo voy a tomar un poco despacio. Lo miro, estamos haciendo un post a este punto final. Prácticamente, entendemos que todas nuestras peticiones serían planteadas a los puntos finales Entonces estamos pasando estos detalles. Este es el cuerpo. Por favor, ten en cuenta, este es el cuerpo por el que estamos pasando. Este es el cuerpo que en realidad estamos pasando. Entonces me plantea la pregunta, ¿cómo vamos a representar esto si queremos usar Postman o decir que queremos usar un cliente, la forma en que lo estamos haciendo ahora mismo, descansar clientes, verdad Ahora, nadie eligió cliente de descanso porque no hay diferencia entre spas y plantillas de descanso. No hay rendimiento y mejoras significativas en el rendimiento. Es solo que hacen uso de cosas llamadas escrituras API fluidas. De hecho, podrían tener una forma dinámica de escribir cosas para aquellos que ya se usan ya acostumbrados a los clientes web. Entonces, por eso vamos a llevarlo paso a paso. Ahora la forma de conectarme, lo que tenía que hacer antes que nada, en una base, creé un cliente. Este cliente realmente no hace nada excepcional. Todo lo que hace es que solo estoy recibiendo un cuerpo de solicitud que es genérico y estoy obteniendo una respuesta que es genérica. Este es el número donde estás dentro de tu plantilla st. Ahora convirtiendo ahora para una plantilla de chaleco, probablemente estés haciendo una plantilla que B intercambia o publique por entidad. Así es como funciona. simplemente buscar el equivalente. Ahora dentro de un post, se podía ver que estoy duro codificando cosas porque no quería que fuera demasiado complicado. Entonces estoy pasando el cuerpo, sea cual sea el cuerpo con pedacitos que estés pasando aquí. Voy a hablar de esto en un minuto. Después el encabezado. Cualesquiera que sean los encabezados, todos los que podamos tener porque podríamos tener varios encabezados, cosas como nuestra autorización y similares, así que lo pasaremos. Entonces recuperamos. Eso es básicamente lo que significa. Una vez que enviamos la solicitud para recuperar, entonces ¿en qué queremos formatear la clase? Lo que eso significa es nuestra respuesta, cualquier respuesta que venga, ¿qué tipo de respuesta estamos esperando? Podría tomar una clase para hacer eso de verdad. Ahora, hablemos de la respuesta. Ahora para la empresa, si estás plenamente consciente, sabes que así es como se ve la respuesta de una empresa . Te voy a mostrar. Nos fijamos en nuestra empresa, empresa fáctica, eso es un dato, el anidado dentro de los datos, somos empresa Fetal Anidado nosotros es que tenemos éxito un mensaje, entonces tenemos el detalle principal El principal detalla una lista de empresas, que contiene nombre, número de hogar, oficina central o país. Tú para comparar así es exactamente como se ve esto. Datos, el anidado es cuál es la respuesta así que tenemos los datos, los anidados entre ellos Tenemos la empresa de creación. Entonces tenemos, perdón creo que estoy viendo lo incorrecto. Veamos qué estoy viendo otra vez? Esta es la respuesta fetal de la compañía. Bien, lo siento. Entonces esto es lo que quise decir, esto es todo. Ahora vemos que tenemos datos, luego tenemos compañía fetal. Pero entre ellos, tenemos el éxito y el mensaje, entonces el DTO esa es la lista de dt Podrías comparar realmente llevar esto a un lado y llevar esto a un lado, ¿ verdad? Y trae esto a un lado. Para que veas que tienes los datos, luego la compañía fg, que también es independiente. Entonces tenemos a estos dos anidados dentro de él. Eso es lo que tenemos en la lista de empresa, que es una lista. Eso es lo que tenemos la empresa que la hice desde la empresa DTO, y tenemos todo esto Ahora agregué JS Propiedad ignorada para que en caso de que algún cambio de propiedad en el futuro, no afecte lo que tienes. Normalmente es cierto para el caso de donde realmente tienes un, normalmente es cierto cuando estás conectado a un servidor que podrían cambiar algunas propiedades más adelante, agregas esto y así no se rompe. De hecho, hemos podido modelar nuestra respuesta, entonces qué sigue, veamos el cuerpo. Ahora para el cuerpo es bastante único. Veamos esto. Volvamos con nuestros clientes. Nuestros clientes están recibiendo esto. Recibir este cuerpo. ¿Qué aspecto tendrá nuestro cuerpo? ¿Cómo sería el cuerpo de este tipo? Si miras el cuerpo, el cuerpo necesita contener esto. Esta es la consulta, todo esto. Sin hacerlo demasiado complicado, solo necesitas copiar exactamente como es Wh exactamente lo que hice aquí. Entonces creé una interfaz. Mira la compañía fetal, eso es exactamente lo que hice. Yo sólo la pegué aquí. Ahora bien, para los que se preguntan, ¿cómo hice que esto sucediera? Es tan sencillo como esto. Podrías usar una pantalla doble co y simplemente pegarla ahí. Creo que sí lo copié correctamente. Simplemente copia. Podrías hacer esto. copia esto directamente y solo pega dentro de él. Esto funcionará con precisión. ¿Correcto? Pero por qué usar todo esto cuando ya teníamos el bloque de texto en Java. No puedo recordar la versión Java que estaba tramando ahora, donde podrías usar un triple código. Entonces una vez que hagas eso, solo mételo. Eso es básicamente lo que logré. Nada demasiado complicado, ¿verdad? Así fue como pude traer esto. Entonces es solo una interfaz, solo tienes esto. Entonces, ¿cómo se usa? Entonces si no miras, entonces si no miras esto, hemos podido hablar del cuerpo, de la respuesta. La respuesta es ésta. Esta es la respuesta que quise decir, para la compañía fetch, entonces somos capaces de mirar realmente esta guía ¿Cómo se conectan? ¿Dónde entra la pieza de conexión? Necesitas crear más como una solicitud que tome en una consulta, luego variable. Ahora bien, ¿qué significa esto? Para el caso de una solicitud que no tenga entrada, no necesitaría esto. Pero esto siempre es necesario porque esta consulta siempre viene de aquí. Mientras que para la variable será el caso de por qué tienes una entrada. Entiendes, será el caso de cuando tengas una entrada cuando tengas una entrada, entonces en realidad entra aquí. Vemos ejemplo típico que ya creé eso. Ahora este video se está alargar un poco. Volvamos en el siguiente video, así que continúa desde donde empezamos. Nos vemos en el siguiente video. 156. Cliente Graphql 2: Oigan, chicos, es bueno tenerlos de vuelta. Todo bien. Continuando desde donde paramos. De hecho, pude explicar estos detalles. Ahora, vamos a juntar toda esta pieza. Vayamos al servicio del GOP Cuo. Si observa el servicio GOP Co, alqutd el servicio que los cables están Ahora para la compañía Factual, todo lo que hice fue establecer la búsqueda Si nos fijamos en esta compañía característica, solo estoy apuntando a esto. Así es como se conecta. Ahora, trae eso lo traigo. Bien, entonces mi quivi quiero quitar esto porque solo podría tomar todo adentro y quitar estos bits escupe a distancia Eliminemos este también. Comprobemos nuestros abucheos res ¿Nuestros abucheos res lo contienen? Alimenta la respuesta de tu empresa, la justicia. Bien, entonces me quito el UID y las luces. Eso funciona. Bien, así que esto está bien. Entonces podrías agregarlo en recordar podrías decidir qué quieres recuperar o no. Ahora bien, este fue el primer caso, vayamos al servicio de caso gráfico. La petición básica que estaba mencionando, mencioné es cuando tienes una entrada, recuerda cuando tienes una entrada, es cuando usas esta otra no la necesitas, necesitas la consulta. Si no miras esto, solo lo paso solo la consulta al aire. Entonces simplemente simplemente paso esto como el cuerpo porque recuerda que te dije que la consulta entrará como el cuerpo de la solicitud. Esto entra como el cuerpo, las respuestas luego el encabezado. Si miras vamos a explorar este encabezado. Encabezado está justo aquí abajo. Si miras el encabezado, el encabezado, único que estoy haciendo es simplemente establecer un nuevo encabezado, si es nulo, esto es nulo, si el encabezado es nulo, solo paso el encabezado, entonces solo reviso la respuesta y el token de Asset como quiero el token SS exactamente igual pero acabo de levantar el código. Estábamos obteniendo el token *** para conectar a nuestro cliente con el servidor de autorización. Solo estoy configurando un servidor ton. Recuerde que ahora todo el punto final está asegurado. Eso es básicamente lo que estoy haciendo aquí. Sé que esto no debería ser extraño para ti. Eso es básicamente lo que estoy haciendo aquí. Habiendo hecho esto, habiendo hecho esto, eso es básicamente lo que estoy pasando al encabezado entonces la respuesta. Exploremos esto nuevamente entonces para que tenga más sentido. Ahora estoy pasando el cuerpo. Recuerden que todo va como el cuerpo, entonces estoy pasando en la respuesta, que ya muestran, luego la cabecera. Así sería realmente representado el encabezado. Voy a entrar. Si entonces ejecutamos esto como es, ¿verdad? Entonces echemos un vistazo a la API. Si ves la API, no estoy haciendo nada. Todo lo que estoy haciendo es recordar que había codificado la mayoría de las cosas. Sólo estoy llamando al cliente y a la compañía. Y así llama a esto, vamos a construir esto. Entonces realmente no es complicado, crear un cliente para Graph Q. Así que voy a decir, vamos a ejecutar esto. Todo bien. Entonces si haces esto y miras a la compañía, si le pego compañía. Bien, entonces hay un error. Entonces dice que hay un error de sintaxis en esta parte. Así que vamos a revisar. Quiero sospechar esto de nuestra consulta. Esta consulta detalla. ¿Verdad? Entonces, revisemos estos detalles de COVID correctamente. Habrá algo mal que realmente necesitamos traer Bien, entonces mirándolo de nuevo. Ahora, creo que nos falta la quervy, pero esto no se veía Bien, ahora, intentemos esto de nuevo Intentemos esto otra vez. Entonces a medida que iniciamos esto. Reiniciemos esto. Bien. Esto viene a medida que empezamos. Bien, así que intentemos esto otra vez. Bien, para que veas que esto realmente entra. La consulta, creo que omití una de esta parte. Sólo tengo que copiar lo volví a pegar. Recuerda, yo solo reflejo exactamente esta misma cosa. Todo es lo que traje. Pude ver que en realidad soy capaz recuperar todo lo que toda la compañía en consecuencia. Ahora bien, esto está funcionando Esto funciona muy bien. Ahora, vayamos a la empresa Create. Para la empresa Crea, podrías ver un listo me toda la respuesta ahora. Veamos cómo es la respuesta o la empresa Crea. Mira la empresa, todo lo que se necesita son datos, la nesta es Crear empresa, luego mensaje de éxito y UID Si miras esto, esto es exactamente lo mismo. Crea Crea Empresa, luego apaga todo esto E. Ahora por favor ten mucho cuidado, quería mostrar esto. Lo siento, estoy mezclando reservas . Esta es la empresa. Vamos por ella otra vez. Esta es la empresa y esta es la misma. Todo bien. Entonces tenemos datos, crea empresa, luego el lío de éxito a UID Esto está bien representado. Bien, genial. Ahora ese es el partido de ida. Ahora el partido de vuelta es ahora veamos la consulta. ¿Ves la consulta? Ahora, comparemos con la consulta sobre. Yo no cambié nada. informar exactamente de la manera que es. Entonces QC es mutación, crea empresa, se puede ver que podría comparar la nueva compañía, ¿verdad? Exactamente, solo copié y ordené. Ahora se puede ver que esta es la representación exacta. Ahora esto funciona. Ahora veamos cómo entra este cable. Ahora, todo seguirá igual, pero la diferencia entra entonces en la entrada de la empresa. Para el puesto de la compañía, todo lo que tenía que hacer era simplemente crear, acabo de crear el DTO para solo poner en todas estas imputas que es esta parte esta Recuerda, tenemos las imputas nueva compañía, todo, creado el DTO para reflejar realmente todo esto Pero por favor ten mucho, mucho cuidado con lo que voy a hacer a continuación. Entonces después de poner todos estos DTO en, todo está bien como está, bien No obstante, cuando ahora estamos creando nuestra solicitud Bs, Cotner Bz, ya ves, agregué la Ahora estoy agregando la variable. ¿Recuerdas el nombre de la variable que usamos? El nombre de la variable es lo que Neil Company. Eso fue lo que agregamos aquí. Compañía Neil, que luego la pasa a compañía imputa exactamente esta misma cosa que tenemos aquí Nueva empresa, pasarla a insumos de la compañía, y eso es lo mismo que traes aquí. Si miras esto, no estoy diciendo nueva compañía y estoy pasando esto como una variable a esto. Esto en sí mismo, recuerda se convertirá en un mapa si te comparan con mapa internamente porque tus DTO o tus pods son básicamente mapas, para ser representados como cadenas Entonces traes esto como Jason, quiero decir, entonces esto simplemente funciona. Esto es que no hago nada diferente. Estoy recibiendo una empresa de rets, estoy usando los mismos clientes que creé, que es esto, también estoy recibiendo esto W esto hecho, entonces vamos a ejecutar esto. Estamos haciendo una compañía ts, así que lo que he hecho es por esta parte, acabo de agregar una identificación que estoy usando para ir a buscar Esta identificación es lo que pasé, veamos cómo funciona. Si ves el ID, solo paso el ID solo para que cambie y lo paso para crear compañía, entonces solo tenía estilos codificados donde codificé así que esto en realidad podría ser dinámico. Eso es lo que hice. Todo bien. Vamos a probarlo y ver qué ha pasado. Voy a cambiar esto a tres. Bien, puedes ver que esto fue creado con éxito. Entonces puedes ver, es bastante sencillo hacer esto en realidad. Entonces dentro del código, simplemente significa, ¿qué significa? Dentro del código, probablemente no estés usando una API. Simplemente estás recibiendo esto todo el camino juntos consigue tu compañía tranquila o luego puedes usarlo para hacer la lógica que quieres realizar. Espero que esto realmente funcione, chicos. Vamos en el siguiente video, y tomemos una mutación más y una consulta más, y luego podremos tenerlo todo junto. Los veo en el siguiente video. 157. Cliente Graphql 3: Oigan, chicos, es bueno tenerlos de vuelta. Lo que he seguido adelante es traer al departamento de dejar de fumar. Si tuvieras que revisar cheque o llanta o la colección cartero que compartí, esto se vería exactamente así No hay diferencia. Podría simplemente explorar rápidamente una vez más por departamentos. Pero para sacar esto a colación, verificar por departamento, podrías ver el departamento de pruebas de partes. Verás, exactamente lo mismo. Yo no cambié nada. Ahora bien, para el abandono si miras la respuesta, la respuesta no habría dejado departamento y esto. Vamos a reflejar esto. Ahora, utilizo una herramienta especial. Llamado GSN Formato Plus. Formato GSN plus. Entonces eso es lo que usaré para crear mi restaurante. Entonces voy a llamar a este Departamento resaus. ¿Correcto? Entonces este es el plugin para los interesados. Entonces, ¿este es el plugin que uso? GSM para Mapas JS para Mapo. Entonces, una vez que estás dentro, todo lo que necesitas hacer es acreditar la clase, copiar el JSON, cómo se ve en una prensa O S. Esto saldrá luego pegarlo y presionar bien y bien. Y esto automáticamente lo creará para ti. Entonces esto es crítico, chicos. Y una vez que tengas umbog, automáticamente se agrega en lumbox Entonces solo voy a quitar todo esto porque JCNPperty y estos son los mismos. Entonces no hay necesidad de agregar el JSMperty, ¿verdad? Bien. Así satisfacer el primer escenario de caso. Yo sólo voy a poner así que creo que esta es la respuesta. Ahora bien, las cosas podrían cambiar. Recuerda, estoy agregando esto para que no te olvides. Siempre agregue adyacenignore. Ajustar ver ignorar, ignorar propiedades. Ignorar nom. Cierto. Chris, siempre agrega esto es muy crucial para que no termines rompiendo paradas. Bien, ahora hemos hecho esto. ¿Cuál es el siguiente paso? El siguiente paso, como saben, es ahora modelar esto, así que voy a hacer esto. Voy a copiar esto tal como está. Voy a copiar esto tal como está, luego voy a esta parte, que es mi petición, y lo llamaré departamento Departamento impute departamento No deletreé esto correctamente, departamento Impute. Entonces de la misma manera, ponlo en el medio, o prueba, luego pegarlo, luego presionar bien, presionar bien. Todo bien. Entonces puedes ver esto básicamente en realidad entra. Ahora, ¿qué necesito? Si estuvieras muy atento, sabrías que no necesitamos este nuevo departamento porque esto es lo que vamos a pasar en un Sandy como variable Entonces no necesitamos esto, así que sólo voy a entrar y quitar esta primera capa. Voy a quitar esta primera capa, voy a sacar esta capa de ella. No se suponía que debía copiarlo o mejor dicho, déjame entrar y copiar la escritura. Esto es todo lo que necesitaba. Es todo lo que necesitaba. Si acabo de copiar esto, trae todo esto. Espiando todo Quiero copiarlo todo. Esos son para copiar esto. Bien. Bien, para que pueda volver a entrar. Así que vamos a aclarar esto. Bien, así que volvamos a hacer esto. Voy a quitar esto. Sólo quiero mostrarte el truco ahí. Ponlo entre S, luego pásalo, ¿no? Bien. Todo bien. Creo que esto no es válido vamos a ver, su nombre, ¿verdad? Oh, sí, no lo es. Entonces hay que tener esto al principio. Tienes uno más al final. ¿Bien? Entonces sí, esto se verá mejor ahora. Muy bien, así debería, debería ser correcto. Todo bien. Bien, entonces tenemos la representación adecuada de lo que necesitábamos, y esta cal si lo miras y puedes decidir dejarlo. Ya que son diferentes, es por eso que necesitas propiedad JS. Son lo mismo, no necesitas propiedad de JSN, ¿verdad? Entonces son exactamente iguales, así que no necesito propiedad de Jason, ¿verdad? Entonces esta es la imputa, ¿recuerdas? Muy bien, entonces me quito todo esto. Elimino todo esto. Muy bien, bastante genial. Bastante genial. Bien, entonces tenemos esto etiquetado en y esto funciona físicamente. Ahora tenemos una entrada departamental, cómo van a ser nuestros insumos. Todo bien. Entonces podemos seguir adelante para luego crear los detalles que necesitamos. Todo bien. Lo siguiente es que tenemos una respuesta. Tenemos una respuesta departamental, que va a quedar así y tener un imput Todo lo que necesitas hacer entra aquí. Vamos a crear a este tipo. Voy a llamarlo público, luego respuesta departamental. Respuesta departamental solo digo crear departamentos. Llamar a departamentos. Entonces probablemente solo dale una identificación. Yo solo pasa probablemente cambiando dinámicamente, podemos modificar canciones, tú lo llamas departamentos. Entonces vamos a construir el departamento en la gente antes la construcción nuestro ocupado Básicamente no va a cambiar. Yo sólo traeré esto. Pero esta vez, este houl crea departamentos. Entonces estamos trayendo nuestras imputs, pero esta vez , también necesitamos reflejar lo que hemos pasado aquí ¿Qué estaría pasando por aquí? Nueva deuda, que es nuevos departamentos. Vamos a traer eso aquí también porque es muy importante. Ahora recuerda código duro largo, siempre podrías colocar las cosas probablemente en una final estática. Tenemos esto. Ahora estamos esperando esto y estamos esperando una solicitud. Esto es básicamente lo que tenemos que hacer. Ahora lo siguiente que tenemos que hacer ahora mismo, recuerda que el rojo encabezó el encabezado aquí, cabezas en las que ya toma en ficha. Lo siguiente que básicamente debes hacer es ahora construir el departamento. Ahora voy a volver a entrar en el insumo del Departamento. Voy a convertirlo en un constructor, ¿ verdad? Voy a convertirlo en un constructor. Yo lo llamaré no Xs ya ahí. Después voy a añadir un ALX. Entonces me gusta arreglar esto correctamente. Entonces como constructor, ¿verdad? Entonces eso básicamente funciona para nosotros. De la misma manera también. Voy a hacer de esto un constructor en AAC, luego en Builder. Podría usar el Constructor para construir cosas realmente . Todo bien. Entonces creo que esto básicamente resume lo que tenemos que hacer aquí Así que entremos y construyamos rápidamente. Voy a ir a esta parte, luego voy a crear la dirección. Entonces vamos a tener departamentos que imputen los partmentimputes, los puntos constructor construyen Bien genial Entonces esto entra. Voy a traer todos los detalles. Entonces antes de eso también vamos a necesitar la dirección dirección tomando la dirección DTO, ¿verdad Es la dirección DTO. Saca esto. Vamos a estar necesitando eso. Entonces finalmente, vamos a estar necesitando punto aquí. Entonces necesitamos una dirección. Dirección Dirección DTO Builder's Builder's Build. Esto es bastante genial. Todo bien. Si nos fijamos en esto, ¿ qué necesitamos? Nos fijamos en ¿qué necesitamos? Necesitamos el ID de entidad, el ID de entidad que necesitamos las calles, la ciudad. Sólo voy a copiar esto para que podamos simplemente reflejar esto. Sólo voy a copiarlo, lo coloco para que podamos simplemente reflejar lo que estamos haciendo desde aquí. Yo sólo colocaré esto aquí. Podríamos simplemente construir cosas a partir de aquí. Necesitamos ID de entidad, la necesitamos calles. Calles. Entonces necesitamos esa ciudad. La necesidad de ese código postal. Todo bien. Esto es bastante genial. Sí, hemos podido hacer esto. Entonces para la empresa, necesitamos el nombre del punto, bien, genial. Necesitamos el número de departamento, el número de departamento. Necesitarás el nombre de la compañía, número C punto RC, C luego división, genial. Eso es básicamente todo, el nombre, esta parte y esta parte. De hecho, modificamos las cosas volvamos en el siguiente video para completar este paso. Ustedes en el siguiente video, 158. Cliente Graphql 4: Oigan, chicos, es bueno tenerlos de vuelta. Todo bien. Así que en realidad hemos podido crear todos los detalles que necesitamos para el departamento. Necesitamos el nombre, número de departamento, todo está ahí. Bien, entonces ahora recuerda, si has terminado de crear esto, necesitamos que las cosas aparentemente fueran difíciles de codificar, así que necesitamos asegurarnos de que las cosas realmente funcionen de la misma manera. Entonces necesito esta compañía. Entonces voy a crear un comp nueve para asegurar que esa empresa exista, recuerden, el departamento que existe esa empresa. Entonces vendré aquí y diré que el nombre de la compañía será este plus. El recuerdo agregar una identificación. Solo voy a agregar esta identificación aquí, ¿verdad? Entonces solo usa esa identificación para simplemente asegurarte de que son los mismos. Podrías hacer esto de otras maneras, solo estoy siendo perezoso. Entonces esta segunda parte sería la misma. Yo recojo esto también, ¿verdad? Entonces debería ser más. Bueno. Entonces la división, qué división tenemos divisiones separadas, ¿verdad? Si nos fijamos en la división, tenemos RRHH, yo sólo me quedaré con HR. RRHH. Entonces la dirección, estar trayendo. La dirección debe ser la dirección que usted aquí. Podría recibir esta variable. Vamos a llamarlo dirección. Bien. Me dirigí está bien. Yo sólo te voy a pasar la dirección D aquí. Eso está satisfecho. Por el nombre, apegémonos al nombre también”. ir a llamarlo recursos humanos, lo cual está bien. Llamémoslo recursos humanos. Pongamos la identificación, entonces es distintivo, número de departamento, ¿verdad? Si lo miras, número de departamento, ¿cuál es el número? Necesitamos el número. Sólo voy a poner un número genérico. Digamos 5432 para simplemente seguir el concepto y seguir y simplemente agregarle un número más. A continuación, agregue ID a él. Todo bien. Entonces esta parte también el número de prueba, voy a agregarle el ID. Creo que esto básicamente satisface lo que necesitamos. Ahora bien, el número de entidad, ¿no? El número de entidad que necesitamos crear básicamente es muy clave. Así que recuerda, el número de entidad aquí, el número de departamento debe ser el número de entidad, así que eso es muy, muy correcto. Entonces aquí, voy a hacer lo mismo solo para hacer que las cosas se enfríen. Eso voy a decir 852, cuatro, ¿verdad? Después más la identificación solo para hacerla. Recuerda, solo soy la prueba de éxito. Yo sólo quiero que las cosas sean únicas. Así que voy a pasar esto aquí, luego voy a entrar aquí. La entidad, esa es la entidad, al parecer ese debería ser el número de departamento. Entonces voy a usar ese número de departamento, así que es único. Bien. Entonces esto es básicamente único ahora. Entonces las calles, solo dale alguna calle estas calles de aquí, L solo hago lo mismo. Las calles, yo solo voy a las calles. Entonces más ID, recuerda, solo estoy tratando de hacer que todo sea único, ¿verdad? Entonces el gas de la ciudad, que está atando el código postal, sí, voy a pasar en 1042 33 Bien, creo que tenemos todo lo que necesitamos. Si no hemos volado todo, si nos hemos perdido algo, esto debería funcionar por defecto. Recuerda, recuerda por qué agregamos esto en. Este es un nombre muy dios que usamos en nuestra consulta, que es lo que tenemos aquí, ¿verdad? Entonces creo que estamos bien para probarlo de verdad. Entonces voy a quitar lo que trajimos, quitarle todo esto. Bien, entonces consigamos un punto final para esto. Pero solo entra, crea un punto final no debería ser diferente de esto. Sólo decir crea departamentos. Crear departamentos, llamarlo ID de departamento, ID de departamento. Lo mismo, ID de departamento. Ahora, llame a esto crea departamentos. Después ID de departamento. Así que crea departamentos. Crea departamentos. Bien, así que básicamente, aparentemente no hay intercambios ¿ es la respuesta de los deptners? Respuesta del Departamento. Bien. Entonces esto es básicamente lo que tenemos que hacer. Entonces, restudamos la aplicación y la probemos. Ojalá no hayamos roto nada y todo debería funcionar. Ahora, creo que me perdí el punto que probablemente necesite compartir rápidamente antes de seguir adelante. Ahora bien, si nos fijamos en esto, ya compartí ya discutiendo los errores, cómo se ve el error para la gráfica QL, básicamente solo tenemos una lista de error y lista tenemos este mensaje, ubicación y los likes Esto es muy crítico. Estoy agregando esto en. Si tuvieras que mirar mi respuesta, estoy extendiendo este error básicamente extendiendo caso no consigue realmente sacar la flecha. Esta es una muy buena manera de hacerlo realmente. Esto es muy crítico. En caso los datos, no tenemos ningún dato, al parecer tenemos algún tipo de error y el error también puede entrar. Estoy agregando a Jason para incluir no nulo. Para que en caso de que sea nulo, no veamos ese campo de error. Para el resto de paquetería creo que quiero hacer eso. Yo solo diré en, Jason, incluir no. Básicamente, esto es todo. Todo bien. Comencemos con la aplicación. Voy a poner en marcha en modo de depuración. Entonces traeré a mi cartero. Simplemente duplicaré esto, duplicado. Voy a llamar a esto crea departamentos. Entonces al parecer, ¿se lo di? Vamos a estar seguros, ¿cómo lo llamé? Vamos a estar seguros, ¿cómo lo llamé? Entonces entro aquí. Entonces revisamos el controlador, yo lo llamo crea departamentos. Bien, tornillo. La convocatoria crea departamentos. Entonces al parecer necesitaba esto. Es ID de departamento, ID de departamento. Ahora, tengo que asegurarme de que siga exactamente lo mismo de la misma manera que lo tengo. Pero el departamento de crear. Ya he creado esto antes. Así que vamos a darle otra vez a esto para ver si tenemos una flecha. Bien, voy a liberarlo. Bien, vamos a soltarlo. Como puedes ver, nuestra flecha pudo patear porque ya hemos creado esto antes. Recuerda cuando hicimos esta creación duplicada de entidad en videos anteriores. Esto es realmente genial. Voy a decir esto antes. Permítanme liberar estas partes y déjenme liberar esta parte. Se puede ver que esto fue creado. Ahora voy a Departamentos, voy a usar ID de departamento como cuatro. Vamos a crear esto. Al parecer esto fue venido Esto no va a volver, entonces significa que algo hubiera ocurrido. Entremos a ver qué habría pasado. Voy a poner esto porque es necesario, guarda esto. Voy a compartir esto. Todo bien. Vamos. Vamos a entrar. Si miro miro a mis clientes y clientes de Graph Q, dice, este es el error que tenemos aquí. Al mirarlo, dice, este es el error que obtuvimos para el anterior que probamos. Ahora veamos qué estamos probando para el cliente GAF Q Ahora bien, si no estás seguro de lo que está sucediendo aquí, básicamente podrías recibir una cadena de tu cliente es y luego usar un mapeador JCN, que es un mapa de objetos más bien para convertirlo Es totalmente tu elección. Yo solo pensé que lo mencionaste para aquellos que podrían estar interesados en hacer eso. Busquemos esto para el departamento de EDS. Departamento de cd están tomando una identificación y pasando en esto.Los TTIDS también corrigen el número de departamento Bien. Entonces, ¿ pasé esto en buttin Sí, paso esto en buteno, luego crea esto, esto realmente entra, esto entró directamente Estoy esperando respuesta de departamento. Esto entró. A ver, ¿confirma esto? Sí, esto confirmó lo que estamos esperando por supuesto que estamos esperando. Déjame revisar los detalles de mi consulta, mis detalles de consulta, si, mensaje de éxito UID Esto confirma. Todo bien. ¿Qué es EO ellos? C, ¿verdad? Déjame colocarme en modo de depuración. Este es el modo de depuración. Voy a colocar mi punto de quiebre aquí Coloco mi punto de quiebre aquí, así podré ejecutar esto forma aislada para ver qué pasa, que está aquí, Departamento que crea departamentos Voy a colocarlo aquí, así que solo lo ejecutaré para ver si hay algún error que vuelva. Vamos a darle a esto otra vez. Vamos a crear una empresa una vez más. Hago este cinco. Entonces para esto, voy a hacer cinco. Identificación de socios, y veamos. Bien, así que vamos a la caja. Entonces ID es cinco, así que todo esto parece correcto. Se pueden verificar las entradas. La entrada se ve correcta, cinco, cinco, 555. Bien. Entonces la dirección la dirección se ve correcta, es cinco, cinco sep cinco. Entonces afirma, los estados, los estados, los estados. Entonces no agregamos en estados. No agregamos en estados. Bien, así que reiniciemos esto. Esto se acerca. Antes de saltar al siguiente video. Esto es para arriba enseguida. Hagamos esto cinco. Vamos a liberar este más cuerdo la consola. Impresionante. Ya puedes ver, en realidad lo creamos con éxito. Esto está funcionando con precisión, chicos. Entonces hay una plantilla de descanso o cliente de descanso, realmente eres capaz de hacer. Es muy fácil. En realidad se basa en tu imaginación, cómo no quieres estructurar las cosas y cómo quieres conservar tus datos. Esto funciona. En el último video, tomamos un ejemplo más, que es una consulta. Intentemos la paginación. Los veré chicos en el siguiente video. 159. Cliente Graphql 5: Oigan, chicos, genial tenerlos de vuelta. Intentemos este último bit. Estoy tratando de mejorar a nuestros clientes de descanso. Voy a encabezar Addison que es la paginación que corresponde a esta Ya agregué esto en. Vas a meter esto Ya tenemos esto disponible. Recuerda esta consulta, tienes que traer en este imput, este imput Esto tiene que entrar. Todo bien. En primer lugar, voy a probarlo. Puedo ver cómo se ve nuestra respuesta. Usarán nuestra respuesta para luego hacer lo que necesitamos. Tengo que conseguir a mis clientes mi ficha. Voy a conseguirla ficha. Bien, entonces obteniendo la ficha, ficha ha sido recuperada, entonces entraré aquí, he cambiado esto. Recuerda, usa Control A o Comando A para eliminar todo. Entonces vamos a comprobar esto y le pega a esto. Impresionante. Veremos cómo se ve esto. Voy a copiar todos estos detalles, ¿verdad? Cuando voy a entrar aquí, voy a mis clientes. Yo uso el plug in ya lo mencioné antes, así que voy a llamarlo respuesta de paginación Respuesta, llámalo paginación. Respuesta de puginación. Lo siento, podría decirte paquete distinto a la clase. Paginación. Respuesta, y la pongo en el medio, pego, entonces, entonces. Esto crea algo automáticamente lo que necesito. Voy a quitar esto porque lo mismo, te ves igual. Se podía ver yo solo dejaría lo mismo ya ves que todo seguirá funcionando como debería. Ahora esto es básicamente lo que necesitaba para el nodo, todo entraría como debería para mí. Voy a tener que volver a mí todos estos detalles . Voy a dejarlo como está. Solo voy a agregar en Jason, ignorar, esto ignorar, luego ignorar propiedades o no, solo decir ignorar propiedades o no. Ahora mueve esto y lo voy a agregar aquí dos, no agregarlo aquí a, no agregarlo aquí igualmente. Por último, aquí, creo que tengo uno más, que está aquí. Todo bien. Entonces esto es básicamente todo. Recuerda, no codificé nada de esto o no lo tecleé manualmente Solo podrías usar ese plugin que tengo que necesitas. Ahora bien, el siguiente paso es que necesitamos la entrada, ¿no? El insumo es mucho en el Swiffer pam entra. Volvamos aquí. Entonces necesitamos esta imputa, que es esta primera parte Entonces este imput es esta primera parte. Entonces copia esta imputa recuerda que quiero cerrarla. Copia estas imputas, ¿verdad? O copia de aquí. Copia estas imputas y la cerraré. Sí. Veamos ahora. ¿ Me falta algo? Sí. Creo que me falta algo, así que voy a necesitar tener esto al final. Voy a tener más collibre al final que las imputas. Esto es básicamente lo que necesito. Oh, sí, es lo que necesito. Yo lo llamaré imputas de paginación. Yo lo llamaré cerdo. Pignacionimputs. Yendo psitin, esto va a funcionar ahora porque necesito agregar esto y esto Para que parezca un Jason, entonces esto es finessing. Impresionante. Verás, tengo mis datos. No voy a cambiar esto para mostrarte que o lo agregas o no, realmente no importa, pero esto es básicamente para casos en los que tienes cosas como subrayado, quiero que confirme la versión Java Eso es. Voy a entrar aquí. Recuerda, no has terminado. Vas a entrar aquí. De hecho voy a copiar esto. Realmente no estoy haciendo nada diferente. Voy a copiar esto sobre eso. Yo sólo lo critaré desde cero. Voy a decir respuesta de paginación pública. Vamos a conseguir la paginación. ¿Debo decir Pagent? ¿Pagent? Sí, necesitamos el tamaño de entrada. Esto es muy importante. Lo estaremos agregando a las mismas cosas que tenemos. Esto está bien. Entonces quiero mi paginación imput. ¿Es un constructor? Yo no lo creo. Voy a convertirlo en un constructor. De esa manera, me vendría bien el constructor. Como construyó un Bder. Ahora entra aquí y solo tráelo. Los cogollos se construyen. Todo bien. Esto es genial. Entonces nosotros así no voy a estresarme. No voy a traer esto. Entonces necesitamos que tengamos el constructor donde tu. Sí. Entonces eso va a escupir bien esta ciudad. Entonces voy a hacer esto. Entonces comienza DOB Mm hmm. Punto DOB final. Mm hmm. Dots género Dot género. Mm hmm. Sueldo de punto de Mm hmm. Sueldo punto también. Mm hmm. Entonces comienza el punto H. Bien, la edad termina, luego comienza la edad. Todo bien. Entonces creo que finalmente tenemos ese papel. Recuerda, cada una de ellas es opcional. Para que puedas decidir lo que quieras usar o lo que no quieras usar Todo es opcional. Eso lo explicamos muy críticamente en el último en los videos posteriores hace. Así que pudimos en realidad sub videos anteriores quiero decir, videos anteriores. Entonces vamos a traer esto ins. Sólo voy a usar el mismo valor. Entonces no cambia. Yo sólo lo traigo. Entonces, ¿está todo tomado en una cuerda? Entonces comienza ZOB, fin de DOB, hecho, género masculino masculino, ¿qué estoy tomando? M entonces sueldo a partir de este final de sueldo, esto entonces esto sumamos 23, y esto sumamos 30. Regla estándar. Creo que usamos Pasante Voy a quitarme esto. Entonces voy a llevar esto a una variable. Yo lo llamaré imput. Todo bien. Entonces ahora tenemos esto, ahora necesitamos usarlo. Entonces para usarlo, al parecer, tenemos algunos detalles aquí. Voy a copiar todo esto porque básicamente va a ser lo mismo. Entonces voy a colocar esto aquí. Recuerda que necesito cambiar esto. Entonces, ¿qué esperamos respuesta de paginación? Todos estos tipos siguen siendo los mismos. Ahora esta será la paginación, la paginación de los empleados. Todo bien. Ahora, veamos los detalles de nuestra consulta. Yo lo llamo paginación de detalles, ¿cómo le llaman entradas esto lo llamamos insumos. Esto va a ser imputa Imputs Recuerda que luego lo pasa a estas partes. Entonces también necesitamos algo más. No esto, también necesitamos algo más. Nosotros para pasar la página. Yo debería ser la página. Y el tamaño. Esto básicamente funciona directamente. Pasando el pase de página porque todo está entrando en este mapa, recuerden, estas partes, ya expliqué que esta parte va a entrar como variable. Ahora tenemos variables extra, así es como pasarla. Si son más de ocho, recuerda que puedes usar map off tienes que declarar tu mapa, luego el nuevo mapa hash, luego traerlo paso a paso, luego editarlo. Todo bien. Creo que tenemos básicamente todo lo que necesitamos. Sí, tenemos todo lo que necesitamos. Ahora pues entra y luego deja esto fuera. Trae esto en llámalo página ocho. Paginados. Llamemos a esto también Pagenate Deberías estar devolviendo la entidad de respuesta para paginados Entonces este tipo se llamará PigNTT estará tomando dos valores, que es esta página y el tamaño, página y un Al parecer, vamos a llamar a esta página Es página entonces como búsqueda permanente otra vez, como petición permanente El llamarlo tamaño. Entonces voy a ser una pulgada, luego la talla. Bien, así que vamos a pasar eso. Tamaño de página, ¿verdad? Tenemos a este Olivero. Voy a sacarlo. Ahora ves que esto es lo que tenemos. Todo bien. Volvamos siguiente video para probar esto. Los veo chicos en el siguiente video. 160. Cliente Graphql 6: Oigan, chicos, es bueno tenerlos de vuelta. Pasemos por Apoginación una vez más. Este es el controlador. Cuando entramos, guardando la página y el tamaño, entonces estamos construyendo el InfoSRMember, estamos codificando duro todo esto Toda la esencia es solo mostrarte cómo usar un cliente para conectarte al servidor de curado de grafos, que actualmente se está ejecutando. Yo no sé si lo mencioné, pero la cura gráfica se está ejecutando actualmente ahí es donde puedes conectarte a ella directamente. Esto se está ejecutando. Entonces ya tenemos dentro de este código duro, habíamos codificado donde lo que realmente va a estar llamando y ya tenemos el mapa el mapa que es el encabezado ya entrando. Si revisas lo que está haciendo el mapa, Q servicio. Esta parte de aquí, este ya es el encabezado que expliqué, que toma en el token, estás generando el token dinámicamente. Bien, esto está bien. Pasamos esto adentro. Vamos a probar a estos chicos. Vamos a probarlo y ver cómo se juega. ¿Cómo llamé al controlador? Déjame mirarlo otra vez. El controlador, llamo paginate clientes Paget pasan en Voy a entrar y crear los duplicados de publicaciones. Llamemos a esto es lo voy a llamar paginate. Entonces esto tomará en página, y esto tomará en tamaño. Pase en dos aquí, otro pase en diez aquí. Todo bien. Y esto se va a llamar Pigate Página y ocho. Todo bien. Vamos a darle a esto y a ver qué pasa. Impresionante. Pueden ver chicos, están teniendo todos los detalles que necesitan. Luego puede ingresar y luego agregar los detalles que necesita y usarlo según sea necesario. Con esto, hemos podido realmente completar todo ya que conseguimos que los clientes vieran cómo hacerlo ahora así que podremos desarrollar un ser desde cero para terminar bien nuestra gape, y ahora estamos usando un cliente para conectar eso Esto es muy, muy impresionante Pasemos rápidamente por uno más. En caso de que no cogieras un solo alcance. Recuerda que te mencioné en primer lugar, probablemente definas una interfaz para poner en todas las consultas para tu gráfica Q que vas a estar usando. El siguiente paso es configurar esto. Usted configuró esta versión muy minificada. Petición minimizada, tienes consulta, que va a ser la consulta en tu interfaz Entonces este mapa es necesariamente cuando tienes imputs cuando tienes imputs lo mencioné antes Entonces seguí adelante, luego veo la respuesta y de hecho moded todo usando mi plugin, plugin asociado, consulta con tus videos anteriores para ver cómo pude generar esto sin tener que escribirlos Entonces esto igualmente, te mostré cómo generar esto, que son las infusras en diferentes etapas Yo uso la última tormenta que era un paginado y todo lo que necesitábamos hacer cuando estamos construyendo es esta parte solo para el paginalred creó un cliente dinámico que podrías usar toma en imputa y te da una respuesta, que son genéricos para que podamos pasar cualquier imputa y obtener cualquier respuesta con deseo como dependiendo Lo que hice entonces fue entonces estoy pasando cosas, recuerden, usando esta petición base que mencioné, paso en la consulta, que es una interfaz, luego el mapa de nuestras imputas El mapa es esto imputa. Esto imputa corresponde a esto. Ver la página de inicio , corresponde a esto. Esta página, si la miras críticamente, eliminemos todos estos detalles adicionales. voy a sacar para que en realidad pudiéramos ver todo. Ahora bien, si nos fijamos en esto, haga clic derecho en esto. Ahora bien, esta entrada corresponde a esta entrada, la página corresponde a la página, y el tamaño corresponde al tamaño. Necesitas definir todas tus entradas ahí. Con eso hecho, vamos a cerrar todo en esta pestaña, cerrar todo el grupo de tabulación Ahora con eso, entonces puedes pasarlo y conseguir que realmente conecte a una gráfica estas relativamente simples, no es nada difícil. Todo lo que necesitas recordar es que esta es la guía clave que realmente necesitas hacer. Una vez que tengas esto, entonces tienes tus datos base, esta búsqueda básica que te ayuda. ¿Verdad? Recuerden que mencioné una vez más, esto es estrictamente para cuando se tiene la imputa la segunda parte. Todo bien. Con esto, podemos llegar al final del curso. Somos capaces de pasar por todo lo que necesitamos, todas las cosas que planeamos hacer, y espero que haya sido emocionante para ti tanto como para mí al crear esto. Con esto, probablemente te veré en el video de conclusión. Los veo en el siguiente video. 161. Cierre: Oigan, todos. Z aquí. Acabo de empezar a hacer este video de conclusión para poder mostrar mi cara para que ustedes vean quién era el instructor detrás de este curso. Estoy muy contenta de que hayas podido llegar aquí. Si eres capaz de hacerlo aquí, medio sencillo de pasar por las secciones espero que tengas, puedo imaginarte toneladas de conocimiento de hecho una masa. De hecho estoy esperando ver la palabra proyecto todos y cada uno de ustedes van a construir. Es increíble ver que has podido pasar incansablemente por este curso durante 20 horas para que puedas llegar hasta aquí, Guau. Enhorabuena. Ah, enhorabuena. Mi sombrero llevaba un sombrero. Me baje el sombrero, como ellos dirían. Ustedes han sido increíbles. Has sido maravilloso para ti poder llegar a esta sección. No puedo esperar a ver las cosas increíbles que estás a punto de hacer. Ahora bien, cómo trato de aplicar las cosas cuando te aprendo cosas, busco la oportunidad más rápida para implementar realmente Intenta ir al video una vez más cuando tengas problemas, haz preguntas, ¿verdad? Muéstrame preguntas en las secciones, y haré todo lo posible para responder a tiempo. Te estoy apoyando y no puedo esperar a ver el mundo cambiando las aplicaciones que ustedes van a ver Todo bien. Hasta entonces. Adiós por ahora.