Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Sugestão] SQLite3 como alternativa

Bom dia! Recentemente, tive dificuldades configurando o PostgreSQL no Arch Linux, mas a teimosia falou mais alto. Optei por tentar usar SQLite3 que já havia usado em outros projeto menores também e encontrei um vídeo útil aqui.

Estudei a documentação do pacote go-sqlite3 e achei uma pasta de exemplos (confusos pra caramba... mas são alguma coisa), depois de alguns copos de café, meu código estava funcionando! Se você está passando pelos mesmos desafios, deixei o código abaixo (não mexi no html, apenas no main.go mesmo):

package main

import (
    "fmt"
    "html/template"
    "net/http"

    "database/sql"

    _ "github.com/mattn/go-sqlite3"
)

var templates = template.Must(template.ParseGlob("templates/*.html"))

type Produto struct {
    Nome       string
    Descricao  string
    Preco      float64
    Quantidade int
}

func insertDB(database *sql.DB, id int, name, description string, price float64, amount int) {
    stm, _ := database.Prepare("insert into store (id, name, description, price, amount) values (?, ?, ?, ?, ?);")
    stm.Exec(id, name, description, price, amount)
}

func main() {
    http.HandleFunc("/", index)
    http.ListenAndServe(":8000", nil)
}

func index(w http.ResponseWriter, r *http.Request) {
    database, _ := sql.Open("sqlite3", "./store.db")

    stm, _ := database.Prepare("CREATE TABLE IF NOT EXISTS store ( id INTEGER PRIMARY KEY, name VARCHAR(50), description TEXT, price REAL, amount INT )")
    stm.Exec()

    rows, _ := database.Query("SELECT id, name, price, amount FROM store")
    defer rows.Close()

    var produtos []Produto

    for rows.Next() {
        var produto Produto
        row := rows.Scan(&produto.Nome, &produto.Descricao, &produto.Preco, &produto.Quantidade)

        if row != nil {
            fmt.Println(row)
            continue
        }

        produtos = append(produtos, produto)
    }

    templates.ExecuteTemplate(w, "Index", produtos)
}

Espero que isso seja útil para quem estiver procurando uma solução rápida pra continuar o curso :)

1 resposta
solução!

Oi Gabriel, tudo bem?

Muito obrigada por compartilhar sua experiência e solução alternativa para a configuração do banco de dados. É sempre bom ter diferentes opções para resolver um problema, especialmente quando se trata de configurações de ambiente que podem variar muito.

Parabéns por contribuir com a comunidade.

Um abraço e bons estudos.