package main

import (
	"sort"

	"github.com/animenotifier/arn"
	"github.com/fatih/color"
)

const maxPopularAnime = 10

// Note this is using the airing-anime as a template with modfications
// made to it.
func main() {
	color.Yellow("Caching popular anime")

	animeChan, err := arn.AllAnime()

	if err != nil {
		color.Red("Failed fetching anime channel")
		color.Red(err.Error())
		return
	}

	var animeList []*arn.Anime

	for anime := range animeChan {
		animeList = append(animeList, anime)
	}

	sort.Slice(animeList, func(i, j int) bool {
		return animeList[i].Rating.Overall > animeList[j].Rating.Overall
	})

	// Change size of anime list to 10
	animeList = animeList[:maxPopularAnime]

	// Convert to small anime list
	cache := &arn.ListOfIDs{}

	for _, anime := range animeList {
		cache.IDList = append(cache.IDList, anime.ID)
	}

	println(len(cache.IDList))

	saveErr := arn.DB.Set("Cache", "popular anime", cache)

	if saveErr != nil {
		color.Red("Error saving popular anime")
		color.Red(saveErr.Error())
		return
	}

	color.Green("Finished.")
}