52 lines
1.1 KiB
Go
52 lines
1.1 KiB
Go
package rest
|
|
|
|
import (
|
|
"encoding/json"
|
|
"net/http"
|
|
|
|
"github.com/restitux/ikinuki-server/database"
|
|
)
|
|
type GetShows struct {
|
|
Shows []database.TVShow
|
|
}
|
|
|
|
func getShowsHandler(data_dir string, w http.ResponseWriter, r *http.Request) {
|
|
log.Debugf("/get_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 title, original_title, show_title, year FROM tvshows")
|
|
if err != nil {
|
|
log.Errorf("Could not check if database was new: %v", err)
|
|
}
|
|
defer rows.Close()
|
|
|
|
var return_json GetShows
|
|
|
|
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.Shows))
|
|
break
|
|
}
|
|
}
|
|
var show database.TVShow
|
|
rows.Scan(&show.Title, &show.OriginalTile, &show.ShowTitle, &show.Year)
|
|
|
|
return_json.Shows = append(return_json.Shows, show)
|
|
}
|
|
data, err := json.Marshal(return_json)
|
|
if err != nil {
|
|
log.Errorf("Could not marshal episode data: %v\n", err)
|
|
return
|
|
}
|
|
w.Write(data)
|
|
}
|