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