Files

61 lines
1.3 KiB
Go

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)
}