Pessoal estou com um problema relacionado ao curso de Go gin criando uma api com simplicidade, especificamente no Módulo 3 do curso ( Struct, banco de Dados e orm), fiz todo o processo de configuração do Docker compose, consegui logar no pgAdmin, configurar o postgres dentro do PgAdmin do docker, ele criou a tabela de forma automática pelo Gorm, porém na hora de realizar o POST dentro do Postman eu tomo erro 500 e no log no terminal e ele diz. a seguinte mensagem: invalid memory address or nil pointer dereference, mandei o código zipado quem puder ajudar.
Minha package database :
package database
import (
"log"
"modulos/models"
"gorm.io/driver/postgres"
"gorm.io/gorm"
)
var (
DB *gorm.DB
err error
)
func ConectaDataBase() *gorm.DB {
StringDeConexao := "host=localhost user=gabriel password=root dbname=postgres port=5432 sslmode=disable"
DB, err := gorm.Open(postgres.Open(StringDeConexao))
if err != nil {
log.Panic("Erro na função conecta Database", err)
}
DB.AutoMigrate(&models.Aluno{})
return DB
}
package Routes:
package routes
import (
"modulos/controllers"
"github.com/gin-gonic/gin"
)
func HandleRequests() {
r := gin.Default()
r.GET("/alunos", controllers.ExibeTodosAlunos)
r.GET("/:nome", controllers.Saudacao)
r.POST("/alunos", controllers.CriaNovoAluno)
r.Run()
}
E meu controller está assim:
package controllers
import (
"modulos/database"
"modulos/models"
"net/http"
"github.com/gin-gonic/gin"
)
func ExibeTodosAlunos(c *gin.Context) {
c.JSON(http.StatusOK, models.Alunos)
}
func Saudacao(c *gin.Context) {
nome := c.Params.ByName("nome")
c.JSON(http.StatusOK, gin.H{
"API diz": "Bem-vindo " + nome + " ao nosso servidor?",
})
}
func CriaNovoAluno(c *gin.Context) {
var aluno models.Aluno
if err := c.ShouldBindJSON(&aluno); err != nil {
c.JSON(http.StatusBadRequest, gin.H{
"error": err.Error()})
return
}
database.DB.Create(&aluno)
c.JSON(http.StatusCreated, aluno)
}