main.go 1.08 KiB
package main
import (
"embed"
"log"
"net/http"
"github.com/jmoiron/sqlx"
_ "modernc.org/sqlite" // Imported for side effects: registers DB driver
)
//go:embed templates/*.tpl
var templateFS embed.FS
//go:embed static/*
var staticFS embed.FS
type Handler struct {
db *sqlx.DB
}
func httpError(w http.ResponseWriter, msg string, err error, status int) {
if err != nil {
msg += ": " + err.Error()
}
log.Println(msg)
http.Error(w, msg, status)
}
func main() {
db, err := sqlx.Open("sqlite", "vino.sqlite")
if err != nil {
log.Fatalln("can't open DB:", err)
}
defer db.Close()
err = initDB(db)
if err != nil {
log.Fatalln("can't initialize DB:", err)
}
http.Handle("/static/", http.FileServer(http.FS(staticFS)))
handler := Handler{
db: db,
}
http.HandleFunc("/details/img", handler.img)
http.HandleFunc("/details/", handler.details)
http.HandleFunc("/", handler.index)
const listenAddr = ":7878"
log.Printf("here we go, listening on http://%s", listenAddr)
err = http.ListenAndServe(listenAddr, nil)
if err != nil {
log.Fatalln("http handler failed:", err)
}
}