Patrón de diseño Specification: Superpoderes para tus repositorios de entidades y agregados

Поделиться
HTML-код
  • Опубликовано: 6 сен 2024

Комментарии • 29

  • @joelcollcosta
    @joelcollcosta Год назад +3

    Muy interesante el problema con el offset y la solución con el cursor, nunca me lo había planteado, si nunca me encuentro con este problema ya se por donde tirar, jejejeje. Gracias!!! 🍻🍻🫶🏻

    • @javi68yt2
      @javi68yt2 Год назад

      12:33 ¿como se aplica el "starting with" cuando las claves son UUID?
      En Oracle se podria usar el RowId pero en otro motor que no lo tenga...

  • @GODBABYBEATS
    @GODBABYBEATS Год назад +3

    Activo desde RD 🇩🇴

  • @unknow-re8ly
    @unknow-re8ly 5 месяцев назад

    alguna vez tuve este problema usando el patron dao, pero la solucion es bastante simple:
    public interface DataAccess {
    void insert(T o);
    void delete(Filter f);
    void update(T o, Filter f);
    List select(Filter f);
    }
    esta fue la solucion que implemente en su momento. muy parecida a la que muestran

  • @SergioAndresSierraPayares
    @SergioAndresSierraPayares 11 месяцев назад +3

    Chicos podrían hacer un curso solamente para implementar bien el patron 'Criteria' o 'Specification' en Typescript? ¿Cómo usarlo con el patrón Repository y hacer mejor uso del backend? pliiis

    • @CodelyTV
      @CodelyTV  11 месяцев назад +1

      Pues estamos pensando en hacer algo así justamente. Si vemos que hay interés le damos caña. Apúntate en este formulario y así lo tenemos en cuenta 😊 docs.google.com/forms/d/1yHtvJp8iwF0wF4QnfjxuUIWdGpbPRKBMsJo-R_R5wl4/viewform

    • @SergioAndresSierraPayares
      @SergioAndresSierraPayares 11 месяцев назад

      Gracias chicos, respondido, ojalá lo saquen ♥@@CodelyTV

  • @pinocodex
    @pinocodex Год назад +8

    Chicos hay alguna razon tactica por la que nunca usan alias en los imports? Al final si los alias son una feature del lenguaje y su dominio no tiene que verse afectado porque los alias se tienen que resolver en el tiempo del despliegue, cuando hacemos el build. No se me gustara saber la razon. Gracias cracks

  • @biko8
    @biko8 Год назад +1

    Brutal! Gracias!

  • @miguelmartin9023
    @miguelmartin9023 Год назад +5

    !Muchas gracias por el vídeo! Me surge una duda al ver el repositorio y está filosofía respecto a la relación entre los filtros. Por lo que veo ahora mismo se asume que todos los filtros tienen una relación AND entre ellos, pero, ¿como haríamos para relaciones OR o híbridas? Por ejemplo, si queremos buscar en dos campos de texto (operator contains pero con relación OR entre estos dos filtros) y filtrar por fecha (operador Lt pero este filtro es un AND con los otros dos filtros) ¿Cómo se construye el criteria para este caso?

    • @m19u3l11
      @m19u3l11 6 месяцев назад

      Excelente pregunta, la wiki tiene ejemplos de implementaciones de otros operadores y como se encadenan perfectamente con este patron de diseño en.wikipedia.org/wiki/Specification_pattern#Code_examples

  • @juanan749
    @juanan749 Год назад +2

    ¡Muchas gracias por el contenido!
    En generla me gusta la expresividad que añade esta solución aunque me llama mucho la atención que no se mencione que en LongCourses y TopCourses estás acoplandote a algo de infra desde dominio, pongo un ejemplo con LongCourses:
    En LongCourses usas los strings "duration" y "name" en FilterField("duration") y OrderBy("name") pero esos strings realmente pertenecen a la infra y dominio no debería de acoplarse a ellos, en este caso, dominio no debería de conocer ese detalle de implementación de la base de datos. Imagina que cambias la columan de sql o el atributo de mongo, estarías afectando a dominio con el cambio.
    No creo que esto descarte la solución, para nada, simplemente es algo a tener en cuenta como trade off.
    El detalle de los cursores para paginar es interesante, quizá se podría hacer un contenido centrado solo en paginados a bases de datos con análisis de trade offs.
    Un saludo

  • @sebastianlopezsalinas9127
    @sebastianlopezsalinas9127 Год назад +7

    En TopCourses el OrderType no deberia ser DESC?? 🤔🤔

    • @pmorah
      @pmorah Год назад +2

      Yes. Ese criterio retorna los X cursos con menos views.

  • @FireCrauter
    @FireCrauter Год назад

    7:53 en vez de un string "views", no hay en typescript un nameof como el de c#, que funciona sin instanciar?,
    ej en c#
    string viewsfield = nameof(NameClass.Field).ToLower();

  • @josearmandovargas3786
    @josearmandovargas3786 10 месяцев назад

    veo difícil implementar este patrón en una arquitectura ddd teniendo en cuenta que muchas veces los campos del dominio no están igual de estructurados que las entidades de la base de datos, haría falta realizar algún tipo de mapeo, el cual a decir verdad, veo bastante complejo e innecesario.

  • @carloscapoteperezandreu
    @carloscapoteperezandreu Год назад

    Me queda una duda con el uso de FilterValue en 5:28. La clase extiende StringValueObject. De hecho, recibe un string en el constructor. Así que para pasarle un valor de 20 minutos tenemos que pasar el valor como cadena. De ahí el: new FilterValue('20'). ¿Eso significa que el campo se va a comparar como cadena? Si fuese así, '20' >= '100' y al mismo tiempo '20'

  • @Prymeist
    @Prymeist Год назад

    Como se transforman los criteria a queries? o se hace el filtrado por codigo?

  • @BigluisVargas
    @BigluisVargas Год назад

    Para REST-API no seria mejor utilizar un filter parser como el de Odata o FIQL?

  • @AlejandroMoratoPerez
    @AlejandroMoratoPerez Год назад +1

    like por la musica final

  • @codigito
    @codigito Год назад +2

    No me parece del todo semántico topcourses creo que me gusta más TopViewCourses y el parámetro lo pondría como howManycourses ya que top y top courees no dice que son ni vistas ni la cantidad de cursos.
    Si mañana se quiere el top rated ya no podrías usar topcourses sin más...
    Que opináis
    Como siempre enhorabuena.

    • @CodelyTV
      @CodelyTV  Год назад

      Buena propuesta. Definitivamente TopViewsCourses revela más la intención y es más explícito. Ya no tanto por el argumento de dejar hueco a top rated, porque por ese mismo motivo en verdad podríamos pensar que, a futuro, lo que ahora es TopCourses con un criterio de ordenación por visionados, podría pasar a ser un mix de “top” por visionados y por ser más nuevos. Que de hecho, a día de hoy realmente es lo que hacemos en la web. Pero para el caso del vídeo de compro lo de TopViewsCourses 😊
      Gracias por comentar!

  • @CavalloGuido
    @CavalloGuido Год назад

  • @javi68yt2
    @javi68yt2 Год назад

    12:33 ¿como se aplica el "starting with" cuando las claves son UUID?
    En Oracle se podria usar el RowId pero en otro motor que no lo tenga...

  • @javiersanchezoliva4113
    @javiersanchezoliva4113 Год назад

    ruclips.net/video/u_87ME-7JVc/видео.html
    ¿No sería orden descendente en lugar de ascendente??

  • @StevenCuartas55
    @StevenCuartas55 7 месяцев назад +1

    que nivel se debe tener para entender sus videos, no entiendo NADA de lo que enseñan parecen puras clinicas para expertor ULTRA SENIORS FULLSTACK AEROESPACIALES no se les entiende NADAAA, parece que les doliera completar una linea de palabras con conceptos sencillos de inmediato empiezan a envolverlo todo en una super complejidad

  • @xaviersubira5154
    @xaviersubira5154 Год назад

    En serio, el murciano no se entiende si se habla como si fuera el último día del universo. He tenido que bajar la velocidad, que parece que hable Ferrán Adrià con tanta revolución y poca dicción.

    • @rubensalado
      @rubensalado Год назад +1

      Jajajaj lo siento! Me cuesta controlarme y acabo hablando como si no hubiera un mañana 😅 Espero que eso no haya impedido que disfrutes del vídeo. Un saludo desde Córdoba!

    • @xaviersubira5154
      @xaviersubira5154 Год назад

      ​@@rubensalado Saludos de vuelta. No creo que debas disculparte, porque sé de buena gana que no es un fallo tuyo. A mi entender es un fallo de producción. Verás, cuando se presenta un material didáctico, este tiene que ser préviamente revisado. No estábais haciendo un directo, por lo tanto se debería haber revisado; y aspectos como la dicción o la velocidad de exposición, que son fundamentales para un recurso videográfico, hubiera pasado por filtro alguno.