pokeapi_model/
games.rs

1//! Game types.
2
3use 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}