package webui import ( "database/sql" "html/template" "net/http" "sevenkeys/logic" "strconv" ) type BaseHandler struct { db *sql.DB } func NewBaseHandler(db *sql.DB) *BaseHandler { return &BaseHandler{ db: db, } } func (h *BaseHandler) storageAreasHandler(w http.ResponseWriter, r *http.Request) { storageAreas, err := logic.GetAllStorageAreas(h.db) if err != nil { return } const tmpl = ` Sevenkeys {{range $val := .}} {{$val.Name}} ({{$val.StorageType}})
{{end}} ` t := template.Must(template.New("tmpl").Parse(tmpl)) t.Execute(w, storageAreas) } func (h *BaseHandler) storageHandler(w http.ResponseWriter, r *http.Request) { storageAreaIdParam := r.PathValue("id") storageAreaId, err := strconv.Atoi(storageAreaIdParam) if err != nil { return } productLocations, err := logic.GetAllProductsInStorageArea(h.db, storageAreaId) if err != nil { return } const tmpl = ` Sevenkeys
    {{range $val := .}}
  1. {{$val}}
  2. {{end}}
      ` t := template.Must(template.New("tmpl").Parse(tmpl)) t.Execute(w, productLocations) } func Start(db *sql.DB) { handlers := NewBaseHandler(db) http.HandleFunc("/", handlers.storageAreasHandler) http.HandleFunc("/storage/{id}", handlers.storageHandler) http.ListenAndServe(":8080", nil) }