+++ /dev/null
-package genre
-
-import (
- "encoding/json"
- "git.jacobcasper.com/brackets/env"
- "git.jacobcasper.com/brackets/routes"
- "git.jacobcasper.com/brackets/types"
- "log"
- "net/http"
-)
-
-func Index(env *env.Env) routes.Handler {
- return func(w http.ResponseWriter, r *http.Request) {
- if r.Method != "GET" {
- http.Error(w, http.StatusText(http.StatusMethodNotAllowed), http.StatusMethodNotAllowed)
- return
- }
-
- w.Header().Set("Content-Type", "application/json")
-
- genreName := r.FormValue("name")
- if genreName != "" {
- genre := types.Genre{}
- row := env.Db.Db.QueryRow(`
-SELECT ID, NAME
-FROM GENRE
-WHERE NAME = lower(?)`,
- genreName,
- )
- if err := row.Scan(&genre.ID, &genre.Name); err != nil {
- http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
- return
- }
- b, err := json.Marshal(genre)
- if err != nil {
- log.Print(err)
- http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
- return
- }
- w.Write(b)
- return
- }
-
- rows, err := env.Db.Db.Query(`
-SELECT ID, NAME
-FROM GENRE
-LIMIT 20`,
- )
- if err != nil {
- http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
- return
- }
- defer rows.Close()
-
- genres := make([]types.Genre, 0)
- for rows.Next() {
- genre := types.Genre{}
- if err := rows.Scan(&genre.ID, &genre.Name); err != nil {
- http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
- return
- }
- genres = append(genres, genre)
- }
- if err = rows.Err(); err != nil {
- log.Print(err)
- http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
- return
- }
- b, err := json.Marshal(genres)
- if err != nil {
- log.Print(err)
- http.Error(w, http.StatusText(http.StatusInternalServerError), http.StatusInternalServerError)
- return
- }
- w.Write(b)
- }
-}