package client_api import ( "encoding/json" "net/http" "git.ohea.xyz/mediasrv/server/database" ) type TVShow struct { Id int `json:"id"` Title string `json:"title"` Year int `json:"year"` Description string `json:"description"` Poster string `json:"poster"` } type Shows struct { Data []TVShow `json:"data"` } func showsHandler(data_dir string, w http.ResponseWriter, r *http.Request) { log.Debugf("/shows called\n") db, _, err := database.OpenDatabase(data_dir) if err != nil { log.Errorf("Could not open database: %v\n", err) return } rows, err := db.Query("SELECT id, title, year, description, poster FROM tvshows") if err != nil { log.Errorf("Could not check if database was new: %v", err) } defer rows.Close() var return_json Shows for { if !rows.Next() { err = rows.Err() if err != nil { log.Fatalf("Could not get row from database: %v\n", err) return } else { log.Debugf("%v rows processed\n", len(return_json.Data)) break } } var show TVShow rows.Scan(&show.Id, &show.Title, &show.Year, &show.Description, &show.Poster) return_json.Data = append(return_json.Data, show) } data, err := json.Marshal(return_json) if err != nil { log.Errorf("Could not marshal episode data: %v\n", err) return } w.Write(data) }