package main

import (
	"encoding/json"
	"fmt"
	"io/ioutil"
	"strconv"

	"github.com/animenotifier/arn"
)

// OldMatch ...
type OldMatch struct {
	ID           int     `json:"id"`
	ServiceID    int     `json:"providerId"`
	Title        string  `json:"title"`
	ServiceTitle string  `json:"providerTitle"`
	Similarity   float64 `json:"similarity"`
	Edited       string  `json:"edited"`
	EditedBy     string  `json:"editedBy"`
}

func main() {
	matches := []OldMatch{}
	data, _ := ioutil.ReadFile("MatchKitsu.json")
	json.Unmarshal(data, &matches)

	for _, match := range matches {
		// Custom anime in 3.0
		if match.ID >= 1000000 {
			continue
		}

		// New match type
		newMatch := &arn.AniListToAnime{
			AnimeID:    strconv.Itoa(match.ServiceID),
			ServiceID:  strconv.Itoa(match.ID),
			Similarity: match.Similarity,
			Edited:     match.Edited,
			EditedBy:   match.EditedBy,
		}

		// Get anime
		anime, err := arn.GetAnime(newMatch.AnimeID)

		if err != nil {
			continue
		}

		if anime.GetMapping("anilist/anime") != "" {
			continue
		}

		anime.Mappings = append(anime.Mappings, &arn.Mapping{
			Service:   "anilist/anime",
			ServiceID: newMatch.ServiceID,
			Created:   newMatch.Edited,
			CreatedBy: newMatch.EditedBy,
		})

		// Save
		fmt.Println(anime.Title.Canonical)
		arn.PanicOnError(anime.Save())
		arn.PanicOnError(arn.DB.Set("AniListToAnime", newMatch.ServiceID, newMatch))
	}
}

// AnilistToAnime
/*
AnimeID
ServiceID

*/