mirror of
https://github.com/jcreek/LivingDexTracker.git
synced 2026-07-12 18:43:45 +00:00
feat(*): Add improvements to the UX and the data seeding
This commit is contained in:
+12
-6
@@ -1,6 +1,12 @@
|
||||
id,displayName,region,generation
|
||||
red,Red,Kanto,1
|
||||
blue,Blue,Kanto,1
|
||||
yellow,Yellow,Kanto,1
|
||||
lg--pikachu,LG: Pikachu,Kanto,7
|
||||
lg--eevee,LG: Eevee,Kanto,7
|
||||
id,displayName,region,generation,releaseYear
|
||||
red,Red,Kanto,1,1996
|
||||
blue,Blue,Kanto,1,1996
|
||||
yellow,Yellow,Kanto,1,1998
|
||||
lg--pikachu,LG: Pikachu,Kanto,7,2018
|
||||
lg--eevee,LG: Eevee,Kanto,7,2018
|
||||
gold,Gold,Johto,2,1999
|
||||
silver,Silver,Johto,2,1999
|
||||
crystal,Crystal,Johto,2,2000
|
||||
heartgold,HeartGold,Johto,4,2009
|
||||
soulsilver,SoulSilver,Johto,4,2009
|
||||
legends-arceus,Legends: Arceus,Hisui,8,2022
|
||||
|
+175
-175
@@ -1,175 +1,175 @@
|
||||
pokedexNumber,name,form,games,regionalNumber
|
||||
1,Bulbasaur,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,1
|
||||
2,Ivysaur,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,2
|
||||
3,Venusaur,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,3
|
||||
3,Venusaur,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
4,Charmander,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,4
|
||||
5,Charmeleon,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,5
|
||||
6,Charizard,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,6
|
||||
7,Squirtle,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,7
|
||||
8,Wartortle,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,8
|
||||
9,Blastoise,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,9
|
||||
10,Caterpie,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,10
|
||||
11,Metapod,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,11
|
||||
12,Butterfree,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,12
|
||||
12,Butterfree,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
13,Weedle,,Red|Blue|LG: Pikachu|LG: Eevee,13
|
||||
14,Kakuna,,Red|Blue|LG: Pikachu|LG: Eevee,14
|
||||
15,Beedrill,,Red|Blue|LG: Pikachu|LG: Eevee,15
|
||||
16,Pidgey,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,16
|
||||
17,Pidgeotto,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,17
|
||||
18,Pidgeot,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,18
|
||||
19,Rattata,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,19
|
||||
19,Rattata,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
20,Raticate,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,20
|
||||
20,Raticate,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
21,Spearow,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,21
|
||||
22,Fearow,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,22
|
||||
23,Ekans,,Red|Blue|LG: Eevee,23
|
||||
24,Arbok,,Red|Blue|LG: Eevee,24
|
||||
25,Pikachu,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,25
|
||||
25,Pikachu,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
26,Raichu,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,26
|
||||
26,Raichu,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
27,Sandshrew,,Blue|Yellow|LG: Pikachu,27
|
||||
28,Sandslash,,Blue|Yellow|LG: Pikachu,28
|
||||
29,Nidoran♀,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,29
|
||||
30,Nidorina,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,30
|
||||
31,Nidoqueen,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,31
|
||||
32,Nidoran♂,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,32
|
||||
33,Nidorino,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,33
|
||||
34,Nidoking,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,34
|
||||
35,Clefairy,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,35
|
||||
36,Clefable,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,36
|
||||
37,Vulpix,,Blue|Yellow|LG: Eevee,37
|
||||
38,Ninetales,,Blue|Yellow|LG: Eevee,38
|
||||
39,Jigglypuff,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,39
|
||||
40,Wigglytuff,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,40
|
||||
41,Zubat,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,41
|
||||
41,Zubat,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
42,Golbat,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,42
|
||||
42,Golbat,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
43,Oddish,,Red|Yellow|LG: Pikachu,43
|
||||
44,Gloom,,Red|Yellow|LG: Pikachu,44
|
||||
44,Gloom,Female,Red|Yellow|LG: Pikachu,
|
||||
45,Vileplume,,Red|Yellow|LG: Pikachu,45
|
||||
45,Vileplume,Female,Red|Yellow|LG: Pikachu,
|
||||
46,Paras,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,46
|
||||
47,Parasect,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,47
|
||||
48,Venonat,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,48
|
||||
49,Venomoth,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,49
|
||||
50,Diglett,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,50
|
||||
51,Dugtrio,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,51
|
||||
52,Meowth,,Blue|LG: Eevee,52
|
||||
53,Persian,,Blue|LG: Eevee,53
|
||||
54,Psyduck,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,54
|
||||
55,Golduck,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,55
|
||||
56,Mankey,,Red|Yellow|LG: Pikachu,56
|
||||
57,Primeape,,Red|Yellow|LG: Pikachu,57
|
||||
58,Growlithe,,Red|Yellow|LG: Pikachu,58
|
||||
59,Arcanine,,Red|Yellow|LG: Pikachu|LG: Eevee,59
|
||||
60,Poliwag,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,60
|
||||
61,Poliwhirl,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,61
|
||||
62,Poliwrath,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,62
|
||||
63,Abra,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,63
|
||||
64,Kadabra,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,64
|
||||
64,Kadabra,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
65,Alakazam,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,65
|
||||
65,Alakazam,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
66,Machop,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,66
|
||||
67,Machoke,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,67
|
||||
68,Machamp,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,68
|
||||
69,Bellsprout,,Blue|Yellow|LG: Eevee,69
|
||||
70,Weepinbell,,Blue|Yellow|LG: Eevee,70
|
||||
71,Victreebel,,Blue|Yellow|LG: Eevee,71
|
||||
72,Tentacool,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,72
|
||||
73,Tentacruel,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,73
|
||||
74,Geodude,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,74
|
||||
75,Graveler,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,75
|
||||
76,Golem,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,76
|
||||
77,Ponyta,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,77
|
||||
78,Rapidash,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,78
|
||||
79,Slowpoke,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,79
|
||||
80,Slowbro,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,80
|
||||
81,Magnemite,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,81
|
||||
82,Magneton,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,82
|
||||
83,Farfetch’d,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,83
|
||||
84,Doduo,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,84
|
||||
84,Doduo,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
85,Dodrio,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,85
|
||||
85,Dodrio,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
86,Seel,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,86
|
||||
87,Dewgong,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,87
|
||||
88,Grimer,,Red|Blue|Yellow|LG: Pikachu,88
|
||||
89,Muk,,Red|Blue|Yellow|LG: Pikachu,89
|
||||
90,Shellder,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,90
|
||||
91,Cloyster,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,91
|
||||
92,Gastly,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,92
|
||||
93,Haunter,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,93
|
||||
94,Gengar,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,94
|
||||
95,Onix,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,95
|
||||
96,Drowzee,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,96
|
||||
97,Hypno,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,97
|
||||
97,Hypno,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
98,Krabby,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,98
|
||||
99,Kingler,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,99
|
||||
100,Voltorb,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,100
|
||||
101,Electrode,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,101
|
||||
102,Exeggcute,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,102
|
||||
103,Exeggutor,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,103
|
||||
104,Cubone,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,104
|
||||
105,Marowak,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,105
|
||||
106,Hitmonlee,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,106
|
||||
107,Hitmonchan,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,107
|
||||
108,Lickitung,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,108
|
||||
109,Koffing,,Red|Blue|LG: Eevee,109
|
||||
110,Weezing,,Red|Blue|LG: Eevee,110
|
||||
111,Rhyhorn,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,111
|
||||
111,Rhyhorn,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
112,Rhydon,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,112
|
||||
112,Rhydon,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
113,Chansey,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,113
|
||||
114,Tangela,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,114
|
||||
115,Kangaskhan,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,115
|
||||
116,Horsea,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,116
|
||||
117,Seadra,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,117
|
||||
118,Goldeen,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,118
|
||||
118,Goldeen,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
119,Seaking,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,119
|
||||
119,Seaking,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
120,Staryu,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,120
|
||||
121,Starmie,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,121
|
||||
122,Mr. Mime,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,122
|
||||
123,Scyther,,Red|Yellow|LG: Pikachu,123
|
||||
123,Scyther,Female,Red|Yellow|LG: Pikachu,
|
||||
124,Jynx,,Red|Blue|LG: Pikachu|LG: Eevee,124
|
||||
125,Electabuzz,,Red|LG: Pikachu|LG: Eevee,125
|
||||
126,Magmar,,Blue|LG: Pikachu|LG: Eevee,126
|
||||
127,Pinsir,,Blue|Yellow|LG: Eevee,127
|
||||
128,Tauros,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,128
|
||||
129,Magikarp,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,129
|
||||
129,Magikarp,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
130,Gyarados,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,130
|
||||
130,Gyarados,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
131,Lapras,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,131
|
||||
132,Ditto,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,132
|
||||
133,Eevee,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,133
|
||||
133,Eevee,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
134,Vaporeon,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,134
|
||||
135,Jolteon,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,135
|
||||
136,Flareon,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,136
|
||||
137,Porygon,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,137
|
||||
138,Omanyte,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,138
|
||||
139,Omastar,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,139
|
||||
140,Kabuto,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,140
|
||||
141,Kabutops,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,141
|
||||
142,Aerodactyl,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,142
|
||||
143,Snorlax,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,143
|
||||
144,Articuno,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,144
|
||||
145,Zapdos,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,145
|
||||
146,Moltres,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,146
|
||||
147,Dratini,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,147
|
||||
148,Dragonair,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,148
|
||||
149,Dragonite,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,149
|
||||
150,Mewtwo,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,150
|
||||
151,Mew,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,151
|
||||
pokedexNumber,name,form,originGames,regionalDexGames,regionalNumber
|
||||
1,Bulbasaur,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,1
|
||||
2,Ivysaur,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,2
|
||||
3,Venusaur,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,3
|
||||
3,Venusaur,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
4,Charmander,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,4
|
||||
5,Charmeleon,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,5
|
||||
6,Charizard,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,6
|
||||
7,Squirtle,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,7
|
||||
8,Wartortle,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,8
|
||||
9,Blastoise,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,9
|
||||
10,Caterpie,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,10
|
||||
11,Metapod,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,11
|
||||
12,Butterfree,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,12
|
||||
12,Butterfree,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
13,Weedle,,Red|Blue|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,13
|
||||
14,Kakuna,,Red|Blue|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,14
|
||||
15,Beedrill,,Red|Blue|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,15
|
||||
16,Pidgey,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,16
|
||||
17,Pidgeotto,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,17
|
||||
18,Pidgeot,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,18
|
||||
19,Rattata,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,19
|
||||
19,Rattata,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
20,Raticate,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,20
|
||||
20,Raticate,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
21,Spearow,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,21
|
||||
22,Fearow,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,22
|
||||
23,Ekans,,Red|Blue|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,23
|
||||
24,Arbok,,Red|Blue|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,24
|
||||
25,Pikachu,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,25
|
||||
25,Pikachu,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
26,Raichu,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,26
|
||||
26,Raichu,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
27,Sandshrew,,Blue|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,27
|
||||
28,Sandslash,,Blue|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,28
|
||||
29,Nidoran♀,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,29
|
||||
30,Nidorina,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,30
|
||||
31,Nidoqueen,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,31
|
||||
32,Nidoran♂,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,32
|
||||
33,Nidorino,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,33
|
||||
34,Nidoking,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,34
|
||||
35,Clefairy,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,35
|
||||
36,Clefable,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,36
|
||||
37,Vulpix,,Blue|Yellow|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,37
|
||||
38,Ninetales,,Blue|Yellow|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,38
|
||||
39,Jigglypuff,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,39
|
||||
40,Wigglytuff,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,40
|
||||
41,Zubat,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,41
|
||||
41,Zubat,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
42,Golbat,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,42
|
||||
42,Golbat,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
43,Oddish,,Red|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,43
|
||||
44,Gloom,,Red|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,44
|
||||
44,Gloom,Female,Red|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
45,Vileplume,,Red|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,45
|
||||
45,Vileplume,Female,Red|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
46,Paras,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,46
|
||||
47,Parasect,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,47
|
||||
48,Venonat,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,48
|
||||
49,Venomoth,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,49
|
||||
50,Diglett,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,50
|
||||
51,Dugtrio,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,51
|
||||
52,Meowth,,Blue|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,52
|
||||
53,Persian,,Blue|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,53
|
||||
54,Psyduck,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,54
|
||||
55,Golduck,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,55
|
||||
56,Mankey,,Red|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,56
|
||||
57,Primeape,,Red|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,57
|
||||
58,Growlithe,,Red|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,58
|
||||
59,Arcanine,,Red|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,59
|
||||
60,Poliwag,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,60
|
||||
61,Poliwhirl,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,61
|
||||
62,Poliwrath,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,62
|
||||
63,Abra,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,63
|
||||
64,Kadabra,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,64
|
||||
64,Kadabra,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
65,Alakazam,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,65
|
||||
65,Alakazam,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
66,Machop,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,66
|
||||
67,Machoke,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,67
|
||||
68,Machamp,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,68
|
||||
69,Bellsprout,,Blue|Yellow|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,69
|
||||
70,Weepinbell,,Blue|Yellow|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,70
|
||||
71,Victreebel,,Blue|Yellow|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,71
|
||||
72,Tentacool,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,72
|
||||
73,Tentacruel,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,73
|
||||
74,Geodude,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,74
|
||||
75,Graveler,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,75
|
||||
76,Golem,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,76
|
||||
77,Ponyta,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,77
|
||||
78,Rapidash,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,78
|
||||
79,Slowpoke,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,79
|
||||
80,Slowbro,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,80
|
||||
81,Magnemite,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,81
|
||||
82,Magneton,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,82
|
||||
83,Farfetch’d,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,83
|
||||
84,Doduo,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,84
|
||||
84,Doduo,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
85,Dodrio,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,85
|
||||
85,Dodrio,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
86,Seel,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,86
|
||||
87,Dewgong,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,87
|
||||
88,Grimer,,Red|Blue|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,88
|
||||
89,Muk,,Red|Blue|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,89
|
||||
90,Shellder,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,90
|
||||
91,Cloyster,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,91
|
||||
92,Gastly,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,92
|
||||
93,Haunter,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,93
|
||||
94,Gengar,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,94
|
||||
95,Onix,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,95
|
||||
96,Drowzee,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,96
|
||||
97,Hypno,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,97
|
||||
97,Hypno,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
98,Krabby,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,98
|
||||
99,Kingler,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,99
|
||||
100,Voltorb,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,100
|
||||
101,Electrode,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,101
|
||||
102,Exeggcute,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,102
|
||||
103,Exeggutor,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,103
|
||||
104,Cubone,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,104
|
||||
105,Marowak,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,105
|
||||
106,Hitmonlee,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,106
|
||||
107,Hitmonchan,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,107
|
||||
108,Lickitung,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,108
|
||||
109,Koffing,,Red|Blue|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,109
|
||||
110,Weezing,,Red|Blue|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,110
|
||||
111,Rhyhorn,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,111
|
||||
111,Rhyhorn,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
112,Rhydon,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,112
|
||||
112,Rhydon,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
113,Chansey,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,113
|
||||
114,Tangela,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,114
|
||||
115,Kangaskhan,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,115
|
||||
116,Horsea,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,116
|
||||
117,Seadra,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,117
|
||||
118,Goldeen,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,118
|
||||
118,Goldeen,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
119,Seaking,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,119
|
||||
119,Seaking,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
120,Staryu,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,120
|
||||
121,Starmie,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,121
|
||||
122,Mr. Mime,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,122
|
||||
123,Scyther,,Red|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,123
|
||||
123,Scyther,Female,Red|Yellow|LG: Pikachu,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
124,Jynx,,Red|Blue|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,124
|
||||
125,Electabuzz,,Red|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,125
|
||||
126,Magmar,,Blue|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,126
|
||||
127,Pinsir,,Blue|Yellow|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,127
|
||||
128,Tauros,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,128
|
||||
129,Magikarp,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,129
|
||||
129,Magikarp,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
130,Gyarados,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,130
|
||||
130,Gyarados,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
131,Lapras,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,131
|
||||
132,Ditto,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,132
|
||||
133,Eevee,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,133
|
||||
133,Eevee,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,
|
||||
134,Vaporeon,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,134
|
||||
135,Jolteon,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,135
|
||||
136,Flareon,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,136
|
||||
137,Porygon,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,137
|
||||
138,Omanyte,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,138
|
||||
139,Omastar,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,139
|
||||
140,Kabuto,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,140
|
||||
141,Kabutops,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,141
|
||||
142,Aerodactyl,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,142
|
||||
143,Snorlax,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,143
|
||||
144,Articuno,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,144
|
||||
145,Zapdos,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,145
|
||||
146,Moltres,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,146
|
||||
147,Dratini,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,147
|
||||
148,Dragonair,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,148
|
||||
149,Dragonite,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,149
|
||||
150,Mewtwo,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,150
|
||||
151,Mew,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,151
|
||||
|
||||
|
@@ -0,0 +1,149 @@
|
||||
pokedexNumber,name,form,originGames,regionalDexGames,regionalNumber
|
||||
152,Chikorita,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,1
|
||||
153,Bayleef,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,2
|
||||
154,Meganium,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,3
|
||||
154,Meganium,Female,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
155,Cyndaquil,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,4
|
||||
156,Quilava,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,5
|
||||
157,Typhlosion,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,6
|
||||
158,Totodile,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,7
|
||||
159,Croconaw,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,8
|
||||
160,Feraligatr,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,9
|
||||
161,Sentret,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,10
|
||||
162,Furret,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,11
|
||||
163,Hoothoot,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,12
|
||||
164,Noctowl,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,13
|
||||
165,Ledyba,,Silver|Crystal|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,14
|
||||
165,Ledyba,Female,Silver|Crystal|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
166,Ledian,,Silver|Crystal|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,15
|
||||
166,Ledian,Female,Silver|Crystal|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
167,Spinarak,,Gold|Crystal|HeartGold,Gold|Silver|Crystal|HeartGold|SoulSilver,16
|
||||
168,Ariados,,Gold|Crystal|HeartGold,Gold|Silver|Crystal|HeartGold|SoulSilver,17
|
||||
169,Crobat,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Gold|Silver|Crystal|HeartGold|SoulSilver,18
|
||||
170,Chinchou,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,19
|
||||
171,Lanturn,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,20
|
||||
172,Pichu,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,21
|
||||
173,Cleffa,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,22
|
||||
174,Igglybuff,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,23
|
||||
175,Togepi,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,24
|
||||
176,Togetic,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,25
|
||||
177,Natu,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,26
|
||||
178,Xatu,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,27
|
||||
178,Xatu,Female,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
179,Mareep,,Gold|Silver|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,28
|
||||
180,Flaaffy,,Gold|Silver|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,29
|
||||
181,Ampharos,,Gold|Silver|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,30
|
||||
182,Bellossom,,Red|Yellow|LG: Pikachu,Gold|Silver|Crystal|HeartGold|SoulSilver,31
|
||||
183,Marill,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,32
|
||||
184,Azumarill,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,33
|
||||
185,Sudowoodo,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,34
|
||||
185,Sudowoodo,Female,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
186,Politoed,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Gold|Silver|Crystal|HeartGold|SoulSilver,35
|
||||
186,Politoed,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
187,Hoppip,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,36
|
||||
188,Skiploom,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,37
|
||||
189,Jumpluff,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,38
|
||||
190,Aipom,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,39
|
||||
190,Aipom,Female,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
191,Sunkern,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,40
|
||||
192,Sunflora,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,41
|
||||
193,Yanma,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,42
|
||||
194,Wooper,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,43
|
||||
194,Wooper,Female,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
195,Quagsire,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,44
|
||||
195,Quagsire,Female,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
196,Espeon,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Gold|Silver|Crystal|HeartGold|SoulSilver,45
|
||||
197,Umbreon,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Gold|Silver|Crystal|HeartGold|SoulSilver,46
|
||||
198,Murkrow,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,47
|
||||
198,Murkrow,Female,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
199,Slowking,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Gold|Silver|Crystal|HeartGold|SoulSilver,48
|
||||
200,Misdreavus,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,49
|
||||
201,Unown,A,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,50
|
||||
201,Unown,B,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
201,Unown,C,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
201,Unown,D,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
201,Unown,E,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
201,Unown,F,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
201,Unown,G,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
201,Unown,H,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
201,Unown,I,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
201,Unown,J,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
201,Unown,K,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
201,Unown,L,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
201,Unown,M,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
201,Unown,N,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
201,Unown,O,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
201,Unown,P,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
201,Unown,Q,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
201,Unown,R,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
201,Unown,S,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
201,Unown,T,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
201,Unown,U,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
201,Unown,V,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
201,Unown,W,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
201,Unown,X,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
201,Unown,Y,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
201,Unown,Z,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
201,Unown,!,HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
201,Unown,?,HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
202,Wobbuffet,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,51
|
||||
202,Wobbuffet,Female,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
203,Girafarig,,Gold|Silver|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,52
|
||||
203,Girafarig,Female,Gold|Silver|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
204,Pineco,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,53
|
||||
205,Forretress,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,54
|
||||
206,Dunsparce,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,55
|
||||
207,Gligar,,Gold|Crystal|HeartGold,Gold|Silver|Crystal|HeartGold|SoulSilver,56
|
||||
207,Gligar,Female,Gold|Crystal|HeartGold,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
208,Steelix,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Gold|Silver|Crystal|HeartGold|SoulSilver,57
|
||||
208,Steelix,Female,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
209,Snubbull,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,58
|
||||
210,Granbull,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,59
|
||||
211,Qwilfish,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,60
|
||||
212,Scizor,,Red|Yellow|LG: Pikachu,Gold|Silver|Crystal|HeartGold|SoulSilver,61
|
||||
212,Scizor,Female,Red|Yellow|LG: Pikachu,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
213,Shuckle,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,62
|
||||
214,Heracross,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,63
|
||||
214,Heracross,Female,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
215,Sneasel,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,64
|
||||
215,Sneasel,Female,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
216,Teddiursa,,Gold|Crystal|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,65
|
||||
217,Ursaring,,Gold|Crystal|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,66
|
||||
217,Ursaring,Female,Gold|Crystal|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
218,Slugma,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,67
|
||||
219,Magcargo,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,68
|
||||
220,Swinub,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,69
|
||||
221,Piloswine,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,70
|
||||
221,Piloswine,Female,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
222,Corsola,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,71
|
||||
223,Remoraid,,Gold|Silver|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,72
|
||||
224,Octillery,,Gold|Silver|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,73
|
||||
224,Octillery,Female,Gold|Silver|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
225,Delibird,,Silver|Crystal|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,74
|
||||
226,Mantine,,Gold|Crystal|HeartGold,Gold|Silver|Crystal|HeartGold|SoulSilver,75
|
||||
227,Skarmory,,Silver|Crystal|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,76
|
||||
228,Houndour,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,77
|
||||
229,Houndoom,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,78
|
||||
229,Houndoom,Female,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
230,Kingdra,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Gold|Silver|Crystal|HeartGold|SoulSilver,79
|
||||
231,Phanpy,,Silver|Crystal|HeartGold,Gold|Silver|Crystal|HeartGold|SoulSilver,80
|
||||
232,Donphan,,Silver|Crystal|HeartGold,Gold|Silver|Crystal|HeartGold|SoulSilver,81
|
||||
232,Donphan,Female,Silver|Crystal|HeartGold,Gold|Silver|Crystal|HeartGold|SoulSilver,
|
||||
234,Stantler,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,83
|
||||
235,Smeargle,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,84
|
||||
236,Tyrogue,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,85
|
||||
237,Hitmontop,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,86
|
||||
238,Smoochum,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,87
|
||||
239,Elekid,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,88
|
||||
240,Magby,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,89
|
||||
241,Miltank,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,90
|
||||
242,Blissey,,Red|Blue|Yellow|LG: Pikachu|LG: Eevee,Gold|Silver|Crystal|HeartGold|SoulSilver,91
|
||||
243,Raikou,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,92
|
||||
244,Entei,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,93
|
||||
245,Suicune,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,94
|
||||
246,Larvitar,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,95
|
||||
247,Pupitar,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,96
|
||||
248,Tyranitar,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,97
|
||||
249,Lugia,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,98
|
||||
250,Ho-Oh,,Gold|Silver|Crystal|HeartGold|SoulSilver,Gold|Silver|Crystal|HeartGold|SoulSilver,99
|
||||
251,Celebi,,Crystal,Crystal|HeartGold|SoulSilver,100
|
||||
|
@@ -113,7 +113,10 @@ function generateMigration(region) {
|
||||
|
||||
const rows = pokemon.map(p => {
|
||||
const form = p.form ? `'${p.form}'` : 'NULL';
|
||||
const gamesList = p.games.split('|');
|
||||
// Use regionalDexGames for the database (regional dex availability)
|
||||
// originGames column is for future origin dex feature
|
||||
const gamesField = p.regionalDexGames || p.games; // Fallback to old 'games' column for compatibility
|
||||
const gamesList = gamesField.split('|');
|
||||
const gamesArray = `ARRAY[${gamesList.map(g => `'${g}'`).join(', ')}]`;
|
||||
|
||||
return `(${p.pokedexNumber}, '${p.name}', ${form}, false, '${region}', ${gamesArray})`;
|
||||
@@ -124,11 +127,6 @@ function generateMigration(region) {
|
||||
|
||||
// Regional dex numbers (separate table)
|
||||
sql += `-- Insert ${region} regional dex numbers\n`;
|
||||
sql += `INSERT INTO regional_dex_numbers (\n`;
|
||||
sql += ` pokedex_entry_id,\n`;
|
||||
sql += ` region,\n`;
|
||||
sql += ` dex_number\n`;
|
||||
sql += `) VALUES\n`;
|
||||
|
||||
const dexRows = pokemon
|
||||
.filter(p => p.regionalNumber) // Only entries with regional dex numbers
|
||||
@@ -141,10 +139,15 @@ function generateMigration(region) {
|
||||
});
|
||||
|
||||
if (dexRows.length > 0) {
|
||||
sql += `INSERT INTO regional_dex_numbers (\n`;
|
||||
sql += ` pokedex_entry_id,\n`;
|
||||
sql += ` region,\n`;
|
||||
sql += ` dex_number\n`;
|
||||
sql += `) VALUES\n`;
|
||||
sql += dexRows.join(',\n');
|
||||
sql += ';\n\n';
|
||||
} else {
|
||||
sql += ' -- No regional dex numbers for this region\n\n';
|
||||
sql += '-- No regional dex numbers for this region\n\n';
|
||||
}
|
||||
|
||||
// Add metadata
|
||||
@@ -155,7 +158,7 @@ function generateMigration(region) {
|
||||
sql += ` ('${region.toLowerCase()}_pokemon_count', '${pokemon.filter(p => !p.form).length}');\n`;
|
||||
|
||||
// 4. Write file
|
||||
const timestamp = new Date().toISOString().replace(/[-:.]/g, '').slice(0, 14);
|
||||
const timestamp = new Date().toISOString().replace(/[-:T.]/g, '').slice(0, 14);
|
||||
const filename = `${timestamp}_seed_${region.toLowerCase()}.sql`;
|
||||
const outputPath = path.join(__dirname, '..', 'supabase', 'migrations', filename);
|
||||
|
||||
|
||||
@@ -31,13 +31,20 @@
|
||||
// Sanitise the pokemon name by making it all lowercase and replacing any spaces with hyphens and removing other characters
|
||||
let sanitisedPokemonName = pokemonName.toLowerCase().replace(/[^a-z]/g, '');
|
||||
|
||||
// Get the PokeApi id for the pokemon
|
||||
/**
|
||||
* Sprite Resolution Strategy:
|
||||
* 1. For forms with PokeAPI entries (regional forms): Use PokeAPI ID (e.g., 10107.png)
|
||||
* 2. For forms without PokeAPI entries (Unown, Burmy, etc.): Use {pokedexNumber}-{form} (e.g., 201-a.png)
|
||||
* 3. For base forms: Use PokeAPI ID matching species_id
|
||||
*/
|
||||
let pokeApiId;
|
||||
if (form && form.length > 0 && form !== 'Female') {
|
||||
// Sanitise the form by making it all lowercase and replacing spaces with hyphens
|
||||
let sanitisedForm = form
|
||||
.toLowerCase()
|
||||
.replaceAll(' ', '-')
|
||||
.replaceAll('!', 'exclamation')
|
||||
.replaceAll('?', 'question')
|
||||
.replaceAll('2', 'two')
|
||||
.replaceAll('3', 'three')
|
||||
.replaceAll('4', 'four');
|
||||
@@ -59,20 +66,17 @@
|
||||
break;
|
||||
}
|
||||
|
||||
// If the form is contained in the identifier, use that
|
||||
if (
|
||||
pokeApiPokemon.find(
|
||||
(pokemon) => pokemon.identifier === sanitisedPokemonName + '-' + sanitisedForm
|
||||
)
|
||||
) {
|
||||
pokeApiId = pokeApiPokemon.find(
|
||||
(pokemon) => pokemon.identifier === sanitisedPokemonName + '-' + sanitisedForm
|
||||
)?.id;
|
||||
// Try to find by PokeAPI identifier (e.g., "meowth-alola" -> 10107)
|
||||
const pokeApiEntry = pokeApiPokemon.find(
|
||||
(pokemon) => pokemon.identifier === sanitisedPokemonName + '-' + sanitisedForm
|
||||
);
|
||||
|
||||
if (pokeApiEntry) {
|
||||
// Pattern 1: Use PokeAPI ID (e.g., 10107.png for Meowth-Alola)
|
||||
pokeApiId = pokeApiEntry.id;
|
||||
} else {
|
||||
// If the form is not contained in the identifier, use the species_id
|
||||
pokeApiId = pokeApiPokemon.find(
|
||||
(pokemon) => pokemon.species_id.toString() === strippedPokedexNumber
|
||||
)?.id;
|
||||
// Pattern 2: Use {pokedexNumber}-{form} (e.g., 201-a.png for Unown-A)
|
||||
pokeApiId = `${strippedPokedexNumber}-${sanitisedForm}`;
|
||||
}
|
||||
} else {
|
||||
pokeApiId = pokeApiPokemon.find(
|
||||
|
||||
@@ -139,6 +139,7 @@
|
||||
bind:value={catchRecord.personalNotes}
|
||||
id={`personalNotesInput-${catchRecord._id || pokedexEntry._id}`}
|
||||
class="form-textarea w-full p-2 border rounded"
|
||||
style="min-height: 120px;"
|
||||
on:change={updateCatchRecord}
|
||||
></textarea>
|
||||
</p>
|
||||
@@ -199,7 +200,8 @@
|
||||
|
||||
<style>
|
||||
.dex-column {
|
||||
width: 300px;
|
||||
flex: 1;
|
||||
min-width: 250px;
|
||||
}
|
||||
|
||||
.sprite-container {
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<script lang="ts">
|
||||
import { onMount } from 'svelte';
|
||||
import type { Pokedex } from '$lib/models/Pokedex';
|
||||
|
||||
export let pokedex: Partial<Pokedex> = {
|
||||
@@ -14,6 +15,26 @@
|
||||
export let onSubmit: () => void;
|
||||
export let onCancel: () => void;
|
||||
|
||||
let games: string[] = [];
|
||||
let loadingGames = true;
|
||||
|
||||
// Fetch available games from the database
|
||||
onMount(async () => {
|
||||
try {
|
||||
const response = await fetch('/api/games');
|
||||
if (response.ok) {
|
||||
const data = await response.json();
|
||||
games = data.games || [];
|
||||
} else {
|
||||
console.error('Failed to fetch games');
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Error fetching games:', error);
|
||||
} finally {
|
||||
loadingGames = false;
|
||||
}
|
||||
});
|
||||
|
||||
// Validation
|
||||
$: hasAtLeastOneType =
|
||||
pokedex.isLivingDex || pokedex.isShinyDex || pokedex.isOriginDex || pokedex.isFormDex;
|
||||
@@ -83,15 +104,20 @@
|
||||
<label class="label" for="game-scope">
|
||||
<span class="label-text">Game Scope</span>
|
||||
</label>
|
||||
<select id="game-scope" class="select select-bordered" bind:value={pokedex.gameScope}>
|
||||
<select
|
||||
id="game-scope"
|
||||
class="select select-bordered"
|
||||
bind:value={pokedex.gameScope}
|
||||
disabled={loadingGames}
|
||||
>
|
||||
<option value={null}>All Games</option>
|
||||
<option value="Scarlet">Scarlet</option>
|
||||
<option value="Violet">Violet>
|
||||
<option value="Sword">Sword</option>
|
||||
<option value="Shield">Shield</option>
|
||||
<option value="Brilliant Diamond">Brilliant Diamond</option>
|
||||
<option value="Shining Pearl">Shining Pearl</option>
|
||||
<option value="Legends: Arceus">Legends: Arceus</option>
|
||||
{#if loadingGames}
|
||||
<option disabled>Loading games...</option>
|
||||
{:else}
|
||||
{#each games as game}
|
||||
<option value={game}>{game}</option>
|
||||
{/each}
|
||||
{/if}
|
||||
</select>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -0,0 +1,109 @@
|
||||
<script lang="ts">
|
||||
import { onMount, onDestroy } from 'svelte';
|
||||
|
||||
export let isOpen: boolean;
|
||||
export let onClose: () => void;
|
||||
|
||||
function handleBackdropClick() {
|
||||
onClose();
|
||||
}
|
||||
|
||||
function handleKeyDown(event: KeyboardEvent) {
|
||||
if (event.key === 'Escape' && isOpen) {
|
||||
onClose();
|
||||
}
|
||||
}
|
||||
|
||||
onMount(() => {
|
||||
window.addEventListener('keydown', handleKeyDown);
|
||||
});
|
||||
|
||||
onDestroy(() => {
|
||||
window.removeEventListener('keydown', handleKeyDown);
|
||||
});
|
||||
</script>
|
||||
|
||||
{#if isOpen}
|
||||
<div class="modal modal-open" role="dialog" aria-modal="true">
|
||||
<div class="modal-box-custom">
|
||||
<button class="close-button" on:click={onClose} aria-label="Close"> ✕ </button>
|
||||
<div class="modal-content">
|
||||
<slot />
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
class="modal-backdrop bg-black/50"
|
||||
on:click={handleBackdropClick}
|
||||
on:keydown={() => {}}
|
||||
></div>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<style>
|
||||
.modal-backdrop {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.modal-box-custom {
|
||||
max-width: 72rem;
|
||||
width: 100%;
|
||||
max-height: 90vh;
|
||||
background-color: rgba(220, 38, 38, 0.95);
|
||||
border: none;
|
||||
box-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.5);
|
||||
outline: none;
|
||||
position: relative;
|
||||
border-radius: 1rem;
|
||||
padding: 0.5rem;
|
||||
overflow-y: auto;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.close-button {
|
||||
position: absolute;
|
||||
right: 1rem;
|
||||
top: 1rem;
|
||||
width: 2.5rem;
|
||||
height: 2.5rem;
|
||||
border-radius: 50%;
|
||||
background-color: rgba(0, 0, 0, 0.3);
|
||||
color: white;
|
||||
border: 2px solid rgba(255, 255, 255, 0.3);
|
||||
font-size: 1.5rem;
|
||||
font-weight: bold;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
transition: all 0.2s;
|
||||
z-index: 10;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.close-button:hover {
|
||||
background-color: rgba(0, 0, 0, 0.5);
|
||||
border-color: rgba(255, 255, 255, 0.5);
|
||||
transform: scale(1.1);
|
||||
}
|
||||
|
||||
.modal-content {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* Remove margin and background from card inside modal */
|
||||
.modal-content :global(.dex-entry) {
|
||||
margin-bottom: 0;
|
||||
background-color: transparent !important;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
.modal-box-custom {
|
||||
width: 91.666667%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -1,149 +0,0 @@
|
||||
<script lang="ts">
|
||||
import Pagination from '$lib/components/Pagination.svelte';
|
||||
import type { Pokedex } from '$lib/models/Pokedex';
|
||||
|
||||
export let pokedex: Pokedex | null = null;
|
||||
export let viewAsBoxes = false;
|
||||
export let currentPage = 1;
|
||||
export let itemsPerPage = 20;
|
||||
export let totalPages = 0;
|
||||
export let showOrigins = true;
|
||||
export let showShiny = false;
|
||||
export let catchRegion = '';
|
||||
export let catchGame = '';
|
||||
export let toggleOrigins = () => {};
|
||||
export let toggleShiny = () => {};
|
||||
export let getData = () => {};
|
||||
export let toggleViewAsBoxes = () => {};
|
||||
|
||||
// Get active type badges
|
||||
$: typeBadges = pokedex
|
||||
? [
|
||||
pokedex.isLivingDex && 'Living',
|
||||
pokedex.isShinyDex && 'Shiny',
|
||||
pokedex.isOriginDex && 'Origin',
|
||||
pokedex.isFormDex && 'Form'
|
||||
].filter(Boolean)
|
||||
: [];
|
||||
</script>
|
||||
|
||||
<aside
|
||||
class="menu bg-gray-800 text-white min-h-full w-64 p-4 lg:fixed xs:top-0 lg:left-0 h-full lg:h-5/6"
|
||||
>
|
||||
<!-- Pokédex Info Section -->
|
||||
{#if pokedex}
|
||||
<div class="mb-6 pb-4 border-b border-gray-700">
|
||||
<h2 class="text-xl font-semibold mb-2">{pokedex.name}</h2>
|
||||
<div class="flex flex-wrap gap-1 mb-2">
|
||||
{#each typeBadges as badge}
|
||||
<span class="badge badge-sm badge-primary">{badge}</span>
|
||||
{/each}
|
||||
</div>
|
||||
{#if pokedex.gameScope}
|
||||
<p class="text-sm text-gray-400">Game: {pokedex.gameScope}</p>
|
||||
{/if}
|
||||
<a href="/my-pokedexes" class="btn btn-ghost btn-sm mt-2 w-full"> Manage Pokédexes </a>
|
||||
</div>
|
||||
{/if}
|
||||
<h2 class="text-2xl font-semibold mb-4">Views</h2>
|
||||
<ul>
|
||||
<li class="mb-2">
|
||||
<button class="block p-2 hover:bg-gray-700 rounded" on:click={toggleViewAsBoxes}>
|
||||
{viewAsBoxes ? 'Switch to List View' : 'Switch to Box View'}
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
<h2 class="text-2xl font-semibold mb-4">Filters</h2>
|
||||
<ul>
|
||||
<li class="mb-2">
|
||||
<button class="block p-2 hover:bg-gray-700 rounded" on:click={toggleOrigins}>
|
||||
Toggle Origins (Currently {showOrigins ? 'On' : 'Off'})
|
||||
</button>
|
||||
</li>
|
||||
<li class="mb-2">
|
||||
<button class="block p-2 hover:bg-gray-700 rounded" on:click={toggleShiny}>
|
||||
Toggle Shiny (Currently {showShiny ? 'On' : 'Off'})
|
||||
</button>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="mb-4">
|
||||
<label for="catchRegionSelect">Region to catch in:</label>
|
||||
<select
|
||||
id="catchRegionSelect"
|
||||
class="select select-bordered w-full max-w-xs text-black"
|
||||
bind:value={catchRegion}
|
||||
on:change={getData}
|
||||
>
|
||||
<option value="">All</option>
|
||||
<option value="Kanto">Kanto (Red, Blue, Yellow, LG: Pikachu, LG: Eevee)</option>
|
||||
<option value="Johto">Johto (Gold, Silver, Crystal, HG, SS)</option>
|
||||
<option value="Hoenn">Hoenn (Ruby, Sapphire, Emerald, OR, AS)</option>
|
||||
<option value="Sinnoh">Sinnoh (Diamond, Pearl, Platinum, BD, SP)</option>
|
||||
<option value="Unova">Unova (Black, White, Black2, White2, Dream Radar)</option>
|
||||
<option value="Kalos">Kalos (X, Y)</option>
|
||||
<option value="Alola">Alola (Sun, Moon, Moon Demo, US, UM)</option>
|
||||
<option value="Galar">Galar (Sword, Shield)</option>
|
||||
<option value="Hisui">Hisui (PLA)</option>
|
||||
<option value="Paldea">Paldea (Scarlet, Violet)</option>
|
||||
<option value="Unknown">Unknown (Home, Go)</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="mb-4">
|
||||
<label for="catchGameSelect">Game to catch in: {catchGame}</label>
|
||||
<select
|
||||
id="catchGameSelect"
|
||||
class="select select-bordered w-full max-w-xs text-black"
|
||||
bind:value={catchGame}
|
||||
on:change={getData}
|
||||
>
|
||||
<option value="">All</option>
|
||||
<option value="Red">Red (Kanto)</option>
|
||||
<option value="Blue">Blue (Kanto)</option>
|
||||
<option value="Yellow">Yellow (Kanto)</option>
|
||||
<option value="LG: Pikachu">LG: Pikachu (Kanto)</option>
|
||||
<option value="LG: Eevee">LG: Eevee (Kanto)</option>
|
||||
<option value="Gold">Gold (Johto)</option>
|
||||
<option value="Silver">Silver (Johto)</option>
|
||||
<option value="Crystal">Crystal (Johto)</option>
|
||||
<option value="HG">HG (Johto)</option>
|
||||
<option value="SS">SS (Johto)</option>
|
||||
<option value="Ruby">Ruby (Hoenn)</option>
|
||||
<option value="Sapphire">Sapphire (Hoenn)</option>
|
||||
<option value="Emerald">Emerald (Hoenn)</option>
|
||||
<option value="OR">OR (Hoenn)</option>
|
||||
<option value="AS">AS (Hoenn)</option>
|
||||
<option value="Diamond">Diamond (Sinnoh)</option>
|
||||
<option value="Pearl">Pearl (Sinnoh)</option>
|
||||
<option value="Platinum">Platinum (Sinnoh)</option>
|
||||
<option value="BD">BD (Sinnoh)</option>
|
||||
<option value="SP">SP (Sinnoh)</option>
|
||||
<option value="Black">Black (Unova)</option>
|
||||
<option value="White">White (Unova)</option>
|
||||
<option value="Black2">Black2 (Unova)</option>
|
||||
<option value="White2">White2 (Unova)</option>
|
||||
<option value="Dream Radar">Dream Radar (Unova)</option>
|
||||
<option value="X">X (Kalos)</option>
|
||||
<option value="Y">Y (Kalos)</option>
|
||||
<option value="Sun">Sun (Alola)</option>
|
||||
<option value="Moon">Moon (Alola)</option>
|
||||
<option value="Moon Demo">Moon Demo (Alola)</option>
|
||||
<option value="US">US (Alola)</option>
|
||||
<option value="UM">UM (Alola)</option>
|
||||
<option value="Sword">Sword (Galar)</option>
|
||||
<option value="Shield">Shield (Galar)</option>
|
||||
<option value="PLA">PLA (Hisui)</option>
|
||||
<option value="Scarlet">Scarlet (Paldea)</option>
|
||||
<option value="Violet">Violet (Paldea)</option>
|
||||
<option value="Home">Home (Unknown)</option>
|
||||
<option value="Go">Go (Unknown)</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
{#if !viewAsBoxes}
|
||||
<h2 class="text-2xl font-semibold mb-4">Paging</h2>
|
||||
<div>
|
||||
<Pagination bind:currentPage bind:itemsPerPage bind:totalPages />
|
||||
</div>
|
||||
{/if}
|
||||
</aside>
|
||||
@@ -18,6 +18,7 @@
|
||||
export let markBoxAsInHome = (boxNumber: number) => {};
|
||||
export let markBoxAsNotInHome = (boxNumber: number) => {};
|
||||
export let createCatchRecords = () => {};
|
||||
export let onPokemonClick: (pokemon: CombinedData) => void = () => {};
|
||||
|
||||
function cellBackgroundColourClass(catchRecord: CatchRecord | null) {
|
||||
if (catchRecord?.caught) {
|
||||
@@ -51,19 +52,19 @@
|
||||
{#each boxNumbers as boxNumber}
|
||||
<div class="mb-8 md:w-1/2 px-2">
|
||||
<h2 class="text-xl font-bold mb-4">Box {boxNumber}</h2>
|
||||
<button class="btn" on:click={markBoxAsNotCaught(boxNumber)}>
|
||||
<button class="btn" on:click={() => markBoxAsNotCaught(boxNumber)}>
|
||||
Mark box as not 'caught'
|
||||
</button>
|
||||
<button class="btn" on:click={markBoxAsCaught(boxNumber)}>
|
||||
<button class="btn" on:click={() => markBoxAsCaught(boxNumber)}>
|
||||
Mark box as 'caught'
|
||||
</button>
|
||||
<button class="btn" on:click={markBoxAsNeedsToEvolve(boxNumber)}
|
||||
<button class="btn" on:click={() => markBoxAsNeedsToEvolve(boxNumber)}
|
||||
>Mark box as 'needs to evolve'</button
|
||||
>
|
||||
<button class="btn" on:click={markBoxAsInHome(boxNumber)}
|
||||
<button class="btn" on:click={() => markBoxAsInHome(boxNumber)}
|
||||
>Mark box as 'in Home'</button
|
||||
>
|
||||
<button class="btn" on:click={markBoxAsNotInHome(boxNumber)}
|
||||
<button class="btn" on:click={() => markBoxAsNotInHome(boxNumber)}
|
||||
>Mark box as not 'in Home'</button
|
||||
>
|
||||
<div class="grid grid-cols-6">
|
||||
@@ -72,10 +73,13 @@
|
||||
? pokedexEntry.boxPlacementForms
|
||||
: pokedexEntry.boxPlacement}
|
||||
{#if placement.box === boxNumber}
|
||||
<div
|
||||
class="pokemon-box {cellBackgroundColourClass(catchRecord)}"
|
||||
<button
|
||||
type="button"
|
||||
class="pokemon-box {cellBackgroundColourClass(catchRecord)} hover:scale-105 hover:shadow-lg hover:z-50 transition-all cursor-pointer relative"
|
||||
style="grid-column-start: {placement.column}; grid-row-start: {placement.row};
|
||||
{cellBackgroundColourStyle(pokedexEntry, catchRecord)}"
|
||||
on:click={() => onPokemonClick({ pokedexEntry, catchRecord })}
|
||||
aria-label="View details for {pokedexEntry.pokemon}"
|
||||
>
|
||||
<Tooltip>
|
||||
<div slot="hover-target">
|
||||
@@ -106,7 +110,7 @@
|
||||
</div>
|
||||
</div>
|
||||
</Tooltip>
|
||||
</div>
|
||||
</button>
|
||||
{/if}
|
||||
{/each}
|
||||
</div>
|
||||
|
||||
@@ -1,55 +0,0 @@
|
||||
<script lang="ts">
|
||||
import PokedexEntryCatchRecord from './PokedexEntryCatchRecord.svelte';
|
||||
import type { CombinedData } from '$lib/models/CombinedData';
|
||||
|
||||
export let showOrigins = true;
|
||||
export let showForms = true;
|
||||
export let showShiny = false;
|
||||
export let combinedData: CombinedData[] | null;
|
||||
export let creatingRecords = false;
|
||||
export let totalRecordsCreated = 0;
|
||||
export let failedToLoad = false;
|
||||
export let updateACatch = (event: any) => {};
|
||||
export let createCatchRecords = () => {};
|
||||
export let userId: string | null = null;
|
||||
export let pokedexId: string;
|
||||
</script>
|
||||
|
||||
<main class="flex-1 p-4 w-full">
|
||||
<div class="max-w-min mx-auto">
|
||||
{#if combinedData && combinedData.length > 0}
|
||||
{#each combinedData as { pokedexEntry, catchRecord }}
|
||||
<PokedexEntryCatchRecord
|
||||
{pokedexEntry}
|
||||
{showOrigins}
|
||||
{showForms}
|
||||
{showShiny}
|
||||
{userId}
|
||||
{pokedexId}
|
||||
bind:catchRecord
|
||||
on:updateCatch={updateACatch}
|
||||
/>
|
||||
{/each}
|
||||
{:else if failedToLoad}
|
||||
{#if creatingRecords && totalRecordsCreated > 0}
|
||||
<p>Processed {totalRecordsCreated} Pokédex entries so far...</p>
|
||||
<p>Please be patient, this may take some time.</p>
|
||||
{:else if creatingRecords}
|
||||
<p>Processing...</p>
|
||||
<p>Please be patient, this may take some time.</p>
|
||||
{:else}
|
||||
<h1>Failed to load</h1>
|
||||
<p>
|
||||
If you're seeing this, you probably haven't created your Pokédex data yet. Please do so by
|
||||
clicking this button.
|
||||
</p>
|
||||
<button class="btn" on:click={createCatchRecords}>Create Pokédex data</button>
|
||||
{/if}
|
||||
{:else}
|
||||
<div class="min-w-max mx-auto">
|
||||
<h1>Loading Pokédex</h1>
|
||||
<span class="loading loading-spinner loading-xl"></span>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
</main>
|
||||
@@ -12,23 +12,7 @@ export interface PokedexEntry {
|
||||
regionToEvolveIn: string;
|
||||
evolutionInformation: string;
|
||||
catchInformation: string[];
|
||||
// Regional dex numbers
|
||||
kantoDexNumber?: number;
|
||||
johtoDexNumber?: number;
|
||||
hoennDexNumber?: number;
|
||||
sinnohDexNumber?: number;
|
||||
unovaBwDexNumber?: number;
|
||||
unovaB2w2DexNumber?: number;
|
||||
kalosCentralDexNumber?: number;
|
||||
kalosCoastalDexNumber?: number;
|
||||
kalosMountainDexNumber?: number;
|
||||
alolaSmDexNumber?: number;
|
||||
alolaUsumDexNumber?: number;
|
||||
galarDexNumber?: number;
|
||||
galarIsleOfArmorDexNumber?: number;
|
||||
galarCrownTundraDexNumber?: number;
|
||||
hisuiDexNumber?: number;
|
||||
paldeaDexNumber?: number;
|
||||
// Note: Regional dex numbers stored in separate regional_dex_numbers table
|
||||
}
|
||||
|
||||
// Database record type for Supabase
|
||||
@@ -43,23 +27,7 @@ export interface PokedexEntryDB {
|
||||
regionToEvolveIn: string | null;
|
||||
evolutionInformation: string | null;
|
||||
catchInformation: string[] | null;
|
||||
// Regional dex numbers - snake_case to match database
|
||||
kanto_dex_number: number | null;
|
||||
johto_dex_number: number | null;
|
||||
hoenn_dex_number: number | null;
|
||||
sinnoh_dex_number: number | null;
|
||||
unova_bw_dex_number: number | null;
|
||||
unova_b2w2_dex_number: number | null;
|
||||
kalos_central_dex_number: number | null;
|
||||
kalos_coastal_dex_number: number | null;
|
||||
kalos_mountain_dex_number: number | null;
|
||||
alola_sm_dex_number: number | null;
|
||||
alola_usum_dex_number: number | null;
|
||||
galar_dex_number: number | null;
|
||||
galar_isle_of_armor_dex_number: number | null;
|
||||
galar_crown_tundra_dex_number: number | null;
|
||||
hisui_dex_number: number | null;
|
||||
paldea_dex_number: number | null;
|
||||
// Note: Regional dex numbers stored in separate regional_dex_numbers table
|
||||
createdAt: string;
|
||||
updatedAt: string;
|
||||
}
|
||||
|
||||
@@ -2,8 +2,6 @@ import { type PokedexEntry, type PokedexEntryDB } from '$lib/models/PokedexEntry
|
||||
import { type CatchRecord, type CatchRecordDB } from '$lib/models/CatchRecord';
|
||||
import { type CombinedData } from '$lib/models/CombinedData';
|
||||
import type { SupabaseClient } from '@supabase/supabase-js';
|
||||
import { getRegionalDexColumnName } from '$lib/utils/regionalDexMapping';
|
||||
import { calculateBoxPlacement } from '$lib/utils/boxPlacement';
|
||||
|
||||
class CombinedDataRepository {
|
||||
constructor(
|
||||
@@ -27,23 +25,8 @@ class CombinedDataRepository {
|
||||
catchInformation: entry.catchInformation || [],
|
||||
// Box placement will be calculated dynamically after sorting
|
||||
boxPlacementForms: { box: 0, row: 0, column: 0 },
|
||||
boxPlacement: { box: 0, row: 0, column: 0 },
|
||||
kantoDexNumber: entry.kanto_dex_number ?? undefined,
|
||||
johtoDexNumber: entry.johto_dex_number ?? undefined,
|
||||
hoennDexNumber: entry.hoenn_dex_number ?? undefined,
|
||||
sinnohDexNumber: entry.sinnoh_dex_number ?? undefined,
|
||||
unovaBwDexNumber: entry.unova_bw_dex_number ?? undefined,
|
||||
unovaB2w2DexNumber: entry.unova_b2w2_dex_number ?? undefined,
|
||||
kalosCentralDexNumber: entry.kalos_central_dex_number ?? undefined,
|
||||
kalosCoastalDexNumber: entry.kalos_coastal_dex_number ?? undefined,
|
||||
kalosMountainDexNumber: entry.kalos_mountain_dex_number ?? undefined,
|
||||
alolaSmDexNumber: entry.alola_sm_dex_number ?? undefined,
|
||||
alolaUsumDexNumber: entry.alola_usum_dex_number ?? undefined,
|
||||
galarDexNumber: entry.galar_dex_number ?? undefined,
|
||||
galarIsleOfArmorDexNumber: entry.galar_isle_of_armor_dex_number ?? undefined,
|
||||
galarCrownTundraDexNumber: entry.galar_crown_tundra_dex_number ?? undefined,
|
||||
hisuiDexNumber: entry.hisui_dex_number ?? undefined,
|
||||
paldeaDexNumber: entry.paldea_dex_number ?? undefined
|
||||
boxPlacement: { box: 0, row: 0, column: 0 }
|
||||
// Note: Regional dex numbers are stored in separate regional_dex_numbers table
|
||||
};
|
||||
}
|
||||
|
||||
@@ -71,8 +54,8 @@ class CombinedDataRepository {
|
||||
|
||||
// Apply filters
|
||||
if (!enableForms) {
|
||||
// Filter to only base forms (form is NULL)
|
||||
query = query.is('form', null);
|
||||
// Filter to only base forms (form is NULL) OR Unown "A" (since Unown has no base form)
|
||||
query = query.or('form.is.null,and(pokemon.eq.Unown,form.eq.A)');
|
||||
}
|
||||
|
||||
if (region) {
|
||||
@@ -83,22 +66,9 @@ class CombinedDataRepository {
|
||||
query = query.contains('gamesToCatchIn', [game]);
|
||||
}
|
||||
|
||||
// Determine ordering strategy based on game filter
|
||||
if (game) {
|
||||
const regionalColumn = getRegionalDexColumnName(game);
|
||||
if (regionalColumn) {
|
||||
// Order by regional dex with national dex fallback for NULLs
|
||||
query = query
|
||||
.order(regionalColumn, { ascending: true, nullsFirst: false })
|
||||
.order('pokedexNumber', { ascending: true });
|
||||
} else {
|
||||
// Game specified but has no regional dex mapping
|
||||
query = query.order('pokedexNumber', { ascending: true });
|
||||
}
|
||||
} else {
|
||||
// No game filter - order by national dex number
|
||||
query = query.order('pokedexNumber', { ascending: true });
|
||||
}
|
||||
// Always order by national dex number
|
||||
// Note: Regional dex ordering would require joining with regional_dex_numbers table
|
||||
query = query.order('pokedexNumber', { ascending: true });
|
||||
|
||||
const { data: entries, error: entriesError } = await query;
|
||||
|
||||
@@ -162,8 +132,8 @@ class CombinedDataRepository {
|
||||
|
||||
// Apply filters
|
||||
if (!enableForms) {
|
||||
// Filter to only base forms (form is NULL)
|
||||
query = query.is('form', null);
|
||||
// Filter to only base forms (form is NULL) OR Unown "A" (since Unown has no base form)
|
||||
query = query.or('form.is.null,and(pokemon.eq.Unown,form.eq.A)');
|
||||
}
|
||||
|
||||
if (region) {
|
||||
@@ -174,22 +144,9 @@ class CombinedDataRepository {
|
||||
query = query.contains('gamesToCatchIn', [game]);
|
||||
}
|
||||
|
||||
// Determine ordering strategy based on game filter
|
||||
if (game) {
|
||||
const regionalColumn = getRegionalDexColumnName(game);
|
||||
if (regionalColumn) {
|
||||
// Order by regional dex with national dex fallback for NULLs
|
||||
query = query
|
||||
.order(regionalColumn, { ascending: true, nullsFirst: false })
|
||||
.order('pokedexNumber', { ascending: true });
|
||||
} else {
|
||||
// Game specified but has no regional dex mapping
|
||||
query = query.order('pokedexNumber', { ascending: true });
|
||||
}
|
||||
} else {
|
||||
// No game filter - order by national dex number
|
||||
query = query.order('pokedexNumber', { ascending: true });
|
||||
}
|
||||
// Always order by national dex number
|
||||
// Note: Regional dex ordering would require joining with regional_dex_numbers table
|
||||
query = query.order('pokedexNumber', { ascending: true });
|
||||
|
||||
const { data: entries, error: entriesError } = await query;
|
||||
|
||||
@@ -247,8 +204,8 @@ class CombinedDataRepository {
|
||||
|
||||
// Apply same filters as in findCombinedData
|
||||
if (!enableForms) {
|
||||
// Filter to only base forms (form is NULL)
|
||||
query = query.is('form', null);
|
||||
// Filter to only base forms (form is NULL) OR Unown "A" (since Unown has no base form)
|
||||
query = query.or('form.is.null,and(pokemon.eq.Unown,form.eq.A)');
|
||||
}
|
||||
|
||||
if (region) {
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
import { json } from '@sveltejs/kit';
|
||||
import type { RequestHandler } from './$types';
|
||||
|
||||
/**
|
||||
* GET /api/games
|
||||
* Returns all games from the games table, sorted by release year descending (newest first)
|
||||
*/
|
||||
export const GET: RequestHandler = async ({ locals }) => {
|
||||
const { supabase } = locals;
|
||||
|
||||
try {
|
||||
// Query games table for all games, sorted by release year descending
|
||||
const { data, error } = await supabase
|
||||
.from('games')
|
||||
.select('displayName, releaseYear')
|
||||
.order('releaseYear', { ascending: false })
|
||||
.order('displayName', { ascending: true }); // Secondary sort by name for same year
|
||||
|
||||
if (error) {
|
||||
console.error('Error fetching games:', error);
|
||||
return json({ error: 'Failed to fetch games' }, { status: 500 });
|
||||
}
|
||||
|
||||
// Extract just the display names
|
||||
const gameNames = data.map((row) => row.displayName);
|
||||
|
||||
return json({ games: gameNames });
|
||||
} catch (err) {
|
||||
console.error('Unexpected error fetching games:', err);
|
||||
return json({ error: 'Internal server error' }, { status: 500 });
|
||||
}
|
||||
};
|
||||
@@ -5,9 +5,9 @@
|
||||
import { type CombinedData } from '$lib/models/CombinedData';
|
||||
import { browser } from '$app/environment';
|
||||
import type { PokedexEntry } from '$lib/models/PokedexEntry';
|
||||
import PokedexSidebar from '$lib/components/pokedex/PokedexSidebar.svelte';
|
||||
import PokedexViewList from '$lib/components/pokedex/PokedexViewList.svelte';
|
||||
import PokedexViewBoxes from '$lib/components/pokedex/PokedexViewBoxes.svelte';
|
||||
import PokedexModal from '$lib/components/pokedex/PokedexModal.svelte';
|
||||
import PokedexEntryCatchRecord from '$lib/components/pokedex/PokedexEntryCatchRecord.svelte';
|
||||
import type { PageData } from './$types';
|
||||
|
||||
export let data: PageData;
|
||||
@@ -23,40 +23,49 @@
|
||||
let creatingRecords = false;
|
||||
let totalRecordsCreated = 0;
|
||||
let failedToLoad = false;
|
||||
let catchRegion = '';
|
||||
let catchGame = '';
|
||||
let localUser: User | null;
|
||||
let showOrigins = true;
|
||||
let showShiny = false;
|
||||
let drawerOpen = false;
|
||||
let viewAsBoxes = false;
|
||||
let boxNumbers: number[] = [];
|
||||
let showModal = false;
|
||||
let selectedPokemon: CombinedData | null = null;
|
||||
|
||||
// Derive from pokedex config
|
||||
$: showOrigins = pokedex.isOriginDex;
|
||||
$: showShiny = pokedex.isShinyDex;
|
||||
|
||||
const unsubscribe = user.subscribe((value) => {
|
||||
localUser = value;
|
||||
});
|
||||
onDestroy(unsubscribe);
|
||||
|
||||
function toggleOrigins() {
|
||||
showOrigins = !showOrigins;
|
||||
function openPokemonModal(pokemon: CombinedData) {
|
||||
selectedPokemon = pokemon;
|
||||
showModal = true;
|
||||
}
|
||||
|
||||
async function toggleShiny() {
|
||||
showShiny = !showShiny;
|
||||
await getData();
|
||||
function closePokemonModal() {
|
||||
showModal = false;
|
||||
selectedPokemon = null;
|
||||
}
|
||||
|
||||
async function toggleViewAsBoxes() {
|
||||
viewAsBoxes = !viewAsBoxes;
|
||||
await getData();
|
||||
async function handleModalCatchUpdate(event: any) {
|
||||
await updateACatch(event); // Existing handler
|
||||
// Sync modal with refreshed data
|
||||
if (selectedPokemon && combinedData) {
|
||||
const updated = combinedData.find(
|
||||
(cd) => cd.pokedexEntry._id === selectedPokemon!.pokedexEntry._id
|
||||
);
|
||||
if (updated) {
|
||||
selectedPokemon = updated;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async function getData(setCombinedDataToNull = true) {
|
||||
if (setCombinedDataToNull) {
|
||||
combinedData = null;
|
||||
}
|
||||
// Use new pokédex-scoped endpoint
|
||||
let endpoint = `/api/pokedexes/${pokedexId}/combined-data?page=${currentPage}&limit=${viewAsBoxes ? 9999 : itemsPerPage}&enableForms=${pokedex.isFormDex}®ion=${catchRegion}&game=${catchGame}`;
|
||||
// Use new pokédex-scoped endpoint - always fetch all data for box view
|
||||
let endpoint = `/api/pokedexes/${pokedexId}/combined-data?page=${currentPage}&limit=9999&enableForms=${pokedex.isFormDex}`;
|
||||
|
||||
const response = await fetch(endpoint);
|
||||
const fetchedData = await response.json();
|
||||
@@ -66,7 +75,8 @@
|
||||
}
|
||||
combinedData = fetchedData.combinedData;
|
||||
totalPages = fetchedData.totalPages || 0;
|
||||
if (viewAsBoxes) {
|
||||
// Always extract box numbers for box view
|
||||
if (combinedData) {
|
||||
boxNumbers = [
|
||||
...new Set(
|
||||
combinedData.map(({ pokedexEntry }) =>
|
||||
@@ -116,6 +126,8 @@
|
||||
needsToEvolve: boolean,
|
||||
inHome: boolean | null = null
|
||||
) {
|
||||
if (!combinedData) return;
|
||||
|
||||
let catchRecordsToUpdate = combinedData
|
||||
.filter(({ pokedexEntry }) =>
|
||||
(pokedex.isFormDex ? pokedexEntry.boxPlacementForms.box : pokedexEntry.boxPlacement.box) ===
|
||||
@@ -260,63 +272,119 @@
|
||||
{#if !localUser}
|
||||
<p>Please <a href="/signin" class="underline text-primary hover:text-secondary">sign in</a></p>
|
||||
{:else}
|
||||
<div class="drawer lg:drawer-open">
|
||||
<input id="my-drawer" type="checkbox" class="drawer-toggle" bind:checked={drawerOpen} />
|
||||
<div class="drawer-content flex flex-col items-center justify-center md:ml-64">
|
||||
<label
|
||||
for="my-drawer"
|
||||
class="btn btn-secondary drawer-button lg:hidden fixed -left-10 top-1/2 -rotate-90"
|
||||
>
|
||||
{drawerOpen ? 'Close Filters' : 'Open Filters'}
|
||||
</label>
|
||||
<div class="container mx-auto p-4 max-w-screen-2xl">
|
||||
<!-- Pokédex Header -->
|
||||
<div class="card bg-base-100 shadow-xl mb-6">
|
||||
<div class="card-body">
|
||||
<div class="flex flex-col lg:flex-row lg:items-center lg:justify-between gap-4">
|
||||
<!-- Left side: Title and metadata -->
|
||||
<div class="flex-1">
|
||||
<h1 class="card-title text-3xl mb-3">{pokedex.name}</h1>
|
||||
|
||||
{#if viewAsBoxes}
|
||||
<PokedexViewBoxes
|
||||
bind:showShiny
|
||||
showForms={pokedex.isFormDex}
|
||||
bind:combinedData
|
||||
bind:boxNumbers
|
||||
bind:creatingRecords
|
||||
bind:failedToLoad
|
||||
{markBoxAsNotCaught}
|
||||
{markBoxAsCaught}
|
||||
{markBoxAsNeedsToEvolve}
|
||||
{markBoxAsInHome}
|
||||
{markBoxAsNotInHome}
|
||||
/>
|
||||
{:else}
|
||||
<PokedexViewList
|
||||
bind:showOrigins
|
||||
showForms={pokedex.isFormDex}
|
||||
bind:showShiny
|
||||
bind:combinedData
|
||||
bind:creatingRecords
|
||||
bind:totalRecordsCreated
|
||||
bind:failedToLoad
|
||||
userId={localUser?.id}
|
||||
pokedexId={pokedexId}
|
||||
{updateACatch}
|
||||
{createCatchRecords}
|
||||
/>
|
||||
{/if}
|
||||
</div>
|
||||
<div class="drawer-side lg:relative">
|
||||
<label for="my-drawer" class="drawer-overlay lg:hidden"></label>
|
||||
<PokedexSidebar
|
||||
{pokedex}
|
||||
bind:viewAsBoxes
|
||||
bind:currentPage
|
||||
bind:itemsPerPage
|
||||
bind:totalPages
|
||||
bind:showOrigins
|
||||
bind:showShiny
|
||||
bind:catchRegion
|
||||
bind:catchGame
|
||||
{getData}
|
||||
{toggleOrigins}
|
||||
{toggleShiny}
|
||||
{toggleViewAsBoxes}
|
||||
/>
|
||||
<div class="flex flex-wrap items-center gap-3">
|
||||
<!-- Type badges -->
|
||||
{#if pokedex.isLivingDex}
|
||||
<div class="badge badge-primary badge-lg gap-1">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor">
|
||||
<path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd" />
|
||||
</svg>
|
||||
Living
|
||||
</div>
|
||||
{/if}
|
||||
{#if pokedex.isShinyDex}
|
||||
<div class="badge badge-secondary badge-lg gap-1">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor">
|
||||
<path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z" />
|
||||
</svg>
|
||||
Shiny
|
||||
</div>
|
||||
{/if}
|
||||
{#if pokedex.isOriginDex}
|
||||
<div class="badge badge-accent badge-lg gap-1">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor">
|
||||
<path fill-rule="evenodd" d="M5.05 4.05a7 7 0 119.9 9.9L10 18.9l-4.95-4.95a7 7 0 010-9.9zM10 11a2 2 0 100-4 2 2 0 000 4z" clip-rule="evenodd" />
|
||||
</svg>
|
||||
Origin
|
||||
</div>
|
||||
{/if}
|
||||
{#if pokedex.isFormDex}
|
||||
<div class="badge badge-info badge-lg gap-1">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor">
|
||||
<path d="M7 3a1 1 0 000 2h6a1 1 0 100-2H7zM4 7a1 1 0 011-1h10a1 1 0 110 2H5a1 1 0 01-1-1zM2 11a2 2 0 012-2h12a2 2 0 012 2v4a2 2 0 01-2 2H4a2 2 0 01-2-2v-4z" />
|
||||
</svg>
|
||||
Form
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<!-- Game scope -->
|
||||
{#if pokedex.gameScope}
|
||||
<div class="divider divider-horizontal mx-0"></div>
|
||||
<div class="flex items-center gap-2 text-base-content/70">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" viewBox="0 0 20 20" fill="currentColor">
|
||||
<path d="M10 12a2 2 0 100-4 2 2 0 000 4z" />
|
||||
<path fill-rule="evenodd" d="M.458 10C1.732 5.943 5.522 3 10 3s8.268 2.943 9.542 7c-1.274 4.057-5.064 7-9.542 7S1.732 14.057.458 10zM14 10a4 4 0 11-8 0 4 4 0 018 0z" clip-rule="evenodd" />
|
||||
</svg>
|
||||
<span class="font-semibold">{pokedex.gameScope}</span>
|
||||
</div>
|
||||
{:else}
|
||||
<div class="divider divider-horizontal mx-0"></div>
|
||||
<div class="flex items-center gap-2 text-base-content/70">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5" viewBox="0 0 20 20" fill="currentColor">
|
||||
<path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zM4.332 8.027a6.012 6.012 0 011.912-2.706C6.512 5.73 6.974 6 7.5 6A1.5 1.5 0 019 7.5V8a2 2 0 004 0 2 2 0 011.523-1.943A5.977 5.977 0 0116 10c0 .34-.028.675-.083 1H15a2 2 0 00-2 2v2.197A5.973 5.973 0 0110 16v-2a2 2 0 00-2-2 2 2 0 01-2-2 2 2 0 00-1.668-1.973z" clip-rule="evenodd" />
|
||||
</svg>
|
||||
<span class="font-semibold">All Games</span>
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
{#if pokedex.description}
|
||||
<p class="text-sm text-base-content/70 mt-3">{pokedex.description}</p>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
<!-- Right side: Actions -->
|
||||
<div class="flex flex-row lg:flex-col gap-2">
|
||||
<a href="/my-pokedexes" class="btn btn-outline btn-sm">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4" viewBox="0 0 20 20" fill="currentColor">
|
||||
<path d="M10.707 2.293a1 1 0 00-1.414 0l-7 7a1 1 0 001.414 1.414L4 10.414V17a1 1 0 001 1h2a1 1 0 001-1v-2a1 1 0 011-1h2a1 1 0 011 1v2a1 1 0 001 1h2a1 1 0 001-1v-6.586l.293.293a1 1 0 001.414-1.414l-7-7z" />
|
||||
</svg>
|
||||
My Pokédexes
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Box View -->
|
||||
<PokedexViewBoxes
|
||||
{showShiny}
|
||||
showForms={pokedex.isFormDex}
|
||||
bind:combinedData
|
||||
bind:boxNumbers
|
||||
bind:creatingRecords
|
||||
bind:failedToLoad
|
||||
{markBoxAsNotCaught}
|
||||
{markBoxAsCaught}
|
||||
{markBoxAsNeedsToEvolve}
|
||||
{markBoxAsInHome}
|
||||
{markBoxAsNotInHome}
|
||||
{createCatchRecords}
|
||||
onPokemonClick={openPokemonModal}
|
||||
/>
|
||||
</div>
|
||||
|
||||
{#if showModal && selectedPokemon}
|
||||
<PokedexModal isOpen={showModal} onClose={closePokemonModal}>
|
||||
<PokedexEntryCatchRecord
|
||||
pokedexEntry={selectedPokemon.pokedexEntry}
|
||||
bind:catchRecord={selectedPokemon.catchRecord}
|
||||
{showOrigins}
|
||||
showForms={pokedex.isFormDex}
|
||||
{showShiny}
|
||||
userId={localUser?.id}
|
||||
pokedexId={pokedexId}
|
||||
on:updateCatch={handleModalCatchUpdate}
|
||||
/>
|
||||
</PokedexModal>
|
||||
{/if}
|
||||
{/if}
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
-- Create games table to store game metadata
|
||||
CREATE TABLE IF NOT EXISTS games (
|
||||
id TEXT PRIMARY KEY,
|
||||
"displayName" TEXT NOT NULL,
|
||||
region TEXT NOT NULL,
|
||||
generation INTEGER NOT NULL,
|
||||
"releaseYear" INTEGER NOT NULL,
|
||||
"createdAt" TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
|
||||
"updatedAt" TIMESTAMP WITH TIME ZONE DEFAULT NOW()
|
||||
);
|
||||
|
||||
-- Enable RLS
|
||||
ALTER TABLE games ENABLE ROW LEVEL SECURITY;
|
||||
|
||||
-- Allow anyone to read games (public reference data)
|
||||
CREATE POLICY "Games are publicly readable"
|
||||
ON games
|
||||
FOR SELECT
|
||||
TO public
|
||||
USING (true);
|
||||
|
||||
-- Insert games data from games.csv
|
||||
INSERT INTO games (id, "displayName", region, generation, "releaseYear") VALUES
|
||||
('red', 'Red', 'Kanto', 1, 1996),
|
||||
('blue', 'Blue', 'Kanto', 1, 1996),
|
||||
('yellow', 'Yellow', 'Kanto', 1, 1998),
|
||||
('lg--pikachu', 'LG: Pikachu', 'Kanto', 7, 2018),
|
||||
('lg--eevee', 'LG: Eevee', 'Kanto', 7, 2018),
|
||||
('gold', 'Gold', 'Johto', 2, 1999),
|
||||
('silver', 'Silver', 'Johto', 2, 1999),
|
||||
('crystal', 'Crystal', 'Johto', 2, 2000),
|
||||
('heartgold', 'HeartGold', 'Johto', 4, 2009),
|
||||
('soulsilver', 'SoulSilver', 'Johto', 4, 2009),
|
||||
('legends-arceus', 'Legends: Arceus', 'Hisui', 8, 2022)
|
||||
ON CONFLICT (id) DO UPDATE SET
|
||||
"displayName" = EXCLUDED."displayName",
|
||||
region = EXCLUDED.region,
|
||||
generation = EXCLUDED.generation,
|
||||
"releaseYear" = EXCLUDED."releaseYear",
|
||||
"updatedAt" = NOW();
|
||||
+33
-33
@@ -33,9 +33,9 @@ INSERT INTO pokedex_entries (
|
||||
(11, 'Metapod', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(12, 'Butterfree', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(12, 'Butterfree', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(13, 'Weedle', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(14, 'Kakuna', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(15, 'Beedrill', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(13, 'Weedle', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(14, 'Kakuna', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(15, 'Beedrill', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(16, 'Pidgey', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(17, 'Pidgeotto', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(18, 'Pidgeot', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
@@ -45,14 +45,14 @@ INSERT INTO pokedex_entries (
|
||||
(20, 'Raticate', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(21, 'Spearow', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(22, 'Fearow', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(23, 'Ekans', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'LG: Eevee']),
|
||||
(24, 'Arbok', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'LG: Eevee']),
|
||||
(23, 'Ekans', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(24, 'Arbok', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(25, 'Pikachu', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(25, 'Pikachu', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(26, 'Raichu', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(26, 'Raichu', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(27, 'Sandshrew', NULL, false, 'Kanto', ARRAY['Blue', 'Yellow', 'LG: Pikachu']),
|
||||
(28, 'Sandslash', NULL, false, 'Kanto', ARRAY['Blue', 'Yellow', 'LG: Pikachu']),
|
||||
(27, 'Sandshrew', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(28, 'Sandslash', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(29, 'Nidoran♀', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(30, 'Nidorina', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(31, 'Nidoqueen', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
@@ -61,33 +61,33 @@ INSERT INTO pokedex_entries (
|
||||
(34, 'Nidoking', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(35, 'Clefairy', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(36, 'Clefable', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(37, 'Vulpix', NULL, false, 'Kanto', ARRAY['Blue', 'Yellow', 'LG: Eevee']),
|
||||
(38, 'Ninetales', NULL, false, 'Kanto', ARRAY['Blue', 'Yellow', 'LG: Eevee']),
|
||||
(37, 'Vulpix', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(38, 'Ninetales', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(39, 'Jigglypuff', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(40, 'Wigglytuff', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(41, 'Zubat', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(41, 'Zubat', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(42, 'Golbat', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(42, 'Golbat', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(43, 'Oddish', NULL, false, 'Kanto', ARRAY['Red', 'Yellow', 'LG: Pikachu']),
|
||||
(44, 'Gloom', NULL, false, 'Kanto', ARRAY['Red', 'Yellow', 'LG: Pikachu']),
|
||||
(44, 'Gloom', 'Female', false, 'Kanto', ARRAY['Red', 'Yellow', 'LG: Pikachu']),
|
||||
(45, 'Vileplume', NULL, false, 'Kanto', ARRAY['Red', 'Yellow', 'LG: Pikachu']),
|
||||
(45, 'Vileplume', 'Female', false, 'Kanto', ARRAY['Red', 'Yellow', 'LG: Pikachu']),
|
||||
(43, 'Oddish', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(44, 'Gloom', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(44, 'Gloom', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(45, 'Vileplume', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(45, 'Vileplume', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(46, 'Paras', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(47, 'Parasect', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(48, 'Venonat', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(49, 'Venomoth', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(50, 'Diglett', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(51, 'Dugtrio', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(52, 'Meowth', NULL, false, 'Kanto', ARRAY['Blue', 'LG: Eevee']),
|
||||
(53, 'Persian', NULL, false, 'Kanto', ARRAY['Blue', 'LG: Eevee']),
|
||||
(52, 'Meowth', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(53, 'Persian', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(54, 'Psyduck', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(55, 'Golduck', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(56, 'Mankey', NULL, false, 'Kanto', ARRAY['Red', 'Yellow', 'LG: Pikachu']),
|
||||
(57, 'Primeape', NULL, false, 'Kanto', ARRAY['Red', 'Yellow', 'LG: Pikachu']),
|
||||
(58, 'Growlithe', NULL, false, 'Kanto', ARRAY['Red', 'Yellow', 'LG: Pikachu']),
|
||||
(59, 'Arcanine', NULL, false, 'Kanto', ARRAY['Red', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(56, 'Mankey', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(57, 'Primeape', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(58, 'Growlithe', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(59, 'Arcanine', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(60, 'Poliwag', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(61, 'Poliwhirl', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(62, 'Poliwrath', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
@@ -99,9 +99,9 @@ INSERT INTO pokedex_entries (
|
||||
(66, 'Machop', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(67, 'Machoke', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(68, 'Machamp', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(69, 'Bellsprout', NULL, false, 'Kanto', ARRAY['Blue', 'Yellow', 'LG: Eevee']),
|
||||
(70, 'Weepinbell', NULL, false, 'Kanto', ARRAY['Blue', 'Yellow', 'LG: Eevee']),
|
||||
(71, 'Victreebel', NULL, false, 'Kanto', ARRAY['Blue', 'Yellow', 'LG: Eevee']),
|
||||
(69, 'Bellsprout', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(70, 'Weepinbell', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(71, 'Victreebel', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(72, 'Tentacool', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(73, 'Tentacruel', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(74, 'Geodude', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
@@ -120,8 +120,8 @@ INSERT INTO pokedex_entries (
|
||||
(85, 'Dodrio', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(86, 'Seel', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(87, 'Dewgong', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(88, 'Grimer', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu']),
|
||||
(89, 'Muk', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu']),
|
||||
(88, 'Grimer', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(89, 'Muk', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(90, 'Shellder', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(91, 'Cloyster', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(92, 'Gastly', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
@@ -142,8 +142,8 @@ INSERT INTO pokedex_entries (
|
||||
(106, 'Hitmonlee', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(107, 'Hitmonchan', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(108, 'Lickitung', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(109, 'Koffing', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'LG: Eevee']),
|
||||
(110, 'Weezing', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'LG: Eevee']),
|
||||
(109, 'Koffing', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(110, 'Weezing', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(111, 'Rhyhorn', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(111, 'Rhyhorn', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(112, 'Rhydon', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
@@ -160,12 +160,12 @@ INSERT INTO pokedex_entries (
|
||||
(120, 'Staryu', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(121, 'Starmie', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(122, 'Mr. Mime', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(123, 'Scyther', NULL, false, 'Kanto', ARRAY['Red', 'Yellow', 'LG: Pikachu']),
|
||||
(123, 'Scyther', 'Female', false, 'Kanto', ARRAY['Red', 'Yellow', 'LG: Pikachu']),
|
||||
(124, 'Jynx', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(125, 'Electabuzz', NULL, false, 'Kanto', ARRAY['Red', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(126, 'Magmar', NULL, false, 'Kanto', ARRAY['Blue', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(127, 'Pinsir', NULL, false, 'Kanto', ARRAY['Blue', 'Yellow', 'LG: Eevee']),
|
||||
(123, 'Scyther', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(123, 'Scyther', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(124, 'Jynx', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(125, 'Electabuzz', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(126, 'Magmar', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(127, 'Pinsir', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(128, 'Tauros', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(129, 'Magikarp', NULL, false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
(129, 'Magikarp', 'Female', false, 'Kanto', ARRAY['Red', 'Blue', 'Yellow', 'LG: Pikachu', 'LG: Eevee']),
|
||||
@@ -0,0 +1,282 @@
|
||||
-- Seed Johto region Pokémon (Gen 2)
|
||||
-- Auto-generated from CSV files
|
||||
|
||||
-- Insert Johto region-game mappings
|
||||
INSERT INTO region_game_mappings (region, game) VALUES
|
||||
('Johto', 'Gold'),
|
||||
('Johto', 'Silver'),
|
||||
('Johto', 'Crystal'),
|
||||
('Johto', 'HeartGold'),
|
||||
('Johto', 'SoulSilver')
|
||||
ON CONFLICT (region, game) DO NOTHING;
|
||||
|
||||
-- Insert Johto Pokémon entries
|
||||
INSERT INTO pokedex_entries (
|
||||
"pokedexNumber",
|
||||
pokemon,
|
||||
form,
|
||||
"canGigantamax",
|
||||
"regionToCatchIn",
|
||||
"gamesToCatchIn"
|
||||
) VALUES
|
||||
(152, 'Chikorita', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(153, 'Bayleef', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(154, 'Meganium', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(154, 'Meganium', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(155, 'Cyndaquil', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(156, 'Quilava', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(157, 'Typhlosion', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(158, 'Totodile', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(159, 'Croconaw', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(160, 'Feraligatr', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(161, 'Sentret', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(162, 'Furret', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(163, 'Hoothoot', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(164, 'Noctowl', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(165, 'Ledyba', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(165, 'Ledyba', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(166, 'Ledian', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(166, 'Ledian', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(167, 'Spinarak', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(168, 'Ariados', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(169, 'Crobat', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(170, 'Chinchou', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(171, 'Lanturn', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(172, 'Pichu', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(173, 'Cleffa', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(174, 'Igglybuff', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(175, 'Togepi', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(176, 'Togetic', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(177, 'Natu', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(178, 'Xatu', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(178, 'Xatu', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(179, 'Mareep', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(180, 'Flaaffy', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(181, 'Ampharos', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(182, 'Bellossom', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(183, 'Marill', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(184, 'Azumarill', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(185, 'Sudowoodo', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(185, 'Sudowoodo', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(186, 'Politoed', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(186, 'Politoed', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(187, 'Hoppip', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(188, 'Skiploom', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(189, 'Jumpluff', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(190, 'Aipom', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(190, 'Aipom', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(191, 'Sunkern', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(192, 'Sunflora', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(193, 'Yanma', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(194, 'Wooper', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(194, 'Wooper', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(195, 'Quagsire', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(195, 'Quagsire', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(196, 'Espeon', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(197, 'Umbreon', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(198, 'Murkrow', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(198, 'Murkrow', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(199, 'Slowking', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(200, 'Misdreavus', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(201, 'Unown', 'A', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(201, 'Unown', 'B', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(201, 'Unown', 'C', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(201, 'Unown', 'D', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(201, 'Unown', 'E', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(201, 'Unown', 'F', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(201, 'Unown', 'G', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(201, 'Unown', 'H', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(201, 'Unown', 'I', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(201, 'Unown', 'J', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(201, 'Unown', 'K', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(201, 'Unown', 'L', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(201, 'Unown', 'M', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(201, 'Unown', 'N', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(201, 'Unown', 'O', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(201, 'Unown', 'P', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(201, 'Unown', 'Q', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(201, 'Unown', 'R', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(201, 'Unown', 'S', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(201, 'Unown', 'T', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(201, 'Unown', 'U', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(201, 'Unown', 'V', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(201, 'Unown', 'W', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(201, 'Unown', 'X', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(201, 'Unown', 'Y', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(201, 'Unown', 'Z', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(201, 'Unown', '!', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(201, 'Unown', '?', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(202, 'Wobbuffet', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(202, 'Wobbuffet', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(203, 'Girafarig', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(203, 'Girafarig', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(204, 'Pineco', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(205, 'Forretress', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(206, 'Dunsparce', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(207, 'Gligar', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(207, 'Gligar', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(208, 'Steelix', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(208, 'Steelix', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(209, 'Snubbull', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(210, 'Granbull', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(211, 'Qwilfish', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(212, 'Scizor', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(212, 'Scizor', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(213, 'Shuckle', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(214, 'Heracross', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(214, 'Heracross', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(215, 'Sneasel', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(215, 'Sneasel', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(216, 'Teddiursa', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(217, 'Ursaring', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(217, 'Ursaring', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(218, 'Slugma', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(219, 'Magcargo', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(220, 'Swinub', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(221, 'Piloswine', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(221, 'Piloswine', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(222, 'Corsola', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(223, 'Remoraid', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(224, 'Octillery', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(224, 'Octillery', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(225, 'Delibird', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(226, 'Mantine', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(227, 'Skarmory', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(228, 'Houndour', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(229, 'Houndoom', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(229, 'Houndoom', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(230, 'Kingdra', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(231, 'Phanpy', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(232, 'Donphan', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(232, 'Donphan', 'Female', false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(234, 'Stantler', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(235, 'Smeargle', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(236, 'Tyrogue', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(237, 'Hitmontop', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(238, 'Smoochum', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(239, 'Elekid', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(240, 'Magby', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(241, 'Miltank', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(242, 'Blissey', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(243, 'Raikou', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(244, 'Entei', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(245, 'Suicune', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(246, 'Larvitar', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(247, 'Pupitar', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(248, 'Tyranitar', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(249, 'Lugia', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(250, 'Ho-Oh', NULL, false, 'Johto', ARRAY['Gold', 'Silver', 'Crystal', 'HeartGold', 'SoulSilver']),
|
||||
(251, 'Celebi', NULL, false, 'Johto', ARRAY['Crystal', 'HeartGold', 'SoulSilver'])
|
||||
ON CONFLICT ON CONSTRAINT unique_pokemon_form DO NOTHING;
|
||||
|
||||
-- Insert Johto regional dex numbers
|
||||
INSERT INTO regional_dex_numbers (
|
||||
pokedex_entry_id,
|
||||
region,
|
||||
dex_number
|
||||
) VALUES
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 152 AND form IS NULL), 'Johto', 1),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 153 AND form IS NULL), 'Johto', 2),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 154 AND form IS NULL), 'Johto', 3),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 155 AND form IS NULL), 'Johto', 4),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 156 AND form IS NULL), 'Johto', 5),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 157 AND form IS NULL), 'Johto', 6),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 158 AND form IS NULL), 'Johto', 7),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 159 AND form IS NULL), 'Johto', 8),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 160 AND form IS NULL), 'Johto', 9),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 161 AND form IS NULL), 'Johto', 10),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 162 AND form IS NULL), 'Johto', 11),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 163 AND form IS NULL), 'Johto', 12),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 164 AND form IS NULL), 'Johto', 13),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 165 AND form IS NULL), 'Johto', 14),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 166 AND form IS NULL), 'Johto', 15),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 167 AND form IS NULL), 'Johto', 16),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 168 AND form IS NULL), 'Johto', 17),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 169 AND form IS NULL), 'Johto', 18),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 170 AND form IS NULL), 'Johto', 19),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 171 AND form IS NULL), 'Johto', 20),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 172 AND form IS NULL), 'Johto', 21),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 173 AND form IS NULL), 'Johto', 22),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 174 AND form IS NULL), 'Johto', 23),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 175 AND form IS NULL), 'Johto', 24),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 176 AND form IS NULL), 'Johto', 25),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 177 AND form IS NULL), 'Johto', 26),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 178 AND form IS NULL), 'Johto', 27),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 179 AND form IS NULL), 'Johto', 28),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 180 AND form IS NULL), 'Johto', 29),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 181 AND form IS NULL), 'Johto', 30),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 182 AND form IS NULL), 'Johto', 31),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 183 AND form IS NULL), 'Johto', 32),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 184 AND form IS NULL), 'Johto', 33),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 185 AND form IS NULL), 'Johto', 34),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 186 AND form IS NULL), 'Johto', 35),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 187 AND form IS NULL), 'Johto', 36),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 188 AND form IS NULL), 'Johto', 37),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 189 AND form IS NULL), 'Johto', 38),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 190 AND form IS NULL), 'Johto', 39),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 191 AND form IS NULL), 'Johto', 40),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 192 AND form IS NULL), 'Johto', 41),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 193 AND form IS NULL), 'Johto', 42),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 194 AND form IS NULL), 'Johto', 43),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 195 AND form IS NULL), 'Johto', 44),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 196 AND form IS NULL), 'Johto', 45),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 197 AND form IS NULL), 'Johto', 46),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 198 AND form IS NULL), 'Johto', 47),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 199 AND form IS NULL), 'Johto', 48),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 200 AND form IS NULL), 'Johto', 49),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 201 AND form = 'A'), 'Johto', 50),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 202 AND form IS NULL), 'Johto', 51),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 203 AND form IS NULL), 'Johto', 52),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 204 AND form IS NULL), 'Johto', 53),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 205 AND form IS NULL), 'Johto', 54),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 206 AND form IS NULL), 'Johto', 55),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 207 AND form IS NULL), 'Johto', 56),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 208 AND form IS NULL), 'Johto', 57),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 209 AND form IS NULL), 'Johto', 58),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 210 AND form IS NULL), 'Johto', 59),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 211 AND form IS NULL), 'Johto', 60),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 212 AND form IS NULL), 'Johto', 61),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 213 AND form IS NULL), 'Johto', 62),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 214 AND form IS NULL), 'Johto', 63),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 215 AND form IS NULL), 'Johto', 64),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 216 AND form IS NULL), 'Johto', 65),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 217 AND form IS NULL), 'Johto', 66),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 218 AND form IS NULL), 'Johto', 67),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 219 AND form IS NULL), 'Johto', 68),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 220 AND form IS NULL), 'Johto', 69),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 221 AND form IS NULL), 'Johto', 70),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 222 AND form IS NULL), 'Johto', 71),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 223 AND form IS NULL), 'Johto', 72),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 224 AND form IS NULL), 'Johto', 73),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 225 AND form IS NULL), 'Johto', 74),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 226 AND form IS NULL), 'Johto', 75),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 227 AND form IS NULL), 'Johto', 76),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 228 AND form IS NULL), 'Johto', 77),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 229 AND form IS NULL), 'Johto', 78),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 230 AND form IS NULL), 'Johto', 79),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 231 AND form IS NULL), 'Johto', 80),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 232 AND form IS NULL), 'Johto', 81),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 234 AND form IS NULL), 'Johto', 83),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 235 AND form IS NULL), 'Johto', 84),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 236 AND form IS NULL), 'Johto', 85),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 237 AND form IS NULL), 'Johto', 86),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 238 AND form IS NULL), 'Johto', 87),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 239 AND form IS NULL), 'Johto', 88),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 240 AND form IS NULL), 'Johto', 89),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 241 AND form IS NULL), 'Johto', 90),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 242 AND form IS NULL), 'Johto', 91),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 243 AND form IS NULL), 'Johto', 92),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 244 AND form IS NULL), 'Johto', 93),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 245 AND form IS NULL), 'Johto', 94),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 246 AND form IS NULL), 'Johto', 95),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 247 AND form IS NULL), 'Johto', 96),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 248 AND form IS NULL), 'Johto', 97),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 249 AND form IS NULL), 'Johto', 98),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 250 AND form IS NULL), 'Johto', 99),
|
||||
((SELECT id FROM pokedex_entries WHERE "pokedexNumber" = 251 AND form IS NULL), 'Johto', 100);
|
||||
|
||||
-- Add metadata
|
||||
INSERT INTO metadata (key, value) VALUES
|
||||
('johto_seeded', 'true'),
|
||||
('johto_seed_date', NOW()::TEXT),
|
||||
('johto_pokemon_count', '98');
|
||||
Reference in New Issue
Block a user