08 - API Portfolio - Base de Datos - Migrations y Snapshots - Entity Framewok
概要
TLDREn este video se cierra el tema de bases de datos en un proyecto de programación, enfatizando la importancia de la estructura de código y la interacción con el ORM. Se explica el proceso de migraciones, cómo se crean y se aplican a la base de datos. Se aconseja realizar cambios en métodos y mantener una buena práctica en la nomenclatura al trabajar con el repositorio. También se discute el manejo de errores y la importancia del snapshot como herramienta para regresar a estados anteriores si se producen problemas.
収穫
- 📊 La estructura de la aplicación es básica y carece de arquitectura avanzada.
- 🔍 Las migraciones son esenciales para mantener la coherencia entre el código y la base de datos.
- ⚙️ El ORM gestiona la comunicación y la actualización de la base de datos.
- 📝 Es importante dar nombres significativos a las migraciones.
- 💾 Un snapshot permite regresar a un estado anterior de la base de datos si es necesario.
- 🚀 Los comandos 'add migration' y 'update database' son cruciales en el proceso de migración.
- 🔄 Los cambios en el código deben reflejarse en la base de datos para evitar inconsistencias.
- 🔎 El control de errores en migraciones asegura una buena práctica de desarrollo.
タイムライン
- 00:00:00 - 00:05:00
El video trata sobre la finalización del tema de bases de datos en una aplicación. El presentador revisa la estructura del código, mencionando que la arquitectura no fue algo destacado durante la clase. Se explica la organización general del código y las diversas carpetas, incluyendo controllers y entidades, y cómo se relacionan con la base de datos.
- 00:05:00 - 00:10:00
Se profundiza en el rol de un ORM (Object-Relational Mapping) en la modificación de la base de datos. El ORM no solo facilita la comunicación entre la base de datos y los objetos de la aplicación, sino que también mantiene la base de datos actualizada según los cambios en el código. Se destaca la importancia de las entidades y el contexto en este proceso de actualización.
- 00:10:00 - 00:15:00
El presentador describe el proceso de usar comandos específicos en el ORM para implementar migraciones en la base de datos. Explica cómo crear migraciones significativas que describan los cambios en la estructura de la base de datos. Se menciona la necesidad de nombres descriptivos para las migraciones y cómo afectan la base de datos.
- 00:15:00 - 00:20:00
Se introduce el concepto de 'snapshot', que es una captura del estado actual de la base de datos, creando un punto de referencia que facilita regresar a estados anteriores si se producen errores durante las migraciones. El snapshot es crucial para los desarrolladores porque permite resolver problemas sin complicaciones mayores.
- 00:20:00 - 00:25:00
El video demuestra cómo realizar cambios en el código y sus implicaciones en la base de datos, enfatizando la necesidad de ejecutar los comandos de migración apropiados. Se menciona la relación entre los cambios en el código y el snapshot, y cómo la migración garantiza la coherencia entre ambos.
- 00:25:00 - 00:31:26
Finalmente, el presentador habla sobre la creación de nuevos métodos en un repositorio para interactuar con la base de datos. Se muestran ejemplos de cómo implementar métodos para buscar experiencias por título e ID, y se deja como tarea a los estudiantes optimizar y ajustar algunos fragmentos de código antes de la próxima clase.
マインドマップ
ビデオQ&A
¿Qué es una migración en el contexto de bases de datos?
Una migración es un archivo o clase autogenerada que contiene instrucciones para cambiar la base de datos según los cambios en el código.
¿Qué función cumple el ORM en la base de datos?
El ORM se encarga de la comunicación entre la base de datos y los objetos de la aplicación, manteniendo actualizada la base de datos según el código.
¿Cómo se generan las migraciones?
Las migraciones se generan mediante el comando 'add migration' en la consola y deben ser nombradas de manera significativa para reflejar los cambios realizados.
¿Qué es un snapshot en el proceso de migración?
Un snapshot es una captura del estado actual de la base de datos que refleja su estructura en un momento determinado.
¿Qué comandos son necesarios para aplicar las migraciones?
Se utiliza el comando 'update database' para impactar los cambios definidos en el set de instrucciones en la base de datos.
ビデオをもっと見る
Desmontaje y montaje del módulo de airbag de Ford Focus Mk2
ESTRUCTURAS ORGANIZATIVAS de una EMPRESA ➕ Ejemplos | Economía de la empresa 147#
Aula 5: Gêneros do Mundo Profissional - o gênero currículo.
Curso 1 - Aula 6: Padrões de análises de dados
Curso 1 - Aula 5: Deep Learning (aprendizado profundo)
Límites Directos o Sustitución Directa - Ejercicios
- 00:00:00Cómo están chicos Bueno vamos a hoy
- 00:00:03hablar un poco
- 00:00:04sobre sobre digamos terminar un poco
- 00:00:08sobre base de datos vamos a cerrar ese
- 00:00:10tema Antes que nada quería igual que
- 00:00:11revisemos un poquito lo que tenemos el
- 00:00:13código que tenemos nosotros Simplemente
- 00:00:15porque bueno había preguntaron ahí en el
- 00:00:17comentario qué estructura qué
- 00:00:18arquitectura se eligió la verdad que acá
- 00:00:21no s digamos el proyecto en cuestión no
- 00:00:24se destaca por arquitectura yo no tomé
- 00:00:26decisiones ni tampoco dimos ese tema en
- 00:00:28clase
- 00:00:31y el código simplemente está más o menos
- 00:00:32separado Yo acá antes del video moví la
- 00:00:35carpeta entidad estaba fuera la
- 00:00:37movimiento de Data y fíjense que me
- 00:00:39verifique la que que el L space también
- 00:00:42cambió moví esa carpeta de entidades que
- 00:00:44estaba Suelta la moví dentro de la
- 00:00:45carpeta Data así como venía pero
- 00:00:49básicamente podemos decir que la
- 00:00:50estructura de digamos la arquitectura
- 00:00:52que tiene esta aplicación es poco y nada
- 00:00:54o sea tenemos la carpeta controller que
- 00:00:56se encarga de digamos de la
- 00:00:58responsabilidad que tiene interacción
- 00:01:00con el mundo exterior a través de la ric
- 00:01:02y la responses eh que están definidas en
- 00:01:05los controladores que acá pusimos una
- 00:01:07serie de de endpoints no que tienen esas
- 00:01:09r responses después tenemos la carpeta
- 00:01:12de edita que se va a encargar de la
- 00:01:13definición de La Estructura de datos y
- 00:01:15la interacción con la base de datos la
- 00:01:17definición de La Estructura de datos
- 00:01:18está dispuesta en las entidades Y en
- 00:01:21este caso hay una sola y la la clase que
- 00:01:25se encarga de la interacción con la base
- 00:01:26de datos es el repositorio ahora bien el
- 00:01:29contexto es una clase que se encarga de
- 00:01:31de digamos de pasar la información al al
- 00:01:34orm de cómo debería entender los
- 00:01:36estructur datos que nosotros definimos
- 00:01:38en nuestra aplicación
- 00:01:40eh Y la migration que tenemos acá es e
- 00:01:44una Ya lo vamos a hablar un poco más
- 00:01:45detenidamente Pero esto está generado
- 00:01:47por comandos que se Ejecutan en consola
- 00:01:50y que son utilizados por el orm para
- 00:01:53digamos tratar de generar o
- 00:01:55compatibilizar La Estructura de datos de
- 00:01:57nuestra aplicación con la base de datos
- 00:01:58relacional o ya que haya sido definida y
- 00:02:02bueno los Mods es una carpeta sin
- 00:02:03importancia que tiene clasecitas que
- 00:02:05vamos necesitando sobre la marcha para
- 00:02:08para pasar información de una capa a la
- 00:02:09otra o recibirla desde afuera desde los
- 00:02:12endpoint pero como les digo esta carpeta
- 00:02:15tiene digamos datos que son poco
- 00:02:17relevantes y que no se tienen en cuenta
- 00:02:18a la hora de generar una base de datos y
- 00:02:20demás acá van a ver el archivo de base
- 00:02:22de datos que Se generó después de hacer
- 00:02:24la migración y acá van a ver también el
- 00:02:26program que bueno el archivo de digamos
- 00:02:29de de sea se realizan dependencias y
- 00:02:33demás las cosas de configuración ys el
- 00:02:35programa es el archivo ejecutable inici
- 00:02:37de inicial de la aplicación y bueno acá
- 00:02:39se hacen muchas cosas Generalmente no es
- 00:02:41un archivo para nada poco importante
- 00:02:42pero ciertamente es algo que se toca con
- 00:02:45menos frecuencia que el resto no Bueno e
- 00:02:49esto es un repaso de lo que tenemos
- 00:02:50hasta ahora y ahora bien Vamos a
- 00:02:51detenernos un poquito y quiero que este
- 00:02:53video voy un poco rápido porque quiero
- 00:02:55que este video sea conciso porque el
- 00:02:57video anterior Nos pasamos un poco de
- 00:02:58tiempo e así que bueno en cuestión el el
- 00:03:04orm para generar una
- 00:03:08digamos para poder crear una base de
- 00:03:10datos Y para poder modificarla si es que
- 00:03:12se detecta un cambio en nuestro código
- 00:03:13lo que hace es obviamente mirar nuestro
- 00:03:15código Pero qué Mira Bueno mira las
- 00:03:17entidades y el
- 00:03:19contexto es decir quiero que entendamos
- 00:03:21bien Esto el orm no solamente se encarga
- 00:03:25de la comunicación entre la base de
- 00:03:26datos y los objetos que ya vamos a ver
- 00:03:28cómo lo hace sino que su vez también se
- 00:03:30encarga de mantener actualizada la base
- 00:03:32de datos en nuestro código en en digamos
- 00:03:35a partir de nuestro código es decir mira
- 00:03:37nuestro código y dice Okay cambio no sé
- 00:03:40cambiamos la propiedad de el nombre de
- 00:03:42una propiedad en vez de llamarse nombre
- 00:03:43se llama name ahora Bueno por lo tanto
- 00:03:45en la base de datos la columna de esa se
- 00:03:47va a tener que llamar name de nombre
- 00:03:50entonces la base de datos trata y hace
- 00:03:53eso hace ese cambio digamos se modifica
- 00:03:55en base a lo que el orm le dice el orm
- 00:03:57dice Ah okay detecté un cambio en el
- 00:03:58código vamos a cambiar también la base
- 00:04:01de datos y la cambia siempre y cuando
- 00:04:03corramos los comandos correctos Pero
- 00:04:05dónde se mira el dónde Mira el orm para
- 00:04:07decir Che cambió algo bueno Mira dos dos
- 00:04:10cosas las entidades y el contexto
- 00:04:12principalmente el contexto porque en el
- 00:04:14contexto decimos nosotros qué clase son
- 00:04:16las entidades de alguna manera eh
- 00:04:18fíjense que en el contexto si yo voy al
- 00:04:21contexto Yo acá definí que eh un dbc de
- 00:04:25la entidad experience
- 00:04:27eh va a estar digamos va a formar parte
- 00:04:29del contexto por lo tanto de alguna
- 00:04:31manera le estoy diciendo que mide que
- 00:04:32reloje esta entidad y acá en esta
- 00:04:34entidad definí que el ID por ejemplo es
- 00:04:36autogenerado y que sea una clave
- 00:04:38primaria Y eso tiene un impacto directo
- 00:04:40en la base de datos porque esto Esto es
- 00:04:43algo que se impacta en la base de datos
- 00:04:44o sea el ID es una propiedad que va a
- 00:04:47tener esas propiedades no una
- 00:04:49redundancia no es una una columna de la
- 00:04:52tabla que va a ser autogenerada por la
- 00:04:54base de datos Y eso es porque yo se lo
- 00:04:56pasé por código y eso se se hace
- 00:04:58realidad Porque orm Mira la entidad a
- 00:05:01través de la definición que se hace en
- 00:05:03el contexto de que esa entidad es un DS
- 00:05:05por lo tanto es algo que tiene que
- 00:05:06observar tanto sea para la creación de
- 00:05:09la base de datos como para la
- 00:05:11mantenimiento actualizada de la base de
- 00:05:13datos o sea cualquier cambio que hagamos
- 00:05:15ahí va a tener un impacto en la base de
- 00:05:17datos Cómo se logra ese impacto bueno
- 00:05:18acá viene el segundo paso que fue lo que
- 00:05:20hicimos al final del video de la clase
- 00:05:22pasada para lograr si yo cambio
- 00:05:24cualquier cosa en el código por sí solo
- 00:05:26el orm no lo mira lo mira solo si
- 00:05:28nosotros le pasamos a al unos dos
- 00:05:30comandos en cuestión hay un comando que
- 00:05:33es el ad
- 00:05:35migration que como les dije lo hicimos
- 00:05:37en la final de la clase pasada Así que
- 00:05:39cualquier cosa miren en el video
- 00:05:40anterior y este Comando ad migration lo
- 00:05:42que hace es le tenemos que pasar acá un
- 00:05:45nombre Sí el nombre de la migración que
- 00:05:47tiene que ser un nombre significativo es
- 00:05:49decir por ejemplo si yo cambié el nombre
- 00:05:50de una columna le tenemos que decir
- 00:05:53column name change tanto y el nombre de
- 00:05:56la columna por ejemplo pero digamos no
- 00:05:59supóngase que ustedes lo que hicieron
- 00:06:01fue o sea les pidieron que agreguen que
- 00:06:04agreguen una columna en una tabla que
- 00:06:08sea nombre y que a su vez se filtre por
- 00:06:10ese nombre Eh de menor a mayor y por no
- 00:06:13sé analfabético que Y ustedes a su vez
- 00:06:17dentro de ese cambio dentro de todo lo
- 00:06:18que tuvieron que hacer tuvieron que
- 00:06:19cambiar el nombre de la columna de Ne
- 00:06:21nombre entonces en la migración no van a
- 00:06:23poner Añadir columna de fila el nombre
- 00:06:26de admiración No sé no es add colum to
- 00:06:29list of columns No no es eh simplemente
- 00:06:33o filter by name feature no tienen que
- 00:06:37poner
- 00:06:38eh
- 00:06:40eh colum name
- 00:06:43change algo así eh de esa manera porque
- 00:06:46la migración tiene que ver
- 00:06:47exclusivamente no con todos los otros
- 00:06:49cambios que ustedes ya han hecho para
- 00:06:50Añadir esa columna que se vea linda que
- 00:06:52que que que que se pueda listar en el
- 00:06:54Front y que s yo y todos los cambios que
- 00:06:56hayan hecho circunstantes a eso sio
- 00:06:59específicamente a los cambios que tengan
- 00:07:01que ver con los cambios en la base de
- 00:07:02datos o que impacten en un cambio de la
- 00:07:04estructura de la base de datos por lo
- 00:07:05tanto en la migración tiene como un
- 00:07:07nombre relevante para esto Igualmente
- 00:07:08como les digo esto el nombre es algo
- 00:07:10obligatorio pero te pueden poner
- 00:07:12cualquier salaz y bandar pero tengan
- 00:07:15presente que bueno está bueno Ten un
- 00:07:17código de calidad y el nombre la tiene
- 00:07:19que tener un nombre representativo para
- 00:07:20los cambios que Se realizaron en batos
- 00:07:22bueno dicho esto e cuando se hace el ad
- 00:07:26migration que yo le puse inial migration
- 00:07:27creo suelo poner así la primera ad
- 00:07:30migración porque la primera ad migración
- 00:07:32a su vez crea algo que es el
- 00:07:34snapshot
- 00:07:36eh que ya vamos a habl un poco de Qué es
- 00:07:38cada cosa pero bueno después de comer de
- 00:07:40correr ese Comando se corre en la
- 00:07:42database que es otro
- 00:07:47Comando y este Comando lo que hace o sea
- 00:07:49como les dije este Comando lo que genera
- 00:07:51es una
- 00:07:53migration que si se fijan la cuando me
- 00:07:56refiero a migration me refiero a este
- 00:07:57archivo de código este
- 00:08:00acá este archivo de código que de hecho
- 00:08:02es hereda una clase que se llama
- 00:08:04migration que es una clase de entity
- 00:08:05framework si se fijan acá del paquete de
- 00:08:07Microsoft Core
- 00:08:09e Y también si es la primera migración
- 00:08:13se va a generar snapshot que ya vamos va
- 00:08:14a hablar de esto aguanten un segundo
- 00:08:16Entonces el database que lo escribí para
- 00:08:19el duge esperen que lo acomodo
- 00:08:30Dios mío estoy relco bien la database lo
- 00:08:34que hace es generar
- 00:08:38un digamos lo que hace es impactar la
- 00:08:50migration en
- 00:08:52la base de
- 00:08:55datos Y esto es importante porque
- 00:09:01de por si solo la migration no cambia la
- 00:09:03base de datos simplemente genera un set
- 00:09:06Qué es una
- 00:09:09migration Qué es una migration Bueno una
- 00:09:12migration es un
- 00:09:13archivo una
- 00:09:16clase
- 00:09:20autogenerada a través del Comando es ad
- 00:09:24migration que contiene un set de
- 00:09:26instrucciones
- 00:09:41e para cambiar la base de
- 00:09:44datos ahora este ser de instrucciones no
- 00:09:47es algo que nos importa o sea no es algo
- 00:09:48para nosotros es para el entity
- 00:09:50framework es quién va a interpretar ese
- 00:09:52ser de instrucciones entity framework no
- 00:09:55nosotros y cómo lo en qué momento lo va
- 00:09:57a interpretar bueno el set instrucciones
- 00:10:00lo interpreta en la
- 00:10:03database la migration el Otro aspecto de
- 00:10:07cómo sería la definición y Otro aspecto
- 00:10:09es lo
- 00:10:10usa
- 00:10:12el update
- 00:10:19database que es en en verdad no que lo
- 00:10:23ejecuta este Comando lo usa la database
- 00:10:26para impactar los cambios definidos en
- 00:10:28ese set instrucción nuestra base de
- 00:10:30datos lo interesante es y por eso la
- 00:10:33primera vez es un poco digamos
- 00:10:35desconcertante que digamos si es que no
- 00:10:37hay base de datos la crea por lo tanto
- 00:10:40lo que hace es decir bueno se
- 00:10:45fija si la está si no está la crea y
- 00:10:49impacta la migration en nuestra en
- 00:10:53nuestraa de datos recién
- 00:10:55cre hace como esas dos cosas normalmente
- 00:10:59y la creación de B no es relevante
- 00:11:01porque ya está creada normalmente Pero
- 00:11:03pero bueno está bueno saberlo no que
- 00:11:05cuando ustedes necesitan correr un
- 00:11:06comando extra para crear la base de
- 00:11:08datos eh simplemente y Y no y no está no
- 00:11:11es recomendable crear la mano porque
- 00:11:14digamos tiene que ser muy bien hecha
- 00:11:16para que frengo se la reconozca como
- 00:11:18propia lo más normal es que dejar que
- 00:11:20entity frengo la cree sola no la cree
- 00:11:23mano ustedes y corran El Comando porque
- 00:11:25lo más probable es que cree otra aparte
- 00:11:27porque no reconozca esa base de datos
- 00:11:28como como como la que tiene que ser
- 00:11:31e entonces y vamos a atarnos Entonces
- 00:11:35ahora Qué es un snapshot porque lo
- 00:11:36vieron por ahí el snapshot que es otro
- 00:11:38de los archivos que se
- 00:11:39genera snapshot para mí es el archivo
- 00:11:42más Útil para los desarrolladores porque
- 00:11:43la migration no es más que un set de
- 00:11:44instrucciones que interpreta FR que se
- 00:11:48genera en base a a cuando nosotros
- 00:11:50hacemos un cambio en el código y
- 00:11:53queremos que ese código ese cambio en el
- 00:11:55código se vea reflejado en la base de
- 00:11:57datos creamos nosotros una Migra
- 00:11:59corremos El Comando mig para bueno
- 00:12:02reflejar ese cambio que se va hacer en
- 00:12:03la base de datos y después
- 00:12:09corremos perdón se me cortó después
- 00:12:11corremos el database para que se
- 00:12:15impacten esos cambios Pero qué es
- 00:12:17snapshot el snapshot es una captura de
- 00:12:19pantalla no una captura una imagen
- 00:12:26instantánea captura me refiero en
- 00:12:29términos metafóricos No no es una imagen
- 00:12:31pero
- 00:12:35bueno de la base de
- 00:12:40datos
- 00:12:44reflejando la estructura que hoy en día
- 00:12:55tiene es decir que si yo genero un una
- 00:13:00migration lo más probable es que digamos
- 00:13:03cuando yo gener una migration snapshot
- 00:13:05cambia siempre o sea yo cuando hago el
- 00:13:07ad migration se genera una migration con
- 00:13:09el set de instrucciones de las cosas que
- 00:13:10tienen que cambiar y por otro lado como
- 00:13:13nuestra baseos cambió el snapshot cambia
- 00:13:15lo interesante de ver esto es cuando
- 00:13:17ustedes tienen un
- 00:13:25snapshot el snapshot es único y la
- 00:13:28migration
- 00:13:29pueden ser
- 00:13:31varias de hecho normalmente son decenas
- 00:13:34de migration o sea todos los cambios
- 00:13:37todas las migration que han habido o sea
- 00:13:39todos los cambios que han habido en su
- 00:13:41Estructura de datos a lo largo del
- 00:13:42tiempo deting de la aplicación han ido
- 00:13:44generando nueva migration lo interesante
- 00:13:47de esto es que si yo por ejemplo me
- 00:13:49equivoqué con una migration hice un
- 00:13:50cambio que rompió la base de datos yo
- 00:13:52puedo volver al Estado anterior puedo
- 00:13:54decir Che me equivoqué con la tres
- 00:13:56vuelvo a A como estaba la base de datos
- 00:13:59con La migration número dos y nada es
- 00:14:02bastante sencillo hacerlo no lo vamos a
- 00:14:03ver ahora Nosotros ni mucho menos pero
- 00:14:05bueno sepan que FR te da esa posibilidad
- 00:14:07no de arreglar las macanas que uno va
- 00:14:10haciendo vamos a pasarlo a código a esto
- 00:14:12para que no se me mareen y me confundan
- 00:14:15y se pongan mal no se preocupen no es
- 00:14:17algo difícil por lo menos en el nivel de
- 00:14:19complejidad que estamos manejando en
- 00:14:21esta
- 00:14:22aplicación supónganse que yo por ejemplo
- 00:14:24en vez de image path quiero que esto se
- 00:14:27llame
- 00:14:29img
- 00:14:30Paz Esto va a tener a un cambio en
- 00:14:33nuestra base de datos Sí porque yo lo
- 00:14:35que estoy haciendo acá es cambiar el
- 00:14:38nombre de una propiedad cuando yo cambio
- 00:14:40nombre a una propiedad esto tiene en lo
- 00:14:43que hace para mantener la coherencia es
- 00:14:45decir Bueno si esa propiedad obviamente
- 00:14:47es de una entidad que corresponde a una
- 00:14:49tabla en nuestra base de datos yo voy a
- 00:14:52necesitar de hecho vamos a fijarnos
- 00:14:53miren si yo voy a abrir nuestra base de
- 00:14:55datos no entonces acá pongo file open
- 00:14:58database si me busco el archivo por
- 00:15:01folio ipi y me busco el archivo de base
- 00:15:04de datos que tenemos acá si se fijan la
- 00:15:06tabla experiencia tiene una columna que
- 00:15:08es image path si yo cambio el nombre de
- 00:15:11la propiedad de la entidad de image pa A
- 00:15:15imgp lo que debería digamos hacer para
- 00:15:18mantener una coherencia es cambiar
- 00:15:20también la misma propiedad cambiarla en
- 00:15:22la base de datos Entonces cuando Yo
- 00:15:25corro El Comando ad migration en el
- 00:15:27fondo El Comando ad migration No mira la
- 00:15:30base de datos Mira el
- 00:15:33snapshot es decir El Comando ad
- 00:15:37migration
- 00:15:38dice tengo este código de hecho vamos a
- 00:15:41tratar de dibujarlo
- 00:15:47esto el snapshot de nuestra si se fijan
- 00:15:51vamos al snapshot rapidito a mostrar Qué
- 00:15:53es lo que tiene verí con eso se entiende
- 00:15:56eh en snapshot si se fijan Esto no se
- 00:15:59suele mirar mucho no se mareen no se
- 00:16:01preocupen es algo que mire entity
- 00:16:02framework pero quiero que entendamos por
- 00:16:04arriba lo que hay acá si se fijan Acá
- 00:16:06está el nombre de nuestra
- 00:16:09tabla y acá están todas las propiedades
- 00:16:12tiene un ID tiene una descripción tiene
- 00:16:14image path tiene State tiene summary
- 00:16:17tiene title y listo y ya terminó no hay
- 00:16:20mucho más que esto es la tablita que
- 00:16:23tenemos y con sus propiedades es decir
- 00:16:25el tiene toda la estructura de base de
- 00:16:28naase en el momento dado Entonces cuando
- 00:16:31ustedes Ejecutan un cambio en el código
- 00:16:33y corren El Comando
- 00:16:35migration lo que se hace es se mira el
- 00:16:39estado que tiene
- 00:16:43snapshot y si hace falta un cambio
- 00:16:47Entonces se genera una migración con el
- 00:16:51set de
- 00:16:54instrucciones para cambiar la base de
- 00:16:57datos
- 00:17:02y automáticamente a su
- 00:17:06vez esta se cambia se actualiza el
- 00:17:09snapshot
- 00:17:12también a eh digamos el estado después
- 00:17:16de digamos de
- 00:17:18de reflejando la migration que se hizo
- 00:17:21reflejando las instrucciones que eh yo
- 00:17:24voy a a ejecutar pero todavía nos
- 00:17:27impactó cuando y impacto cuando yo hago
- 00:17:30una database Lo que
- 00:17:32sucede es que este cambio como que el
- 00:17:35paso 3 podríamos decir que este es el
- 00:17:38paso
- 00:17:39un y esto sucede todo junto o
- 00:17:44sea esto que está acá sucede todo junto
- 00:17:47o sea se genera una migration y se
- 00:17:48cambia snapshot el paso dos es el
- 00:17:51database yabe impacta en nuestra base de
- 00:17:56datos el cambio Sons pas los dos
- 00:17:59momentos no esto es el ad migration el
- 00:18:02paso un de hecho se lo vamos a poner por
- 00:18:04acá a ver si se lo puse por acá esto
- 00:18:07sería el paso un y el paso
- 00:18:12dos
- 00:18:14Entonces vamos AC si se fijan de hecho
- 00:18:17vamos a ver los cambios deit hay bueno
- 00:18:20no van a ver muy bien porque no se ve
- 00:18:22ahí
- 00:18:24bien si se fijan acá el cambio que yo
- 00:18:27hice fue bueno mover de lugar la se van
- 00:18:32a perder porque como moví de lugar la
- 00:18:34como moví de lugar la la entidad te
- 00:18:37aparece como que es nueva pero bueno
- 00:18:39fíjense que el cambio Acá está que se
- 00:18:41llama en vez de en vez de de image bien
- 00:18:48Esto requiere una mira cuando corremos
- 00:18:50un hacemos un cambio deo que refleja un
- 00:18:53cambio en la base de datos tenemos que
- 00:18:54hacer la Mira eso es una cosa que
- 00:18:56tenemos que hacer a
- 00:18:57mano migration y acá le voy a poner un
- 00:19:00significativo que es change image
- 00:19:07column property vamos a poner
- 00:19:12property experience in experience no se
- 00:19:17preocupen con el largo del nombre no s
- 00:19:20es mejor ser
- 00:19:21representativo entonces acá hacemos la
- 00:19:25migración fíjense que la está ejecutando
- 00:19:27hace un build de aplicación sería lo que
- 00:19:29no bua no no va a correr acá rompió el
- 00:19:32build ahí es lo que hemos tocado que
- 00:19:33generó un error en el código Ah miren yo
- 00:19:37le cambié el nombre pero no le cambié
- 00:19:38las
- 00:19:39referencias qué tonto Ahí
- 00:19:43estamos corremos de
- 00:19:46vuelta í anduvo y fíjense que Se generó
- 00:19:51una nueva migración un nuevo archivo y
- 00:19:53snapshot sigue siendo igual sí es cierto
- 00:19:55que hay un cambio y si se fijan en el
- 00:19:57cambio vamos a mirar porque que está
- 00:19:59bueno Esto de ver el cambio esto es ver
- 00:20:07eh si se fijan en el cambio de
- 00:20:14snapshot
- 00:20:19miren V el cambio de snapshot es
- 00:20:22solamente el cambio de la propiedad se
- 00:20:25cambió Es el cambio y a su vez también
- 00:20:27Se generó una migración Cuál es la
- 00:20:29migración vamos a
- 00:20:30mirarlo vamos a
- 00:20:32sacarlo si no de última siem pueden
- 00:20:35pausar Pero bueno creo no hace falta
- 00:20:37entender el snapshot como tal sino ver
- 00:20:39el cambio nada más y fíjense que si
- 00:20:41vamos a la migration se hacen un un app
- 00:20:44que es levantar la base de datos cambiar
- 00:20:47una columna y y después hacer un down o
- 00:20:51sea impactar ese cambio de la columna
- 00:20:53con el cambio de nombre bueno no hace
- 00:20:54falta meternos en estas complejidades
- 00:20:56pero s básicamente podemos llegar a ver
- 00:20:58que es un renombre una columna de este
- 00:21:00nombre a este nombre
- 00:21:02Sí entonces Bueno de hecho acá está
- 00:21:04image name New name está clarísimo
- 00:21:08Eh Así que bueno está está esto no hace
- 00:21:13falta entenderlo pero es importante
- 00:21:15saber qué sucede Y cómo cómo impactan
- 00:21:18eso sobre todo para ver que las cosas
- 00:21:19estén andando bien y ahora
- 00:21:21eh No nos falta el paso dos que es la
- 00:21:24impacto en base Porque si se fijan yo
- 00:21:27voy a si yo hago un refresh acá
- 00:21:30eh A ver porque a estas cosas eh vamos a
- 00:21:36cuando estamos haciendo cambios enot
- 00:21:38Está bueno por ahí abrirla de vuelta o
- 00:21:40eso porque a veces queda como medio
- 00:21:41bugado si se fijan el image pas llama
- 00:21:44igual no cambio no cambio nada Qué
- 00:21:46tenemos que hacer Tenemos que correr El
- 00:21:48Comando a
- 00:21:51database si yo lo corro este Comando van
- 00:21:54a ver que pasan un montón de cosas y si
- 00:21:56y si lo analizamos con Claridad acá van
- 00:21:59a ver que están impactándose las cambios
- 00:22:01de la migration dentro de la base de
- 00:22:03datos están corriendo sentencias de sql
- 00:22:05Este lenguaje estndar de base de datos
- 00:22:07para poder impactarlo y si se fijan
- 00:22:11ahora vamos a abrir de
- 00:22:14vuelta el programita de base de
- 00:22:24datos vamos a ver que imep ahora se
- 00:22:27llama imep
- 00:22:29bueno por acá esto a ver cómo estamos de
- 00:22:31tiempo estamos bien de tiempo yo lo que
- 00:22:34quiero mostrarles es ahora jugar un poco
- 00:22:38con esto porque la verdad es que bueno
- 00:22:40jugamos un
- 00:22:42poquito pero quiero que sigamos jugando
- 00:22:44un poco más Habíamos hecho un ad
- 00:22:47experience y habíamos hecho nada más que
- 00:22:49una lo que quiero mostrarles otro otro
- 00:22:52Chiche y capaz con eso podemos llegar a
- 00:22:55terminar es el CQ Inspector quiero que
- 00:22:58vean
- 00:22:59a ver si se puede
- 00:23:11ver bueno Estaba buscando la herramienta
- 00:23:14pero es de sql server porque es de la
- 00:23:15base de dat yo no lo haba podo ver acá
- 00:23:17demasiado pero si vamos a poder ver
- 00:23:19desde acá un poco en esta consolita se
- 00:23:21ven todas las cosas que se van
- 00:23:23sucediendo en nuestra aplicación y Algo
- 00:23:26vamos a poder analizar desde esta
- 00:23:27consolita
- 00:23:29vamos a tratar de jugar un poco con la
- 00:23:30Api Entonces vamos a dejar esta
- 00:23:32consolita acá esperemos que se pueda ver
- 00:23:35algo y yo vamos a listar los elementos
- 00:23:39que hay en la base de
- 00:23:44datos Y fíjense si definitivamente se ve
- 00:23:47algo fíjense que acá se corrió este
- 00:23:49Comando que es Select y busca eh Bueno
- 00:23:54es un comando sql que busca todos los
- 00:23:55campos de la columna de experiencia y
- 00:23:58trae el datato acá entonces bueno acá se
- 00:24:01puede ir viendo todos los comandos que
- 00:24:02se van ejecutando sobre nuestra base de
- 00:24:04datos y por eso hay elementos acá sí
- 00:24:07entonces bueno en fin e se pueden hacer
- 00:24:10muchas cosas con esto e la clase que
- 00:24:12viene esto ya es cortito este video pero
- 00:24:14quería solamente centrarme en esto la
- 00:24:16clase que viene ya vamos a
- 00:24:19a yo Bueno vamos a a pulir todo esto
- 00:24:23arreglar todos los para Que corran con
- 00:24:25una base de datos y después ya empezamos
- 00:24:28con autenticación Pero bueno yo ahora
- 00:24:43e Bueno vamos a aprovechar para también
- 00:24:46antes de terminar eh hacer digamos
- 00:24:49arreglar un poco los que te habíamos
- 00:24:51comentado simplemente por una cuestión
- 00:24:53de de de que quedan andando con la
- 00:24:55estructura de base de datos si se
- 00:24:56acuerdan yo simplemente lo que necesito
- 00:24:59hacer es Llamar a el expi repository que
- 00:25:01es el que tiene que darnos todos los
- 00:25:03métodos pero tenemos que ir creando
- 00:25:06métodos para poder por ejemplo en este
- 00:25:07caso Buscar por no por título Entonces
- 00:25:09vamos al SP repository y vamos a hacer
- 00:25:12nu nuevos nuevos métodos vamos acá a
- 00:25:15hacer un método rapidito public list
- 00:25:22experience que lo que va a hacer es get
- 00:25:26pero ya no por cualquier cosa sino por
- 00:25:28un nombre que era no lo que teníamos que
- 00:25:32est en el controler era un get by title
- 00:25:36entonces acá en Perdón en el repository
- 00:25:39vamos a hacer tit vamos
- 00:25:42Lamar y lo que va a retornar es esto
- 00:25:47return
- 00:25:49context experience y acá si hacemos
- 00:25:52un y aplicamos link aplicamos B
- 00:25:56búsquedas sobre es la el experience que
- 00:26:00es el que tiene todos los datos que
- 00:26:01nosotros
- 00:26:02necesitamos acá tal que e title
- 00:26:06sea igual habíamos hecho con igual
- 00:26:11no Ah habíamos hecho
- 00:26:14contains de hecho podríamos
- 00:26:16tranquilamente copiarnos
- 00:26:21este de hecho vamos a copiarnos para
- 00:26:23asegurarnos que demás no cambio nada Es
- 00:26:26simplemente
- 00:26:28eh nos
- 00:26:30copiamos ya
- 00:26:34está era
- 00:26:42tit y Acá hay que poner un to list
- 00:26:46Porque necesitamos una lista ya está
- 00:26:49tenemos nuestro nuestro método que busca
- 00:26:52por título ahora contra la base de datos
- 00:26:54y no contra esa lista estática que
- 00:26:56habíamos hecho antes entonces entonces
- 00:26:58acá simplemente lo que tenemos que hacer
- 00:26:59es en vez de hacer esta
- 00:27:02invocación lo que tenemos que hacer es
- 00:27:07punto y le pasamos el fíjense que
- 00:27:10tenemos dos sobrecargas una porque tiene
- 00:27:12un parámetro y otra sin parámetro
- 00:27:14Entonces ahora le pasamos title for
- 00:27:17Search pasamos el parámetro Y eso va a
- 00:27:19invocar a la sobrecarga del método que
- 00:27:22es este de acá que tiene el parámetro
- 00:27:24Acuérdense que los métodos se distinguen
- 00:27:26también por los parámetros
- 00:27:28bueno Tenemos uno vamos rapidito los
- 00:27:31otros así no nos aburrimos teníamos este
- 00:27:34de
- 00:27:35acá
- 00:27:37eh acá tenemos que cambiar el nombre
- 00:27:40Porque habíamos
- 00:27:45cambiado la ID no nos preocupa más
- 00:27:48porque
- 00:27:49nosotros no lo modificamos no le creamos
- 00:27:52más el ID Así que fíjense eso También
- 00:27:54acá habíamos hecho todo un maneje para
- 00:27:56darle el ID del de la experiencia a la
- 00:27:59hora de actualizar y demás ahora
- 00:28:01nosotros eso no nos hace falta entonces
- 00:28:06simplemente lo que vamos a hacer es si
- 00:28:08es cierto Buscar la experiencia por
- 00:28:11ID pero nada
- 00:28:14más y cómo hacemos para buscar la
- 00:28:16experiencia por Bueno lo que se me
- 00:28:18ocurre ahora rapidito Aunque no es lo
- 00:28:19mejor es llamar al método experi
- 00:28:22repository.get
- 00:28:25me traigo todo
- 00:28:29y le aplico un we Esto no es lo mejor
- 00:28:32pero bueno ya fue lo lógico sería que
- 00:28:35hagamos una sobrecarga y la vamos a
- 00:28:36hacer rapidito para hacer las cosas bien
- 00:28:38Vamos a hacer una sobrecarga de get by
- 00:28:42ID y lo único que vamos a hacer acá es
- 00:28:45que en este método vamos a retornar
- 00:29:14acá no es un Perdón
- 00:29:16esto se retorno al primer
- 00:29:20elemento que encuentre y acá si no
- 00:29:23encuentra nada va retornar nulo si esto
- 00:29:26acuérdense si con lo que estuy haciendo
- 00:29:29con esta línea de We First ofa estos de
- 00:29:31con mirense cursos de CP ese curso que
- 00:29:35yo les puse orient objetos y un curso
- 00:29:38link son cosas sencillas pero para cóm
- 00:29:40operar sobre listas pero que escapan un
- 00:29:42poco del curso este que le hablar De Api
- 00:29:44esto es operar en listas que bueno es
- 00:29:47digamos útil y se usa vida cotidiana
- 00:29:50Pero no es lo que queríamos hablar en
- 00:29:52este curso Así que eso igual es sencillo
- 00:29:55chicos mírense un par de videos y lo van
- 00:29:56a entender rápido
- 00:29:58pero son propios entonces lo que
- 00:30:01nosotros acá vamos a hacer es Llamar a
- 00:30:03nosotros necesitamos lo que necesitamos
- 00:30:06era más que la ID acá era bueno este
- 00:30:09video este de acá yo se lo haby acar
- 00:30:11para la clase que viene de hecho se lo
- 00:30:13dejo de tarea agarren y acomoden esto
- 00:30:15acomoden este para la estructura de
- 00:30:17nuestra base de datos acdel ustedes yo
- 00:30:19no lo voy a subir a esto al comando a
- 00:30:21est esta modificación de hecho la voy a
- 00:30:24volver para atrás Para dejarle tal cu
- 00:30:26estaba antes
- 00:30:31listo Entonces esta modificación yo no
- 00:30:34la voy a no la voy a subir así se la la
- 00:30:37arreglan a ustedes
- 00:30:40e y Bueno les dejo esos estos dos de acá
- 00:30:44para que lo arreglen ustedes la clase
- 00:30:45que lo voy a arreglar lo voy a dejar yo
- 00:30:47arregladito y ustedes pueden comprar
- 00:30:49contra lo que hicieran ustedes pero yo
- 00:30:51ahora lo que voy a hacer simplemente es
- 00:30:53la clase que se lo muestro arreglado si
- 00:30:55no perdemos tiempo pero bueno
- 00:30:57básicamente es adaptar al manejo de El
- 00:30:59repositorio Real hoy en día no Bueno e
- 00:31:03los dejo acá porque si no se hace largo
- 00:31:05el video y no era la idea eh nos estamos
- 00:31:07viendo la clase que viene acuérdense de
- 00:31:09hacer de tarea acomodar el código de
- 00:31:11estas clases comentadas que ustedes les
- 00:31:12van a tener comentadas ahí para poder
- 00:31:14interactuar con nuestro repositorio que
- 00:31:16tenemos ahora andando y vivando con base
- 00:31:19de datos nos vemos y acuérdense de de
- 00:31:22hacer la migración en su código y probar
- 00:31:24todo Sí hasta la clase que viene
- migración
- ORM
- base de datos
- repositorio
- snapshot
- programación
- estructura de código
- controlador
- instrucciones SQL
- actualización de base de datos