SQLC: artigos.sql.go
Esse arquivo é gerado automaticamente pela ferramenta SQLC e faz parte do código Go resultante da execução do comando `sqlc generate`. Ele contém consultas SQL pré-definidas, mapeadas para funções Go específicas no contexto da tabela "artigos". Vamos analisar o que cada parte desse código faz:
1. **Aviso de Código Gerado:**
```go
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.24.0
// source: artigos.sql
```
- Este trecho indica que o código foi gerado automaticamente pela ferramenta SQLC, não deve ser editado manualmente, e fornece informações sobre a versão específica do SQLC utilizada para gerar o código. Além disso, menciona que as consultas foram geradas a partir do arquivo SQL chamado "artigos.sql".
2. **Pacote e Importações:**
```go
package repositorio
import (
"context"
)
```
- Este arquivo pertence ao pacote `repositorio` e importa o pacote `context` para operações contextuais em Go.
3. **Constantes de Consultas SQL:**
- Cada consulta SQL é definida como uma constante de string.
```go
const artigoPorId = `-- name: ArtigoPorId :one
SELECT id, titulo, descricao, imagem, criadoem, editadoem FROM artigos WHERE id = ?
```
4. **Funções Correspondentes:**
- Cada consulta SQL tem uma função Go correspondente que a executa. As funções são geradas pelo SQLC.
```go
func (q *Queries) ArtigoPorId(ctx context.Context, id int32) (Artigo, error) {
row := q.db.QueryRowContext(ctx, artigoPorId, id)
var i Artigo
err := row.Scan(
&i.ID,
&i.Titulo,
&i.Descricao,
&i.Imagem,
&i.Criadoem,
&i.Editadoem,
)
return i, err
}
```
- Por exemplo, a função `ArtigoPorId` executa a consulta SQL definida na constante `artigoPorId` e mapeia os resultados para uma estrutura `Artigo`.
5. **Tipos de Parâmetros:**
- Algumas funções recebem parâmetros definidos por tipos específicos.
```go
type AtualizarArtigoParams struct {
Titulo string
Descricao string
Imagem string
ID int32
}
```
- Esses tipos são usados para passar os valores necessários para as consultas SQL.
6. **Cada Função Realiza uma Operação Específica:**
- As funções `AtualizarArtigo`, `CriarArtigo`, `DeletarArtigo`, e `ListarArtigos` realizam, respectivamente, atualização, criação, exclusão e listagem de artigos na tabela do banco de dados.
Essencialmente, esse arquivo representa a interface entre o código Go da aplicação e as consultas SQL definidas no arquivo "artigos.sql". As funções geradas encapsulam a execução das consultas e a manipulação dos resultados no formato desejado pela aplicação.