Olá, Eduardo!
A sua pergunta é muito interessante e faz sentido. Na verdade, é possível sim criar um banco de dados automaticamente ao rodar a aplicação, mas isso depende de como você estrutura seu código e configura sua conexão com o banco de dados.
No caso do Go, você pode usar uma biblioteca como a sqlx
para abrir uma conexão com o Postgres e então executar o comando SQL CREATE DATABASE
. Porém, você precisa ter cuidado, pois essa operação precisa ser feita em uma conexão que não esteja apontando para nenhum banco de dados específico.
Aqui está um exemplo de como você poderia fazer isso:
package main
import (
"fmt"
"github.com/jmoiron/sqlx"
_ "github.com/lib/pq"
)
func main() {
db, err := sqlx.Connect("postgres", "user=seu_usuario password=sua_senha sslmode=disable")
if err != nil {
fmt.Println("Erro ao conectar com o Postgres:", err)
return
}
_, err = db.Exec("CREATE DATABASE nomedobanco")
if err != nil {
fmt.Println("Erro ao criar o banco de dados:", err)
return
}
fmt.Println("Banco de dados criado com sucesso!")
}
No entanto, é importante lembrar que essa não é uma prática comum. Normalmente, a criação do banco de dados é um passo realizado manualmente durante a configuração do ambiente, enquanto as migrations são usadas para gerenciar a estrutura das tabelas dentro do banco.
Espero ter ajudado e bons estudos!