SQLC: Acabou o SQL puro para trabalhar com Golang

Поділитися
Вставка
  • Опубліковано 11 січ 2025

КОМЕНТАРІ • 52

  • @kimprado1597
    @kimprado1597 Місяць тому

    Muito legal a ferramenta, e inclusive é capaz de olhar para os arquivos de DB Migrations e saber o schema atual, entendendo até alter tables.

  • @jamalmelo
    @jamalmelo Рік тому +7

    Muito bom, com certeza em um projeto futuro vou trocar o gorm pelo sqlc, hoje utilizo o gorm numa arquitetura Hexagonal o que me permite fazer a mudança muito facilmente.

  • @gayachip
    @gayachip Рік тому +4

    Gostei! Eu usava o GORM, mas nos ultimos projetos estava usando SQLX agora vou experimentar SQLC.

    • @arilson.santos
      @arilson.santos 8 місяців тому +1

      @gayachip, blz? Usando SQLX, como você trabalhava com consultas N+1?

  • @arilson.santos
    @arilson.santos 10 місяців тому +2

    Tenho estudo o Golang e me deparei com essa parte, "o que usar para o banco?" Eu vi que recomendam usar o Sqlx ou Sql puro, o SqlX eu vi q tem uns recursos legais, mas esse esquema do SQLC.. poxa vida, curti! :)

  • @alcancebrasil4467
    @alcancebrasil4467 Рік тому

    Eita nois Wesley, esbarrei com este cara outro dia atrás e resolvi testar. Realmente é muito bacana.

  • @WaldirBorbaJunior
    @WaldirBorbaJunior Рік тому +1

    Meu caneco.... que show isso. Ja virei fan do sqlc

  • @GambiarraCode
    @GambiarraCode Рік тому +6

    Ja uso sqlc em todos meus projetos há algum tempo. Quanto menos ORM, melhor. Quanto ao fato de digitar mais. Github copilot ajuda bastante.
    Sem falar que "escrever muito" não deveria ser um problema pra quem usa Go. Afinal, um dos propósitos da linguagem é escrever mais e produzir um código mais fácil de ler.

  • @mateusprado8715
    @mateusprado8715 2 місяці тому +1

    Fiz uma api em GO usando GORM, mas pretendo migrar pro SQLC

  • @carlosoliveira4312
    @carlosoliveira4312 Рік тому

    Muito bom!
    Grato pelo videoaula.
    Ajuda bastante a melhorar a produtividade, identificação prévia de falhas e uso amplo dos recursos do banco de dados subjacente.
    Teria alguma dica para desacoplar os modelos gerados do domínio da aplicação?
    Obrigado

  • @imf4ll
    @imf4ll Рік тому

    Isso é ótimo pra evitar SQL Injection, cria um certo padrão seguro

  • @reinan.gabriel
    @reinan.gabriel Рік тому +1

    Show de bola!!

  • @duducv
    @duducv 9 місяців тому

    Único problema que estou enfrentando no sqlc hoje é realizar queries com joins (Dificuldade em mapear a entidade). Achei mais complicado que usar o driver padrão do pg do go. Seria interessante mostrar um exemplo no próximo vídeo.

  • @thalesgelinger
    @thalesgelinger 8 місяців тому

    Muito massa, uma duvida, como seria tipo, num pattern de repository e entities, como seria pra tipo extender os models gerados pra mapear num json depois, alguem tem um exemplo disso?

  • @Dsouza10082
    @Dsouza10082 6 місяців тому

    Acho interessante, mas neste caso, gosto de ter o controle mais privado do pool de conexões, sei que o SQLC deva ter uma forma de manipular, mas connection handling é muito importante dominar os pontos fortes e fracos na sua aplicação.

    • @FullCycle
      @FullCycle  6 місяців тому

      Não há nenhum impeditivo de gerenciar o pool de conexões em conjunto com o sqlc.

  • @AlandeAlmeidaMatias
    @AlandeAlmeidaMatias Рік тому +2

    Estava justamente pensando sobre essa abordagem… Minha dúvida fica a cargo de um eventual controle da versão do banco de dados

    • @GambiarraCode
      @GambiarraCode Рік тому +1

      Pra isso você pode usar a lib golang-migrate.

    • @AlandeAlmeidaMatias
      @AlandeAlmeidaMatias Рік тому

      @@GambiarraCode não conhecia essa lib. Vou dar uma olhada. Valeu

  • @dbsouza
    @dbsouza Рік тому +4

    Wesley, uma dúvida, pq não usar Procedures do banco de dados? Não é ruim subir toda a aplicação por causa de algo mais simples na query?

    • @vormavius
      @vormavius Рік тому +1

      Oque é mais fácil escalar, sua aplicação ou o banco de dados? Quem é melhor eu evitar sobrecarregar?

    • @arozendojr
      @arozendojr Рік тому

      @@vormavius Cada caso deve ter uma solução, exemplo um relatório d-1, em uma instância exclusiva para relatórios, usaria porcedure, por diversos motivos, tempo de timeout, uso exclusivo da CPU, etc agora em app cloud, micro serviço, tenho a tendência em deixar as query mais simples, acredito que tenha lugar para cada tipo de solução

  • @mreduardobarbosa
    @mreduardobarbosa 9 місяців тому

    Trabalhando com sql puro, se por acaso o cliente trocar de banco como fica, tem bancos que tem query diferentes uma não roda no outro, tipo funções do banco na query. Altera todo o programa ?

  • @cebolinharenato
    @cebolinharenato 10 місяців тому

    É possível fazer queries dinamicas com filtros opcionais selecionados pelo usuário? A primeira vista sqlc parece que serve só para queries fixas, é isso mesmo?

  • @evelynteles1242
    @evelynteles1242 Рік тому +4

    olaa me chamo Evelyn sou editora de videos, vi alguns dos seu videos tenho certeza que tenho muito a agrega no seu conteudo por exemplo:cortes,texto personalizados,animacoes e musicas de fundo e etc... sei que tem muito talento adoraria trabalhar com vocÊ❤ edito tambem vídeos para eventos para homenagem, vídeos curtos(tiktok,reels,shorts..) e etc.. deixaria seus videos mais profissionais e qualificados espero sua resposta

  • @arozendojr
    @arozendojr Рік тому +1

    gostei bastante

  • @TheMariossj
    @TheMariossj Рік тому

    Muito legal! Mas é uma pena não ter suporte para BD Oracle...😢

  • @Joaomigguel007
    @Joaomigguel007 Рік тому

    Ele gera alguns "type-safe" , existe algum jeito além do override usar apenas a tipagem nativa do go? ao invés de usar o NullString do sqlc?

  • @rafaelcarvalho2918
    @rafaelcarvalho2918 Рік тому +2

    Com o uso desse pkg com podemos controlar o versionamento da base de dados igual aos ORM ?

    • @keven.gamero
      @keven.gamero Рік тому +1

      para isso use uma outra ferramenta chamada goose, eu uso goose + sqlc e é show

    • @rafaelcarvalho2918
      @rafaelcarvalho2918 Рік тому

      @@keven.gamero valeu pela dica, realmente é otima.

  • @devguialves
    @devguialves Рік тому

    Você também faz join com essa biblioteca?

  • @RicardoArtale
    @RicardoArtale Рік тому +3

    Primeiro

  • @lucianoteixeira576
    @lucianoteixeira576 Рік тому

    Geralmente os ORMs tem maior ganho pra fazer CRUD e permitem executar queries em SQL Nativo pra evitar justamente os JOINs porcarias que podem ser gerados.

  • @gabrielaraujodesouza8834
    @gabrielaraujodesouza8834 Рік тому

    eu utilizo Gorm para acessar o banco dados; ai para fazer controle de versão do banco de dados (create table, alter table, etc...) eu utilizo o Flyway que é em java, é um pouco chato fazer dessa forma pois são dois projetos para gerenciar. Como voces fazem o versionamento do banco de dados em projetos em go?

    • @GambiarraCode
      @GambiarraCode Рік тому

      golang-migrate

    • @turock360
      @turock360 Рік тому

      O próprio Gorm possui um mecanismo de migration, porém ele não altera a estrutura de tabelas já criadas no banco (ex: o tipo de uma coluna) para evitar problemas com consistência de dados.

  • @artu_almeida
    @artu_almeida Рік тому

    a questao nem é digitar muito na hora de digitar SQL puro, a questao principal é a vulnerabilidade de SQL injection...

  • @WanderDouglasTI
    @WanderDouglasTI Рік тому +1

    vc ja passou por caso complexos de crud usando o sqlc? tipo subquery(exemplo)

    • @arozendojr
      @arozendojr Рік тому

      Relatórios 🤔🤔🤔 interessante

    • @GambiarraCode
      @GambiarraCode Рік тому +1

      Já usei pra criar CTEs com naming params do sqlc e funcionou lindamente. Para relatórios complexos ainda não tive a oportunidade. Como alternativa, recomendo também o metabase (outra aplicação), vc pode gerar vários insights dos dados do seu banco e exportar a query. Aí poderia usar raw query direto no código para casos específicos que você ache difícil/custoso fazer com sqlc (ainda não vi um caso assim, porém)

  • @fsilva1985
    @fsilva1985 Рік тому +1

    Achei o codigo uma bagunça mas se for pra coisa pequena beleza 👍

    • @GambiarraCode
      @GambiarraCode Рік тому

      Uso em projetos grandes e não fica bagunça. Você pode deixar seus arquivos sql e os models gerados pelo sqlc numa pasta dentro de /pkg do seu projeto, por exemplo. E dentro de /internal, por ex, consumir apenas os métodos que vão interagir com seu banco de dados.
      Assim, tudo que for código "auto gerado" vai ficar "fora do seu caminho" e você vai conseguir usar todo poder do sqlc e escrever um código extremamente semântico e fácil de ler.

  • @lucianob.ferenczuk5698
    @lucianob.ferenczuk5698 Рік тому

    show!!!

  • @gdalfovo
    @gdalfovo Рік тому

    Alguém aqui usa a entgo (by Facebook)?

  • @fernandomarca
    @fernandomarca 9 місяців тому

    Sqlx no Rust

  • @carlosoliveira4312
    @carlosoliveira4312 Рік тому

    Consegui resposta a minha dúvida com base no exemplo do video ua-cam.com/video/YaGVURjB33I/v-deo.html, implementando DTO.
    Grato.

  • @arozendojr
    @arozendojr Рік тому +1

    como fosse adaptado "gRPC" porém com sql, só senti falta de testes unitários

    • @Diegosantosphp
      @Diegosantosphp Рік тому +4

      A minha pergunta é o que você testaria? Se está tendo conexão com banco?
      Acho que para essas funções cabe mais tests de integração do que unitários

    • @arozendojr
      @arozendojr Рік тому +1

      @@Diegosantosphp 😅 talvez validar o sql e tratamento de erro ou programação defensiva

  • @MacacoNinja
    @MacacoNinja Рік тому

    Ei amigo poderia avaliar isso, framework front end em go
    ua-cam.com/video/nkyiATkZ4Js/v-deo.html

  • @mateus-dev-me
    @mateus-dev-me 6 місяців тому

    Muito bom