ATENÇÃO: Fazendo o curso recebi essa mensagem ao fazer esse código aqui:
var (
DB *gorm.DB
err error
)
func ConnectDatabase() {
stringConnection := "host=localhost user=root password=root dbname=root port=5432 sslmode=disable"
DB, err := gorm.Open(postgres.Open(stringConnection))
if err != nil {
panic(err.Error())
}
DB.AutoMigrate(&models.Student{})
}
Uma das soluções propostas foi essa:
var (
DB *gorm.DB
err error
)
func ConnectDatabase() {
stringConnection := "host=localhost user=root password=root dbname=root port=5432 sslmode=disable"
conn, err := gorm.Open(postgres.Open(stringConnection))
if err != nil {
panic(err.Error())
}
DB = conn
DB.AutoMigrate(&models.Student{})
}
Ela funciona, mas me questionei o motivo e descobri a razão:
isso acontece nessa linha aqui:
DB, err := gorm.Open(postgres.Open(stringConnection))
Muito normal isso acontecer, pos achamos que precisamos CRIAR um nova variavel, mas nós devemos APONTAR a instancia criada para a variavel pois a mesma só existe dentro do escopo da função.
Aqui é isso que acontece: estamos criando uma variavel com escopo de função (só funciona dentro da função) e apontando para o retorno que vem do gorm.Open
O CORRETO SERIA ISSO AQUI:
DB, err = gorm.Open(postgres.Open(stringConnection))
A diferença é esta: estamos pegando a variavel DB (Global) do gorm e apontando para o retorno que vem do gorm.Open