Connessione a MariaDB/MySQL in Gofr
In un precedente articolo abbiamo parlato di Gofr, quindi do per scontato il setup iniziale.
In questo articolo vediamo come connetterci ad un db MariaDB/MySQL.
Prima di tutto installiamo il driver:
go get github.com/go-sql-driver/mysql
Qui sotto il codice, comprensivo del nostro model:
package main
import (
"database/sql"
"fmt"
"os"
_ "github.com/go-sql-driver/mysql"
"gofr.dev/pkg/gofr"
)
type Persona struct {
ID int `json:"id"`
Email string `json:"email"`
}
func main() {
app := gofr.New()
db, err := sql.Open("mysql", "root:9211@tcp(localhost:3306)/test")
if err != nil {
fmt.Println(err)
os.Exit(0)
}
defer db.Close()
app.GET("/", func(ctx *gofr.Context) (interface{}, error) {
return "Root!", nil
})
app.GET("/persone", func(ctx *gofr.Context) (interface{}, error) {
rows, err := db.Query("SELECT id, email FROM persone")
if err != nil {
return nil, err
}
defer rows.Close()
var persone []Persona
for rows.Next() {
var p Persona
if err := rows.Scan(&p.ID, &p.Email); err != nil {
return nil, err
}
persone = append(persone, p)
}
return persone, nil
})
app.GET("/persona/{id}", func(ctx *gofr.Context) (interface{}, error) {
id := ctx.PathParam("id")
var p Persona
err := db.QueryRow("SELECT id, email FROM persone WHERE id = ?", id).Scan(&p.ID, &p.Email)
if err != nil {
return nil, fmt.Errorf("persona non trovata: %v", err)
}
return p, nil
})
app.Run()
}
Sulla documentazione è consigliato usare un file .env per la configurazione.
Io non l'ho usato perchè si tratta più che altro di test; a voi il compito di sistemare questa cosa come esercizio.
Enjoy!
go gofr mysql mariadb
Commentami!