1
resposta

Criação do Banco de Dados automático

Então, como vimos em aula nós podemos conectar em um banco de dados que nós criamos manualmente, "Através de cliques" no PgAdmin... o que eu quero saber é se tem como criar o banco de dados, quando rodamos o comando go go run main.go

O que eu percebi é que nas migrations tem os comandos para criação da tabela e de inserção no banco, será que não tem como criar o banco de dados adicionando o comando ali create database nomedobanco ??

1 resposta

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!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software