Crea un Base de Datos MySQL y evita los hackers (buenas prácticas)

แชร์
ฝัง
  • เผยแพร่เมื่อ 23 ส.ค. 2024

ความคิดเห็น • 112

  • @jhoniergutierrez2351
    @jhoniergutierrez2351 หลายเดือนก่อน +5

    Que afortunados somos de tenerte en TH-cam, debemos recompensarte por compartir tu conocimiento, buen amigo y colega.

  • @rubendariohernandezcenteno5259
    @rubendariohernandezcenteno5259 11 หลายเดือนก่อน +19

    Midu, este curso tiene mucho nivel, hay muy poco contenido de excelente calidad y gratis como este, la verdad está quedando perfecto.

  • @offGamingChannel
    @offGamingChannel 11 หลายเดือนก่อน +24

    Hablando de buenas prácticas, comento un par de detalles (avanzados, quizás) a considerar en el uso de un UUID tal como se presenta aquí:
    1. La función UUID() no es determinante, por lo que en un entorno con réplica, en las instancias slave, puede devolver valores diferentes al master dependiendo de la configuración de MySQL; en particular binlog_format.
    2. En una tabla InnoDB, la PRIMARY KEY es su índice clusterizado, lo que determina el órden físico de los datos. Como en este caso, el valor de id no es secuencial, los registros se ingresarán "en medio de la tabla" requiriendo mover registros (page splitting) para hacer lugar y mantener así el órden. Esto implica un impacto en rendimiento al insertar y fragmentación de los datos afectando también la lectura. Se podría jugar con el fill factor para minimizar el impacto.

    • @offGamingChannel
      @offGamingChannel 11 หลายเดือนก่อน +8

      3. La calidad de datos es mejor tratarla al momento de insertar. Por ejemplo, si voy a necesitar luego comparar un string en minúsculas, es mejor ya almacenarlo en minúsculas; luego en todo caso puedo convertirlo a camel case al mostrarlo. En este caso, se utilizar la función LOWER() sobre el campo "name" para buscar registros. Tener en cuenta que el uso de una función sobre un campo inhibe el uso de índices (en versiones anteriores a MySQL 8); es decir, por más que creemos un índice por "name" no será tomando en cuenta. Los indices funcionales (los que se crean a partir del resultado de una función) fueron agregados en MySQL 8.

    • @offGamingChannel
      @offGamingChannel 11 หลายเดือนก่อน +8

      Muy buen video! Espero mi aporte como DBA sea de utilidad. =)

    • @futudev
      @futudev 4 หลายเดือนก่อน

      Excelente aporte!

  • @faustojosevincesmendoza6854
    @faustojosevincesmendoza6854 11 หลายเดือนก่อน +19

    Lo bueno de mysql2 es que crea una PISCINA DE CONEXIONES, asi se reciclan las conexiones y no por cada petición estas conectándote y desconectándote cuando termine, es algo que usa mysql el antiguo.

  • @diegonaranjo1874
    @diegonaranjo1874 2 หลายเดือนก่อน +2

    uy parce, enserio que midu me deja muy sorprendido y loco con las cosas que hace, yo creo que esto no se coge con experiencia y siendo constante en programacion, siento que este nivel de sabiduria y logica con la que lleva todo un paso mas alla es de alguien con talento, midu es el messi de la programacion, sos el mejor y mi ejemplo a seguir bro

  • @clayman1325
    @clayman1325 11 หลายเดือนก่อน +10

    En horabuena Midu Gracias por subir este video, Esperado hace 1 mes :D

    • @midulive
      @midulive  11 หลายเดือนก่อน +5

      😊 a ti

    • @clayman1325
      @clayman1325 11 หลายเดือนก่อน

      @@midulive strategy pattern y factory pattern es un uso o un ejemplo de Dependency injection, se ve muy similar. Excelente video que esta buenisimo que nosea solo hello world :D

  • @bettinimarcelo
    @bettinimarcelo 10 หลายเดือนก่อน +3

    Siempre subiendo buen contenido gratuito, muy bien diez, felicitado! Un aporte: SQL es case insensitive por default, no hace falta convertir texto a mayúsculas, minúsculas o lo que sea.

  • @je813
    @je813 11 หลายเดือนก่อน +6

    Buenas midu!! Estoy esperando con muchas ganas la parte del testeo. Me encantaría que pudieras explicar toda la parte de los mocks de las dependencias y la base de datos. Un saludo y gracias por el cursazo!!

  • @amneriscalle
    @amneriscalle 5 หลายเดือนก่อน

    Gracias x estos cursos, muy buenas las explicaciones, en especial cuando mostrás de dónde salen las herramientas que usamos. En la mayoría de los cursos te dan la herramienta directamente y uno las aprende y las usa como robot, sin saber por qué ni de dónde. Gracias de nuevo, un saludo desde Argentina.

  • @fernandoangelrodriguezgonz1393
    @fernandoangelrodriguezgonz1393 11 หลายเดือนก่อน +1

    Siiii 🥳🥳🥳. Rato esperando por la continuacion del curso de Node, Midu. No lo pude ver en Twich pero ahora lo hago por aki y depues me paso por Twich para ver la directa. Mil gracias por estos excelentes cursos que es de lo mejor que se puede encontrar tanto en español como ingles. Eres el mejor Midu ❤❤❤

  • @oOserg1Oo
    @oOserg1Oo 10 หลายเดือนก่อน +2

    estuve buscando por un tiempo sobre injeccion de dependicias lo entendi pero hacian uso de algun otra libreria, gracias por tu tiempo por que acabo de darme cuenta que no se necesita de tantas librerias para poder lograr algunas cosas.

    • @midulive
      @midulive  10 หลายเดือนก่อน +1

      Exacto, no se necesitan librerías para conseguirlo. Aunque pueden ayudar, el concepto se puede hacer sin nada!

  • @bettinimarcelo
    @bettinimarcelo 10 หลายเดือนก่อน +8

    para el campo rate les recomiendo usar una restricción CHECK para evitar que sea menor a 0 y mayor a 10

  • @juansebastian2721
    @juansebastian2721 หลายเดือนก่อน

    Magnifico trabajo Midu, he aprendido un montón, muchas gracias por tomarte el tiempo para compartir tus conocimientos. Un saludo Capo.

  • @mafi978
    @mafi978 4 หลายเดือนก่อน +1

    Wow midu la verdad es que con estos cursos estoy aprendiendo más conceptos de programación, patrones, arquitecturas y buenas prácticas, que con asignaturas enteras de la carrera y de forma más dinámica y práctica, eso sí, no creo que sea un curso de inicialización, creo que tienes que tener ya unas bases detrás para poder seguir el ritmo.

  • @karmax068
    @karmax068 11 หลายเดือนก่อน

    Muchas gracias por este video, llevava esperandolo muchisimo, pero tambien es bueno tomarse descansos, espero y hayas disfrutado tus vacas❤

  • @lautarodecima3350
    @lautarodecima3350 11 หลายเดือนก่อน +2

    Excelente cursos, sos el único que explica estas cosas a detalle en videos espero que sigas así. En este curso vas a incluir la sección de hacer test con vitest o jest??

  • @lucaskriger5666
    @lucaskriger5666 10 หลายเดือนก่อน +6

    Hola, aqui un error que me costo 4 días... Estoy utilizando DBeaver en Windows, conectando con una base de datos MY SQL server 8.0. Por alguna razón que desconozco en lugar de utilizar UUID_TO_BIN utiliza (UNHEX(REPLACE(UUID(), '-', '')) tambien en el SELECT cambialo por: SELECT HEX(id) AS id, title, year, director, duration, poster, rate FROM movie;
    no sé porque utiliza una función de maríaDB si alguien me puede ayudar a entenderlo... Utilizando HEX(id) se generó perfectamente la base de datos.

    • @zhare9811
      @zhare9811 5 หลายเดือนก่อน +1

      yo tambien tuve el mismo error pero según chatgpt es por tema de versiones de mysql seguro midu estaba trabajando con una versión anterior

    • @CarlosFelipeRiveraG-tl2yf
      @CarlosFelipeRiveraG-tl2yf 3 หลายเดือนก่อน

      @@zhare9811 imposible, yo con la última versión y me funciona bien, de pronto deben cambiar el motor a innoDB

    • @alfonsspj
      @alfonsspj 15 วันที่ผ่านมา +2

      para quienes quieran ver el ID en este formato "550e8400-e29b-41d4-a716-446655440000" (UUID)
      en el SELECT que mostro el compañero arriba cambian
      HEX(id) AS id
      por:
      CONCAT_WS('-',
      SUBSTRING(HEX(id), 1, 8),
      SUBSTRING(HEX(id), 9, 4),
      SUBSTRING(HEX(id), 13, 4),
      SUBSTRING(HEX(id), 17, 4),
      SUBSTRING(HEX(id), 21)
      ) AS id

  • @CharlyAlemania
    @CharlyAlemania 9 หลายเดือนก่อน +1

    1:13:59 Jaja qué genial hostear la Base de Datos de Planet Scale en Frankfurt, yo vivo acá y frente a mi casa hay un data center enorme, quizás esté ahí 🙈

  • @misterl8129
    @misterl8129 29 วันที่ผ่านมา

    1:10:00
    @midu consulta, genial eso de extraer todo y modularizar y encapsular todo de esa manera, pero, así debiese hacerse si es que comenzaste a trabajar con clases?
    Me explico, asumiría que si vas a trabajar con programacion funcional, que todo sea en base a funciones, si es por clases, que todo siga esa estructura y finalmente claro, envolviste parte de la logica en una funcion, hay un mix de ambos, eso se suele ver? Creería que no :o
    Gracias

  • @Retales2022
    @Retales2022 11 หลายเดือนก่อน

    Me viene de lujo este video ahora la verdad 🙌

  • @AndrePonc3
    @AndrePonc3 10 หลายเดือนก่อน +1

    Muy genial midu! :) Gracias por el videazo

    • @midulive
      @midulive  10 หลายเดือนก่อน

      Muchas gracias!

  • @JoGoku
    @JoGoku 9 วันที่ผ่านมา

    Seria interesante que enlazaras las clases anteriores a los videos, para seguir mejor el orden de las clases

  • @SonGoku-pc7jl
    @SonGoku-pc7jl 10 หลายเดือนก่อน

    muchisimas gracias, increible el curso y el patrón de inyeccion de dependencias muy divertido e interesante, infinitas gracias!!!

  • @Mik3aglin
    @Mik3aglin หลายเดือนก่อน +1

    Buenas gente.
    El tema de inyecciñón de dependencias como lo explica aquí midu.
    Si teneis un servicio que depende de otro, tendrías que pasarle entonces todo a ese servicio?
    Osea el servicio B usa el Servicio A
    El servicio A le tienes que inyectar el modelo A.
    Entocnes al servicio B le vas a tener que inyectar el Modelo B y el Servicio A pero para inyectar el servicio A has tenido que inyectar a su router el modelo A y el modelo B?
    ES un poco jaleo hay alguna otra forma de hacerlo? o se me está pasando algo. O ya habría que usar algun paquete para que te lo gestione rollo spring y puedas inyectarlo de manera más facil?

  • @4lt4r10
    @4lt4r10 11 หลายเดือนก่อน

    moviendo las consultas desde un SP, también evita las inyecciones!

  • @sobrehombre9338
    @sobrehombre9338 หลายเดือนก่อน

    Gracias Midu!!

  • @blurdesigner
    @blurdesigner 6 หลายเดือนก่อน +1

    Hola Midu, no puedo usar la version free para subir la base de datos de mysql, me dice que para mi región no está disponible. Alguna alternativa?

  • @miguecast
    @miguecast 11 หลายเดือนก่อน +3

    Básicamente lo que ha hecho es encapsular y pasar el modelo como parámetro. Creía que para hacer inyección de dependencias necesitabas crear un contenedor con Awilix o similares.

    • @plasmodiun1
      @plasmodiun1 11 หลายเดือนก่อน +1

      Tal cual aveces eso de decirlo de otra forma confunde mas cuando no conoces sobre el tema

  • @RemusIPRUNA
    @RemusIPRUNA 10 หลายเดือนก่อน +1

    Hola, soy nuevo en el canale y respetosamente te pregunto, donde estan los cursos que lo estas mencionando en "2:14 Repaso de la clase 4" (y porque no, las clases de 1 al 3). Me interesa entender la mecanica MVC. Creo que eres el unico que lo ha explica a mi entendimiento despues de mirar decenas sino centenas de videos en internet. Muchas gracias!
    EDIT: Lo he encontrado! ajaja

    • @watercubz
      @watercubz 8 หลายเดือนก่อน

      El curso es por parte tienes q verlo desde el 1 al 6

  • @TSpods
    @TSpods 11 หลายเดือนก่อน

    muchas gracias por subir estos tutoriales me ayudan muchísimo

  • @Jefferson-SDET
    @Jefferson-SDET 2 หลายเดือนก่อน

    No desarollo en Javascript, pero los conceptos que se tratan igualmente son muy buenos

  • @ramirezhernandezrobertocar8591
    @ramirezhernandezrobertocar8591 11 หลายเดือนก่อน +1

    Más de Node con MySQL 🙏🙏🙏

  • @luizarnoldchavezburgos3638
    @luizarnoldchavezburgos3638 11 หลายเดือนก่อน +1

    hola midu. Gracias por compartir tu contenido, ahora faltaría ir probando bun con todo este tipo de arquitectura e ir contribuyendo para solucionar los bugs. Ya que creo que bun es el futuro y nodeJS no se va a poner las pilas

    • @santiagowu5365
      @santiagowu5365 11 หลายเดือนก่อน

      Ya hay integración de Elysia y Prisma para hacer backend con bun.

  • @jacarrascom
    @jacarrascom 6 หลายเดือนก่อน +1

    Midu, lograste pasar el curso a typescript? En algún momento comentaste de la arquitectura recomendada por expertos, donde tener esa info. Gracias por compartir.

    • @felipe4181
      @felipe4181 2 หลายเดือนก่อน

      Quedé con la misma duda

  • @droid-jr9940
    @droid-jr9940 11 หลายเดือนก่อน

    ando Preparado !!!!! miduLive!!!

  • @user-jf4mi8to5s
    @user-jf4mi8to5s 9 หลายเดือนก่อน +2

    Una pregunta sobre la inyección de dependencias... a ver si alguien en los comentarios me puede arrojar luz :D En el ejemplo que ha hecho, al crear la app le pasa el modelo "movie" en el caso de una aplicación con 30 o 40 modelos, por ejemplo... ¿no sería un rollo y un poco chungo tener que pasar todos los modelos? ¿Cuál sería la forma óptima de hacerlo en ese caso?

    • @user-jf4mi8to5s
      @user-jf4mi8to5s 9 หลายเดือนก่อน

      nadie? :(

    • @ke1n14
      @ke1n14 8 หลายเดือนก่อน

      Es que para aplicaciones mas grandes ya se empieza a dividir la aplicación en microservicios por lo que no tendrías una aplicación para todo el negocio sino para ciertas funcionalidades especificas de él y ahora respondiendo a tu pregunta si tuvieras 20 o 30 modelos lo mas probable es que la aplicación pueda ser dividida en microservicios donde cada una de ellas cumpla un objetivo concreto. Esto se hace así para poder escalar la infraestructura de manera mas eficaz.

    • @ke1n14
      @ke1n14 8 หลายเดือนก่อน

      De igual forma si tuvieras 20 o 30 modelos seria mucho mejor tenerlos usando mvc que sin una arquitectura definida ya que te permite tener separadas las funcionalidades, además de igual forma es difícil que los 20 y 30 modelos sean de funcionalidades que no tengan relación entre si por lo que podrias ir agrupando en carpetas las que abarcan cierta área de tu aplicación y e ir importando las areas no mas y dentro de cada área se vayan importando los modelos que se desprenden de ellas.

  • @dagcomunica5921
    @dagcomunica5921 10 หลายเดือนก่อน

    Gracias por tan magnifico aporte al conocimiento. Gran video

  • @fprz14
    @fprz14 7 หลายเดือนก่อน

    Muy educativo, gracias!

  • @DiatonicoWeb
    @DiatonicoWeb 11 หลายเดือนก่อน +1

    Para db en mysql yo uso en mac sequelpro, es liviano y para lo básico va muy bien

  • @danielbenavides1907
    @danielbenavides1907 7 หลายเดือนก่อน +2

    Hola a todos, durante la ejecucion de la bd en mysql me ha dado este error
    Error Code: 1901. Function or expression '`UUID_TO_BIN`()' cannot be used in the DEFAULT clause of `id`
    si alguien le ha sucedido lo mismo, me podria ayudar?

    • @samuelaponte2687
      @samuelaponte2687 5 หลายเดือนก่อน +1

      A mi también me pasa lo mismo :/, lo solucionaste?

    • @danielbenavides1907
      @danielbenavides1907 5 หลายเดือนก่อน +1

      @aponte2687 hola, dentro de la base de datos en la tabla de movies puse esto id varchar(36) primary key default(UUID())
      asi fue como lo solucione!

    • @cesarcoloradocaceres842
      @cesarcoloradocaceres842 2 หลายเดือนก่อน +1

      Es por la versión del MySql,
      para crear el UUID usé esto:
      (UNHEX(REPLACE(UUID(), '-', '')))
      y para recuperarlo:
      CONCAT_WS('-',
      SUBSTR(HEX(id), 1, 8),
      SUBSTR(HEX(id), 9, 4),
      SUBSTR(HEX(id), 13, 4),
      SUBSTR(HEX(id), 17, 4),
      SUBSTR(HEX(id), 21)
      ) AS uuid
      Espero sirva, saludos!

  • @bryanalexandermoscolbravo4464
    @bryanalexandermoscolbravo4464 27 วันที่ผ่านมา

    Hola Midu, quisiera saber que si una buena practica es usar el los nombre de las columnas los snake_case en minúscula

  • @juanpasten6077
    @juanpasten6077 3 หลายเดือนก่อน

    Gracias Midu!

  • @JCMVBlogs
    @JCMVBlogs 11 หลายเดือนก่อน

    Este hombre me da la vida !

  • @jacarrascom
    @jacarrascom 9 หลายเดือนก่อน

    muchas gracias por los videos del curso, son geniales. Que hacer si necesito conectarme con mas de una BD?

  • @10tronic
    @10tronic 6 หลายเดือนก่อน +4

    Como tecleas tan rápido? Practicas en algún lado? Se que usas Copilot sin embargo cuando lo haces tu mismo lo haces a todas hostias. :V

  • @Yayobyte
    @Yayobyte 3 หลายเดือนก่อน +1

    gracias por el curso papa. Plannet scale ya no tiene free plans

  • @santiagowu5365
    @santiagowu5365 11 หลายเดือนก่อน +1

    Ahora estoy probando Elysia y Prisma con MySQL para usar bun y es muy cómodo. Para cuando curso de bun midu?

    • @gerrcassytb
      @gerrcassytb 11 หลายเดือนก่อน

      Es curioso, veo en la web de bun que dicen ser "SQL-first"... entiendo que va un poco contra el uso de ORM.. ¿Qué opinan?.. Esto dice en su web:
      "Bun's goal is to help you write SQL, not to hide it behind awkward constructs."

  • @Smileeee_23
    @Smileeee_23 10 หลายเดือนก่อน

    Muchas gracias midu.

  • @h3ctor1991
    @h3ctor1991 3 หลายเดือนก่อน

    ¿Tienes un ejemplo o video igual que con posgres?

  • @DAVIDIL81
    @DAVIDIL81 10 หลายเดือนก่อน +1

    no entiendo para qué sirve o si quiera si es necesario XAMPP o WAMPP o levantar un servidor local...
    perdona mi ignorancia... pero estoy hecho un lío con esto

    • @cesarcoloradocaceres842
      @cesarcoloradocaceres842 2 หลายเดือนก่อน

      XAMPP son servidores locales para que funcione tu MySql Workbrench

  • @leonardoramirez8226
    @leonardoramirez8226 11 หลายเดือนก่อน

    La mejor manera de evitar sql injection , sería tener stored procedures en lugar de los dmls directos

  • @diegounanue
    @diegounanue 10 หลายเดือนก่อน

    Cuando sigue este curso no tenia una pagina con el temario y certificado?

  • @FireCrauter
    @FireCrauter 11 หลายเดือนก่อน

    23:00 con ChatGPT o una IA se puede agregar mas movie

  • @plojiarendio6278
    @plojiarendio6278 11 หลายเดือนก่อน

    Hola Midu, la plataforma para desplegar ya no acepta constraints por que busca implementar non-blocking schema, hay alguna otra plataforma o hay una forma de solucionarlo?

  • @Jorge-lg8mx
    @Jorge-lg8mx หลายเดือนก่อน +1

    Adiós al plan "hobby" de Planet Scale :(

  • @nicolasramos8394
    @nicolasramos8394 3 หลายเดือนก่อน +1

    Donde se hizo lo de MongoDB? en la clase anterior ya estaba hecho

    • @felipe4181
      @felipe4181 2 หลายเดือนก่อน

      @midulive llevamos 9 meses esperando, ese bebe no llego 😭

  • @Gulliver626
    @Gulliver626 10 หลายเดือนก่อน

    Hola, que pasa si yo estoy usando sequalize? que puedo hacer? o dejo de usarlo?

  • @ricardovallejo9471
    @ricardovallejo9471 11 หลายเดือนก่อน

    Grande midu

  • @pegaenespannol
    @pegaenespannol 2 หลายเดือนก่อน +2

    Planet Scale removió la capa gratuita

    • @felipe4181
      @felipe4181 2 หลายเดือนก่อน

      si, que falla!

  • @JohanChk
    @JohanChk 11 หลายเดือนก่อน

    seguirás haciendo el curso de node? :'|

  • @CarlosFelipeRiveraG-tl2yf
    @CarlosFelipeRiveraG-tl2yf 3 หลายเดือนก่อน

    planetscale ya no ofrece servicios free?

  • @jlonso1840
    @jlonso1840 8 หลายเดือนก่อน

    En "herramientas a usar" docker cuenta?

  • @nilocastilloumeres2437
    @nilocastilloumeres2437 11 หลายเดือนก่อน

    No se si pueda enviarme el link de las clases hasta el 4to para poder verlo

  • @uncalvopelabola
    @uncalvopelabola หลายเดือนก่อน

    alguien me dice donde explico lo de la clase 4?

  • @JohanChk
    @JohanChk 11 หลายเดือนก่อน

    midu podrías porfavor adjuntar el script de creación de la db, no lo veo en el repositorio

  • @ThePerros14
    @ThePerros14 8 หลายเดือนก่อน

    Han usado supabase?

  • @diego.coder26
    @diego.coder26 11 หลายเดือนก่อน

    Algún video sobre prisma? :0

  • @aerleylopez
    @aerleylopez 11 หลายเดือนก่อน

    Alguien sabe si planetscale es totalmente de paga por que trato de usar la versión gratuita y siempre me pide una targeta de crédito:(

  • @diegonaranjo1874
    @diegonaranjo1874 2 หลายเดือนก่อน

    alguien sabe una buena alternativa para windows de dbngin?

  • @user-yg3oc3rt1x
    @user-yg3oc3rt1x หลายเดือนก่อน

    fl0 está caida verdad? O soy el unico que no le deja ingresar?

  • @jorgemason8030
    @jorgemason8030 11 หลายเดือนก่อน

    parece que la version uuid de mysql no es version 4

  • @davosalaz8606
    @davosalaz8606 20 วันที่ผ่านมา

    Es mejor la programación pura y Open source ... En cuanto tenga el tiempo aportaré la mejor identacion en codigo

  • @jennifferorjuela947
    @jennifferorjuela947 2 หลายเดือนก่อน

    Lastima que todos los servicios que en ese tiempo estaban free, ya no lo estan! :(

  • @ragnardanneskjold1084
    @ragnardanneskjold1084 11 หลายเดือนก่อน

    y el link de github??

  • @JohanChk
    @JohanChk 11 หลายเดือนก่อน

    UNSIGNED para tipos decimales esta deprecado

  • @programacion3694
    @programacion3694 2 หลายเดือนก่อน

    owo

  • @stivenreina2267
    @stivenreina2267 10 หลายเดือนก่อน

    20:44

  • @benjaminaldaya7235
    @benjaminaldaya7235 11 หลายเดือนก่อน +1

    a estudiar!!!

  • @UltisaerRevternae-pl1rh
    @UltisaerRevternae-pl1rh 3 หลายเดือนก่อน

    38:56 Reto solucionado , filtra por genero y por letra , si quiero todos los géneros que contentan la i se le tiene "Action, Crime, Sci-Fi"
    Tiene la validación de un genero existe o no y luego si trae toda la informacion
    Ademas lo acompañe este reto con el anterior que era traer paginación y para ello con limit y offset se hace sencillo y en la respuesta mande mas información para que el usuario sepa en que pagina esta cuanta información posee esa pagina, la cantidad total de elementos existentes y asi
    static async getAll({ genre, page = 1, size = 3 }) {
    const offset = size * (page - 1);
    let genreCondition = "%%";
    if (genre) {
    const [genreExists] = await connection.query(
    `SELECT EXISTS(SELECT 1 FROM genres WHERE name LIKE ?) AS isExist;`, [`%${genre}%`]
    );
    if (!genreExists[0].isExist) {
    return { message : `Genre ${genre} not found`}
    }
    genreCondition = `%${genre}%`
    }
    const [totalMovies] = await connection.query(
    `SELECT COUNT(DISTINCT m.id) AS total FROM movies AS m;`
    )
    const [totalMoviesByGenre] = await connection.query(
    `SELECT COUNT(DISTINCT m.id) AS total
    FROM movies AS m
    INNER JOIN movies_genres AS mg ON m.id = mg.movie_id
    INNER JOIN genres AS g ON g.id = mg.genre_id
    WHERE g.name LIKE ?;`,
    [genreCondition]
    );
    const total = totalMovies[0].total;
    const totalByGenre = totalMoviesByGenre[0].total;
    const totalPagesByGenre = Math.ceil(totalByGenre / size);

    const [movies] = await connection.query(
    `SELECT
    m.id,
    m.title,
    m.year,
    m.director,
    m.duration,
    m.poster,
    GROUP_CONCAT(g.name ORDER BY g.name) as genre,
    m.rate
    FROM movies as m
    INNER JOIN movies_genres AS mg ON m.id = mg.movie_id
    INNER JOIN genres AS g ON g.id = mg.genre_id
    GROUP BY id
    HAVING genre LIKE ?
    LIMIT ?
    OFFSET ?
    ;`,
    [genreCondition , size, offset]
    );
    return {
    page,
    size,
    total_data_by_genre: totalByGenre,
    total_pages_by_genre: totalPagesByGenre,
    total_data_in_page: movies.length,
    total_entries: total,
    data: movies
    }
    }

  • @ThePenitentOneArg
    @ThePenitentOneArg 11 หลายเดือนก่อน +2

    31:52 Midu en modo Milei

  • @MarianitoRayser
    @MarianitoRayser 11 หลายเดือนก่อน +1

    Pero de este modo, que tan escalable seria el proyecto???, porejemplo si quiero agregar comentarios en las movies.. o likes... no se complicaria?? Abrazo midu !! gracias por toda esta data..