Newer
Older
package main
import (
"embed"
"html/template"
"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
var templates = template.Must(template.ParseFS(templateFS, "templates/*.tpl"))
//go:embed static/*
var staticFS embed.FS
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)))
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
log.Println("handling", r.Method, r.URL, "from", r.RemoteAddr)
if r.Method == "GET" {
w.Header().Add("content-type", "text/html")
err := templates.ExecuteTemplate(w, "index.tpl", nil)
if err != nil {
log.Println("can't execute index template:", err)
}
return
}
})
const listenAddr = "127.0.0.1:7878"
log.Printf("here we go, listening on http://%s", listenAddr)