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) { log.Println(msg+":", err) http.Error(w, msg+": "+err.Error(), 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) } }