package main

// Output JSON structs — identical schema to current Python output.

type GameOutput struct {
	Name        string  `json:"name"`
	Slug        string  `json:"slug"`
	Generation  int     `json:"generation"`
	Region      string  `json:"region"`
	ReleaseYear int     `json:"release_year"`
	Color       *string `json:"color"`
}

type PokemonOutput struct {
	PokeAPIID   int      `json:"pokeapi_id"`
	NationalDex int      `json:"national_dex"`
	Name        string   `json:"name"`
	Types       []string `json:"types"`
	SpriteURL   string   `json:"sprite_url"`
}

type EvolutionOutput struct {
	FromPokeAPIID int     `json:"from_pokeapi_id"`
	ToPokeAPIID   int     `json:"to_pokeapi_id"`
	Trigger       string  `json:"trigger"`
	MinLevel      *int    `json:"min_level"`
	Item          *string `json:"item"`
	HeldItem      *string `json:"held_item"`
	Condition     *string `json:"condition"`
	Region        *string `json:"region"`
}

type RouteOutput struct {
	Name       string            `json:"name"`
	Order      int               `json:"order"`
	Encounters []EncounterOutput `json:"encounters"`
	Children   []RouteOutput     `json:"children,omitempty"`
}

type EncounterOutput struct {
	PokeAPIID     int    `json:"pokeapi_id"`
	PokemonName   string `json:"pokemon_name"`
	Method        string `json:"method"`
	EncounterRate int    `json:"encounter_rate"`
	MinLevel      int    `json:"min_level"`
	MaxLevel      int    `json:"max_level"`
}
