Resolvendo DESAFIO BACKEND da Magalu com Spring Boot, Scheduler e MySQL

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

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

  • @buildrun-tech
    @buildrun-tech  5 месяцев назад +4

    🎉 Conheça a FBR:
    hotm.art/fbryc
    Você gostou do vídeo de hoje? Qual poderia ser o próximo desafio?

    • @avnercaleb8867
      @avnercaleb8867 5 месяцев назад +1

      Demorou pra criar a assinatura pra membros, macho. Ja garanti a minha. Sucesso, seu trampo e massa, melhor do YT

    • @buildrun-tech
      @buildrun-tech  5 месяцев назад

      @@avnercaleb8867 kkkkk, obrigado Avner 🫡

  • @amhfilho
    @amhfilho 5 месяцев назад +6

    Muito bom o vídeo, so quero deixar apenas uma sugestão, em uma API REST o método DELETE deve ser usado para remoção de um recurso. No seu caso, como está alterando um recurso (Status), deveria usar PUT

  • @cesarr_
    @cesarr_ 5 месяцев назад +11

    lembrando que, tem um video que o Brunão fez sobre o design pattern strategy, da pra implementar o envio para cada channel, da pra dar uma incrementada no código e mostrar que tem conhecimento tambem sobre design pattern 😄

    • @buildrun-tech
      @buildrun-tech  5 месяцев назад +3

      É verdadee! Bem lembrado Cesar! Dica boa!!

  • @anthonymeds4440
    @anthonymeds4440 5 месяцев назад +7

    Essa playlist de desafio tecnico é show demais

  • @leandropqd
    @leandropqd 5 месяцев назад +2

    Espero que seu canal cresça bastante, pois seu trabalho é muito bom! Trabalho com java a 7 anos e vi poucos canais no yt que tem esse grau de cuidado com a apresentação que você tem!!!

    • @buildrun-tech
      @buildrun-tech  5 месяцев назад

      @@leandropqd obrigado Leandro! 🤘🫡

  • @gustadev276
    @gustadev276 5 месяцев назад +4

    Iradissimo padrinho, estou estudando spring (migrando de node com nest) esses vídeos vão me salvar!!!

  • @georgequeiroz6660
    @georgequeiroz6660 2 месяца назад

    fiz um strategy pra os Channel, ficou maneiro, se quizer, posso subir numa branch

  • @victorabreu4463
    @victorabreu4463 5 месяцев назад +1

    Muito bom. Parabéns pelo canal. Aproveitando os vídeos pra dar uma atualizada. Vou ver todos e já estou compartilhando seus vídeos com o clã dos devs por aqui. kkkkkk. Valeu.

    • @buildrun-tech
      @buildrun-tech  5 месяцев назад +1

      @@victorabreu4463 Obrigadoo! 🤘

  • @Anacletodev
    @Anacletodev 5 месяцев назад

    Seus vídeos são uma mina de ouro , muito bom

  • @sinvalfelisberto
    @sinvalfelisberto 5 месяцев назад +1

    Massa demais! Cheguei agora por aqui!

  • @jovemxapo
    @jovemxapo 5 месяцев назад +3

    Aeeee! Mais um desafio, sua didática é incrível 🙌🏽

  • @ricardoaugusto6985
    @ricardoaugusto6985 2 месяца назад +1

    Admiro demais sua linha de raciocínio, parabéns! uma dúvida, a escolha de não utilizar o Lombok é para evitar algum possível conflito ?

    • @buildrun-tech
      @buildrun-tech  2 месяца назад

      @@ricardoaugusto6985 obrigado Ricardo! É intencional mesmo, por algumas razões eu não curto muito o uso do Lombok. Mas ao utilizar, nao teria nenhum problema, funcionaria da mesma forma.

  • @aln_soares
    @aln_soares 5 месяцев назад +1

    que video top ! Parabéns pela didatica e conteúdo

  • @programadordebug
    @programadordebug 5 месяцев назад +1

    Qual sua opiniao de status e channel serem apenas enums?
    Penso isso pois são registros que não mudarão com frequência e eles são muito acoplados a implementação, você teoricamente não poderia ter um channel sem implementar a forma de envio dele (pensando em algo mais futuro)

    • @buildrun-tech
      @buildrun-tech  5 месяцев назад +1

      @@programadordebug Pensando em otimização, nós precisamos normalizar as colunas da base de dados ( 1 Forma Normal ). Se for um campo de texto somente, não temos tantos benefícios com indexação. :)

    • @edmareliasbregagnoli5929
      @edmareliasbregagnoli5929 4 месяца назад +1

      Poderia ser dessa forma tambem, nao vejo problema na questao do status ser um ENUM dentro da propria entidade.
      Quanto ao Chaneel nesse caso e melhor ser uma tabela separada pois o channel pode ter outros atributos. Suponha que a empresa deseje desabilitar o envio de notificacao de SMS, por questao de custo, por exemplo. A tabela channel poderia ter um campo Ativo (true/false) para cada tipo de notificação.
      Dessa forma, voce consegue ter controle maior sobre cada channel

  • @patarachada
    @patarachada 4 месяца назад

    Camarada, algum motivo especial em ter optado por utilizar o CommandLineRunner ao invés dos arquivos schema.sql e data.sql? Parabéns pelo vídeo, muito bacana.

  • @murilorodrigues560
    @murilorodrigues560 28 дней назад

    Tem que tomar cuidado com o @scheduled pq se subir mais de uma instância o scheduled vai rodar ao mesmo tempo nas duas instâncias.

  • @moisesferreira10
    @moisesferreira10 5 месяцев назад

    Por ser um teste pra recrutadores não seria legal colocar também tratamento de exceções?

  • @murilokratos3388
    @murilokratos3388 5 месяцев назад +1

    Otimo video. Descobri teu canal ao puro acaso e to curtindo muito. Uma duvida, pq vc não utiliza o Lombok?.

    • @buildrun-tech
      @buildrun-tech  5 месяцев назад

      @@murilokratos3388 obrigado Murilo! Rapaz, eu prefiro ter a visão real do código que está rodando, além de outros aspectos (encapsulamento, etc). Não tem certo ou errado, é mais a minha preferencia mesmo :)

  • @LeviSoares-m1i
    @LeviSoares-m1i 5 месяцев назад +1

    Gostei dessa maratona (resolvendo desafios)

  • @itamarmonteiro3066
    @itamarmonteiro3066 5 месяцев назад +1

    Show demais esses desafios

  • @gabrielcardosogirarde7515
    @gabrielcardosogirarde7515 5 месяцев назад +3

    Utilizar a identificação como notificationId não seria algo redundante dentro do contexto da entidade Notification? Porque você prefiriu utilizar um relacionamento 1 para N entre Channel e Notification ao invés de criar um enumerado, no caso não seria mais interessante ser um relacionamento N x N ou talvez utilizar @ElementCollection com uma listagem de enums representando os canais, tendo em vista que a notificação poderia ser enviada para vários canais ao mesmo tempo. Achei muito inteligente sua ideia de criar um Enum para o Channel contento o Id e a descrição dele pra representar os canais padrões pré cadastrados no banco, eu provavelmente teria feito um enum somente com a descrição dos channels e buscaria eles através da descrição pra pode setar ele como um relacionamento da notificação, mas usando essa abordagem que você fez fica muito mais claro e simples. Muito bom o vídeo, aprendi coisas novas ✌

    • @buildrun-tech
      @buildrun-tech  5 месяцев назад

      @@gabrielcardosogirarde7515 São boas ideias tbem Gabriel! Neste caso optei por normalizar a base, para ficar mais otimizada e melhor indexada.

  • @pedroarthuralves
    @pedroarthuralves 5 месяцев назад +1

    Muito bom! Só uma dúvida: como tu grava o conteudo assim deixando você e a tela desse jeito? Com qual app?

    • @buildrun-tech
      @buildrun-tech  5 месяцев назад

      @@pedroarthuralves obrigado! É o OBS mesmo :)

  • @eduardoroosevelt3261
    @eduardoroosevelt3261 5 месяцев назад +1

    Muito bom o video parabéns super didático. Espero que mais brasileiro possa criar conteudo desse seu nível.
    Eu só fique com uma duvida, por que você extraiu tudo para uma entidade channel e status, pq não optou por só usar uma enum?
    No final você colocou um TODO dizendo que não irá realizar essa implementação. Daria para ter criado uma interface, envioGateway com 1 metodo send por exemplo, injetar na sua service e chamar o metodo send no lugar do TODO. Ai quem for mexer com o envio teria que implementar essa interface. Acredito que desacoplaria bem mais.

    • @buildrun-tech
      @buildrun-tech  5 месяцев назад

      @@eduardoroosevelt3261 Fala Edu! Optei por normalizar a base de dados, com isso ela fica melhor indexada e otimizada.
      É uma ótima sugestão essa criação da interface, boa!

  • @Bruno-fh7ec
    @Bruno-fh7ec 5 месяцев назад +1

    Obrigado pelo conteudo!!
    Dúvida: qual seria o motivo de criar as tabelas channel e status ao inves de apenas adiciola-las como coluna de notifications e deixar o proprio backend tratar isso?

    • @estevaois
      @estevaois 5 месяцев назад +3

      normalização é uma boa prática dentro da base de dados (quando não é levada ao extremo)

    • @buildrun-tech
      @buildrun-tech  5 месяцев назад +1

      @@estevaois Exato, é para isso msm!

    • @edmareliasbregagnoli5929
      @edmareliasbregagnoli5929 4 месяца назад +2

      Naoo vejo problema na questao do status ser um ENUM dentro da propria entidade.
      Quanto ao Chaneel nesse caso e melhor ser uma tabela separada pois o channel pode ter outros atributos. Suponha que a empresa deseje desabilitar o envio de notificacao de SMS, por questao de custo, por exemplo. A tabela channel poderia ter um campo Ativo (true/false) para cada tipo de notificação.
      Dessa forma, voce consegue ter controle maior sobre cada channel

  • @daniel_goncalves
    @daniel_goncalves 5 месяцев назад +1

    Muito bom mesmo. Agora me tira uma dúvida. Porque você optou por fazer duas entidades channel e status e não colocou apenas como 2 atributos da notificação já que no cadastro é uma notificação por channel? Eu só faria assim se no cadastro eu enviasse uma mensagem e uma lista de chanels para essa mesma notificação.
    Muito obrigado pelo conteúdo.

    • @buildrun-tech
      @buildrun-tech  5 месяцев назад +1

      @@daniel_goncalves opa, obrigado! Optei por normalizar a base, para poder ensinar os relacionamentos tbem. Com a base normalizada, as buscas ficam mais eficientes

    • @daniel_goncalves
      @daniel_goncalves 5 месяцев назад +1

      @@buildrun-tech fiz um fork pra fazer umas mudanças. Depois compartilho pra vc ver se é legal

    • @buildrun-tech
      @buildrun-tech  5 месяцев назад

      @@daniel_goncalves boaa! Compartilha sim

    • @edmareliasbregagnoli5929
      @edmareliasbregagnoli5929 4 месяца назад +1

      Nao vejo problema na questao do status ser um ENUM dentro da propria entidade.
      Quanto ao Chaneel nesse caso e melhor ser uma tabela separada pois o channel pode ter outros atributos. Suponha que a empresa deseje desabilitar o envio de notificacao de SMS, por questao de custo, por exemplo. A tabela channel poderia ter um campo Ativo (true/false) para cada tipo de notificação.
      Dessa forma, voce consegue ter controle maior sobre cada channel

  • @thenanzim
    @thenanzim 5 месяцев назад +1

    Show demais!

  • @dldmdani
    @dldmdani 5 месяцев назад +1

    onde posso ver o repositório do desafio original?

    • @buildrun-tech
      @buildrun-tech  5 месяцев назад

      @@dldmdani O desafio foi passado via PDF para um inscrito do canal. Ele passou para a gente e eu converti para MD. Está no link da descrição o repositorio, o arquivo é o problem.md

  • @denisonkolling
    @denisonkolling 5 месяцев назад +1

    Muito bom!!!👏👏👏

  • @JCode_Development
    @JCode_Development 5 месяцев назад +1

    Aonde eu encontro esses desafios?

    • @buildrun-tech
      @buildrun-tech  5 месяцев назад +1

      @@JCode_Development existe o repositório do backend brasil. Mas esses eu recebi dos inscritos :)

  • @AtrativoZap
    @AtrativoZap 5 месяцев назад +1

    Top

  • @Anacletodev
    @Anacletodev 5 месяцев назад +1

    Por que preciso criar um construtor vazio?

    • @buildrun-tech
      @buildrun-tech  5 месяцев назад

      @@Anacletodev Opa, seria pro SpringData/Hibernate conseguir instanciar e gerenciar a inserção dos atributos da sua entity

  • @lealsantanati
    @lealsantanati 5 месяцев назад +1

    Qual o nivel ? Junior ?