package main

import (
	"fmt"

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

func main() {
	color.Yellow("Deleting unused characters")

	defer color.Green("Finished")
	defer arn.Node.Close()

	used := map[string]bool{}

	// Check quotes
	for quote := range arn.StreamQuotes() {
		used[quote.CharacterID] = true
	}

	// Check log
	for entry := range arn.StreamEditLogEntries() {
		if entry.ObjectType != "Character" {
			continue
		}

		used[entry.ObjectID] = true
	}

	// Check anime characters
	for list := range arn.StreamAnimeCharacters() {
		for _, animeCharacter := range list.Items {
			used[animeCharacter.CharacterID] = true
		}
	}

	characters := []*arn.Character{}

	// Delete unused characters
	for character := range arn.StreamCharacters() {
		if used[character.ID] {
			characters = append(characters, character)
		} else {
			fmt.Println("Deleting", character.ID, character)
		}
	}

	arn.DB.Clear("Character")

	for _, character := range characters {
		character.Save()
	}

	fmt.Println(len(used), len(characters))
}