SQLC: Acabou o SQL puro para trabalhar com Golang

แชร์
ฝัง
  • เผยแพร่เมื่อ 22 ม.ค. 2025

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

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

    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 2 ปีที่แล้ว

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

  • @reinan.gabriel
    @reinan.gabriel ปีที่แล้ว +1

    Show de bola!!

  • @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

  • @WaldirBorbaJunior
    @WaldirBorbaJunior ปีที่แล้ว +1

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

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

    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?

  • @arozendojr
    @arozendojr 2 ปีที่แล้ว +1

    gostei bastante

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

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

  • @AlandeAlmeidaMatias
    @AlandeAlmeidaMatias 2 ปีที่แล้ว +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 2 ปีที่แล้ว +1

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

    • @AlandeAlmeidaMatias
      @AlandeAlmeidaMatias 2 ปีที่แล้ว

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

  • @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.

  • @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?

  • @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.

  • @dbsouza
    @dbsouza 2 ปีที่แล้ว +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 2 ปีที่แล้ว +1

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

    • @arozendojr
      @arozendojr 2 ปีที่แล้ว

      @@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

  • @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?

  • @imf4ll
    @imf4ll ปีที่แล้ว

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

  • @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.

  • @gabrielaraujodesouza8834
    @gabrielaraujodesouza8834 2 ปีที่แล้ว

    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 2 ปีที่แล้ว

      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.

  • @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

  • @lucianob.ferenczuk5698
    @lucianob.ferenczuk5698 2 ปีที่แล้ว

    show!!!

  • @GambiarraCode
    @GambiarraCode 2 ปีที่แล้ว +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.

  • @WanderDouglasTI
    @WanderDouglasTI 2 ปีที่แล้ว +1

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

    • @arozendojr
      @arozendojr 2 ปีที่แล้ว

      Relatórios 🤔🤔🤔 interessante

    • @GambiarraCode
      @GambiarraCode 2 ปีที่แล้ว +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)

  • @devguialves
    @devguialves ปีที่แล้ว

    Você também faz join com essa biblioteca?

  • @lucianoteixeira576
    @lucianoteixeira576 2 ปีที่แล้ว

    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.

  • @RicardoArtale
    @RicardoArtale 2 ปีที่แล้ว +3

    Primeiro

  • @artu_almeida
    @artu_almeida 2 ปีที่แล้ว

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

  • @gdalfovo
    @gdalfovo 2 ปีที่แล้ว

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

  • @fsilva1985
    @fsilva1985 2 ปีที่แล้ว +1

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

    • @GambiarraCode
      @GambiarraCode 2 ปีที่แล้ว

      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.

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

    Sqlx no Rust

  • @carlosoliveira4312
    @carlosoliveira4312 ปีที่แล้ว

    Consegui resposta a minha dúvida com base no exemplo do video th-cam.com/video/YaGVURjB33I/w-d-xo.html, implementando DTO.
    Grato.

  • @arozendojr
    @arozendojr 2 ปีที่แล้ว +1

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

    • @Diegosantosphp
      @Diegosantosphp 2 ปีที่แล้ว +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 2 ปีที่แล้ว +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
    th-cam.com/video/nkyiATkZ4Js/w-d-xo.html

  • @mateus-dev-me
    @mateus-dev-me 6 หลายเดือนก่อน

    Muito bom