amuse.git

commit 5f8951769e3b79a38f28b55df03c0a9ea689dca7

Author: Adam <git@apiote.tk>

add item cache from TV series

 libamuse/account.go | 1 
 libamuse/serie.go | 10 +-------
 tmdb/serie.go | 53 +++++++++++++++++++++++++++++++++++++---------


diff --git a/libamuse/account.go b/libamuse/account.go
index 69859524345dad6568ee7f27a515645af973ca76..e70673687b53af0ca5b2053b26bd902257e4624d 100644
--- a/libamuse/account.go
+++ b/libamuse/account.go
@@ -73,7 +73,6 @@ 	case datastructure.ItemTypeTvserie:
 		arg, err = gott.
 			NewResult(gott.Tuple(args)).
 			Bind(getTvSerie).
-			Bind(getSeasons).
 			Finish()
 		args = arg.(gott.Tuple)
 	}




diff --git a/libamuse/serie.go b/libamuse/serie.go
index 4953bd655f2f8bc8475dbbb8cac02a43d93d19ee..5c5ca3aaec9fb9bde0baaa8f4ea07ac4de9775ea 100644
--- a/libamuse/serie.go
+++ b/libamuse/serie.go
@@ -15,17 +15,16 @@ func getTvSerie(args ...interface{}) (interface{}, error) {
 	data := args[0].(*RequestData)
 	result := args[1].(*Result)
 	languages := result.languages
-	tvSerie, err := tmdb.GetSerie(data.id, languages[0].String(), data.connection)
+	tvSerie, err := tmdb.GetSerie(data.id, languages[0].String())
 	result.result = tvSerie
 	return gott.Tuple(args), err
 }
 
 func getSeasons(args ...interface{}) (interface{}, error) {
-	data := args[0].(*RequestData)
 	result := args[1].(*Result)
 	tvSerie := result.result.(*tmdb.TvSerie)
 	languages := result.languages
-	seasons, err := tmdb.GetSeasons(tvSerie, languages[0].String(), data.connection)
+	seasons, err := tmdb.GetSeasons(tvSerie, languages[0].String())
 	tvSerie.Seasons = seasons
 	return gott.Tuple(args), err
 }
@@ -165,7 +164,6 @@ 	auth.Necessary = false
 	request := &RequestData{id: id, language: language, mimetype: mimetype, auth: auth}
 	r, err := gott.
 		NewResult(gott.Tuple{request, &Result{}}).
-		Bind(createDbConnection).
 		Bind(parseLanguage).
 		Bind(verifyToken).
 		Bind(getTvSerie).
@@ -180,10 +178,6 @@ 		Bind(getEpisodesExperiences).
 		Bind(createRenderer).
 		Map(renderSerie).
 		Finish()
-
-	if request.connection != nil {
-		request.connection.Close()
-	}
 
 	if err != nil {
 		return "", err




diff --git a/tmdb/serie.go b/tmdb/serie.go
index 50fc503df76f273677547631fd13d813921ea2ad..56bf0057bb7378fda661a33ff38a3a45883db5ac 100644
--- a/tmdb/serie.go
+++ b/tmdb/serie.go
@@ -7,11 +7,11 @@ 	"notabug.org/apiote/amuse/network"
 	"notabug.org/apiote/amuse/utils"
 	"notabug.org/apiote/amuse/wikidata"
 
-	"database/sql"
 	"encoding/json"
 	"fmt"
 	"net/http"
 	"strconv"
+	"strings"
 	"time"
 
 	"notabug.org/apiote/gott"
@@ -53,6 +53,7 @@ 	Episode_run_time   []int  `json:"episode_run_time"`
 	First_air_date_str string `json:"first_air_date"`
 	First_air_date     time.Time
 	Genres             []struct {
+		Id   int
 		Name string
 	}
 	Last_air_date_str     string `json:"last_air_date"`
@@ -78,6 +79,36 @@ 	WatchedEpisodes       int
 	AllEpisodes           int
 }
 
+func (s *TvSerie) GetItemInfo() datastructure.ItemInfo {
+	genres := ""
+	for _, genre := range s.Genres {
+		genres += fmt.Sprintf("%d", genre.Id) + ","
+	}
+
+	years := strings.Split(s.GetYears(), "–")
+	var (
+		yearStart int64 = 0
+		yearEnd   int64 = 0
+	)
+
+	yearStart, _ = strconv.ParseInt(years[0], 10, 32)
+	if len(years) > 1 {
+		yearEnd, _ = strconv.ParseInt(years[1], 10, 32)
+	}
+
+	itemInfo := datastructure.ItemInfo{
+		Cover:     s.Poster_path,
+		Status:    s.Status,
+		Title:     s.Original_name,
+		YearStart: int(yearStart),
+		YearEnd:   int(yearEnd),
+		Genres:    genres,
+		// BasedOn
+	}
+
+	return itemInfo
+}
+
 func (s *TvSerie) AddBasedOn(book wikidata.Book) {
 	s.BasedOn = book
 }
@@ -178,17 +209,17 @@ 	}
 	return gott.Tuple(args), err
 }
 
-func GetSerie(id, language string, connection *sql.DB) (*TvSerie, error) {
+func GetSerie(id, language string) (*TvSerie, error) {
 	serie, err := gott.
-		NewResult(gott.Tuple{&network.Request{Id: id, Language: language, Connection: connection}, &network.Result{}}).
+		NewResult(gott.Tuple{&network.Request{Id: id, Language: language}, &network.Result{}}).
 		Bind(createSerieRequest).
-		//Bind(getCacheEntry).
+		Bind(getCacheEntry).
 		Map(network.AddHeaders).
 		Bind(network.DoRequest).
 		Bind(network.HandleRequestError).
 		Bind(network.ReadResponse).
-		//Bind(cleanCache).
-		//Bind(saveCacheEntry).
+		Tee(cleanCache).
+		Tee(saveCacheEntry).
 		Bind(unmarshalSerie).
 		Bind(convertSerieDates).
 		Finish()
@@ -200,21 +231,21 @@ 		return serie.(gott.Tuple)[1].(*network.Result).Result.(*TvSerie), nil
 	}
 }
 
-func GetSeasons(serie *TvSerie, language string, connection *sql.DB) ([]Season, error) {
+func GetSeasons(serie *TvSerie, language string) ([]Season, error) {
 	var err error
 	var seasons []Season
 	for _, season := range serie.Seasons {
 		seasonNumber := strconv.FormatInt(int64(season.Season_number), 10)
 		s, err2 := gott.
-			NewResult(gott.Tuple{&network.Request{Id: serie.Id, Language: language, Subid: seasonNumber, Connection: connection}, &network.Result{}}).
+			NewResult(gott.Tuple{&network.Request{Id: serie.Id, Language: language, Subid: seasonNumber}, &network.Result{}}).
 			Bind(createSeasonRequest).
-			//Bind(getCacheEntry).
+			Bind(getCacheEntry).
 			Map(network.AddHeaders).
 			Bind(network.DoRequest).
 			Bind(network.HandleRequestError).
 			Bind(network.ReadResponse).
-			//Bind(cleanCache).
-			//Bind(saveCacheEntry).
+			Tee(cleanCache).
+			Tee(saveCacheEntry).
 			Bind(unmarshalSeason).
 			Bind(convertSeasonDates).
 			Finish()