1use pokeapi_macro::pokeapi_struct;
4
5use crate::{
6 Ability, Description, Move, MoveLearnMethod, Name, NamedAPIResource, PokemonSpecies, Region,
7 Type,
8};
9
10#[pokeapi_struct]
11struct Generation {
12 id: i32,
13 name: String,
14 abilities: Vec<NamedAPIResource<Ability>>,
15 names: Vec<Name>,
16 main_region: NamedAPIResource<Region>,
17 moves: Vec<NamedAPIResource<Move>>,
18 pokemon_species: Vec<NamedAPIResource<PokemonSpecies>>,
19 types: Vec<NamedAPIResource<Type>>,
20 version_groups: Vec<NamedAPIResource<VersionGroup>>,
21}
22
23#[pokeapi_struct]
24struct Pokedex {
25 id: i32,
26 name: String,
27 is_main_series: bool,
28 descriptions: Vec<Description>,
29 names: Vec<Name>,
30 pokemon_entries: Vec<PokemonEntry>,
31 region: NamedAPIResource<Region>,
32 version_groups: Vec<NamedAPIResource<VersionGroup>>,
33}
34
35#[pokeapi_struct]
36struct PokemonEntry {
37 entry_number: i32,
38 pokemon_species: NamedAPIResource<PokemonSpecies>,
39}
40
41#[pokeapi_struct]
42struct Version {
43 id: i32,
44 name: String,
45 names: Vec<Name>,
46 version_group: NamedAPIResource<VersionGroup>,
47}
48
49#[pokeapi_struct]
50struct VersionGroup {
51 id: i32,
52 name: String,
53 order: i32,
54 generation: NamedAPIResource<Generation>,
55 move_learn_methods: Vec<NamedAPIResource<MoveLearnMethod>>,
56 pokedexes: Vec<NamedAPIResource<Pokedex>>,
57 regions: Vec<NamedAPIResource<Region>>,
58 versions: Vec<NamedAPIResource<Version>>,
59}