From 4869d6fcbd880f448e94aa98912a6ea5bda1dafa Mon Sep 17 00:00:00 2001 From: David Gay Date: Thu, 2 Nov 2023 19:40:23 -0400 Subject: Pokemon model, seeded via CSV --- app/models/pokemon.rb | 3 + db/data/pokemon.csv | 902 +++++++++++++++++++++++++++ db/migrate/20231102230947_create_pokemons.rb | 10 + db/schema.rb | 9 +- db/seeds.rb | 7 + test/fixtures/pokemons.yml | 9 + test/models/pokemon_test.rb | 7 + 7 files changed, 946 insertions(+), 1 deletion(-) create mode 100644 app/models/pokemon.rb create mode 100644 db/data/pokemon.csv create mode 100644 db/migrate/20231102230947_create_pokemons.rb create mode 100644 test/fixtures/pokemons.yml create mode 100644 test/models/pokemon_test.rb diff --git a/app/models/pokemon.rb b/app/models/pokemon.rb new file mode 100644 index 0000000..7543f64 --- /dev/null +++ b/app/models/pokemon.rb @@ -0,0 +1,3 @@ +class Pokemon < ApplicationRecord + validates :pokedex_num, :name, presence: true +end diff --git a/db/data/pokemon.csv b/db/data/pokemon.csv new file mode 100644 index 0000000..bbf53f1 --- /dev/null +++ b/db/data/pokemon.csv @@ -0,0 +1,902 @@ +pokedex_num,name +001,Bulbasaur +002,Ivysaur +003,Venusaur +004,Charmander +005,Charmeleon +006,Charizard +007,Squirtle +008,Wartortle +009,Blastoise +010,Caterpie +011,Metapod +012,Butterfree +013,Weedle +014,Kakuna +015,Beedrill +016,Pidgey +017,Pidgeotto +018,Pidgeot +019,Rattata +020,Raticate +021,Spearow +022,Fearow +023,Ekans +024,Arbok +025,Pikachu +026,Raichu +027,Sandshrew +028,Sandslash +029,Nidoran♀ +030,Nidorina +031,Nidoqueen +032,Nidoran♂ +033,Nidorino +034,Nidoking +035,Clefairy +036,Clefable +037,Vulpix +038,Ninetales +039,Jigglypuff +040,Wigglytuff +041,Zubat +042,Golbat +043,Oddish +044,Gloom +045,Vileplume +046,Paras +047,Parasect +048,Venonat +049,Venomoth +050,Diglett +051,Dugtrio +052,Meowth +053,Persian +054,Psyduck +055,Golduck +056,Mankey +057,Primeape +058,Growlithe +059,Arcanine +060,Poliwag +061,Poliwhirl +062,Poliwrath +063,Abra +064,Kadabra +065,Alakazam +066,Machop +067,Machoke +068,Machamp +069,Bellsprout +070,Weepinbell +071,Victreebel +072,Tentacool +073,Tentacruel +074,Geodude +075,Graveler +076,Golem +077,Ponyta +078,Rapidash +079,Slowpoke +080,Slowbro +081,Magnemite +082,Magneton +083,Farfetch'd +084,Doduo +085,Dodrio +086,Seel +087,Dewgong +088,Grimer +089,Muk +090,Shellder +091,Cloyster +092,Gastly +093,Haunter +094,Gengar +095,Onix +096,Drowzee +097,Hypno +098,Krabby +099,Kingler +100,Voltorb +101,Electrode +102,Exeggcute +103,Exeggutor +104,Cubone +105,Marowak +106,Hitmonlee +107,Hitmonchan +108,Lickitung +109,Koffing +110,Weezing +111,Rhyhorn +112,Rhydon +113,Chansey +114,Tangela +115,Kangaskhan +116,Horsea +117,Seadra +118,Goldeen +119,Seaking +120,Staryu +121,Starmie +122,Mr.Mime +123,Scyther +124,Jynx +125,Electabuzz +126,Magmar +127,Pinsir +128,Tauros +129,Magikarp +130,Gyarados +131,Lapras +132,Ditto +133,Eevee +134,Vaporeon +135,Jolteon +136,Flareon +137,Porygon +138,Omanyte +139,Omastar +140,Kabuto +141,Kabutops +142,Aerodactyl +143,Snorlax +144,Articuno +145,Zapdos +146,Moltres +147,Dratini +148,Dragonair +149,Dragonite +150,Mewtwo +151,Mew +152,Chikorita +153,Bayleef +154,Meganium +155,Cyndaquil +156,Quilava +157,Typhlosion +158,Totodile +159,Croconaw +160,Feraligatr +161,Sentret +162,Furret +163,Hoothoot +164,Noctowl +165,Ledyba +166,Ledian +167,Spinarak +168,Ariados +169,Crobat +170,Chinchou +171,Lanturn +172,Pichu +173,Cleffa +174,Igglybuff +175,Togepi +176,Togetic +177,Natu +178,Xatu +179,Mareep +180,Flaaffy +181,Ampharos +182,Bellossom +183,Marill +184,Azumarill +185,Sudowoodo +186,Politoed +187,Hoppip +188,Skiploom +189,Jumpluff +190,Aipom +191,Sunkern +192,Sunflora +193,Yanma +194,Wooper +195,Quagsire +196,Espeon +197,Umbreon +198,Murkrow +199,Slowking +200,Misdreavous +201,Unown +202,Wobbuffet +203,Girafarig +204,Pineco +205,Forretress +206,Dunsparce +207,Gligar +208,Steelix +209,Snubbull +210,Granbull +211,Qwilfish +212,Scizor +213,Shuckle +214,Heracross +215,Sneasel +216,Teddiursa +217,Ursaring +218,Slugma +219,Magcargo +220,Swinub +221,Piloswine +222,Corsola +223,Remoraid +224,Octillery +225,Delibird +226,Mantine +227,Skarmory +228,Houndour +229,Houndoom +230,Kingdra +231,Phanpy +232,Donphan +233,Porygon2 +234,Stantler +235,Smeargle +236,Tyrogue +237,Hitmontop +238,Smoochum +239,Elekid +240,Magby +241,Miltank +242,Blissey +243,Raikou +244,Entei +245,Suicune +246,Larvitar +247,Pupitar +248,Tyranitar +249,Lugia +250,Ho-Oh +251,Celebi +252,Treecko +253,Grovyle +254,Sceptile +255,Torchic +256,Combusken +257,Blaziken +258,Mudkip +259, + +Marshtomp +260,Swampert +261,Poochyena +262,Mightyena +263,Zigzagoon +264,Linoone +265,Wurmple +266,Silcoon +267,Beautifly +268,Cascoon +269,Dustox +270,Lotad +271,Lombre +272,Ludicolo +273,Seedot +274,Nuzleaf +275,Shiftry +276,Taillow +277,Swellow +278,Wingull +279,Pelipper +280,Ralts +281,Kirlia +282,Gardevoir +283,Surskit +284,Masquerain +285,Shroomish +286,Breloom +287,Slakoth +288,Vigoroth +289,Slaking +290,Nincada +291,Ninjask +292,Shedinja +293,Whismur +294,Loudred +295,Exploud +296,Makuhita +297,Hariyama +298,Azurill +299,Nosepass +300,Skitty +301,Delcatty +302,Sableye +303,Mawile +304,Aron +305,Lairon +306,Aggron +307,Meditite +308,Medicham +309,Electrike +310,Manectric +311,Plusle +312,Minun +313,Volbeat +314,Illumise +315,Roselia +316,Gulpin +317,Swalot +318,Carvanha +319,Sharpedo +320,Wailmer +321,Wailord +322,Numel +323,Camerupt +324,Torkoal +325,Spoink +326,Grumpig +327,Spinda +328,Trapinch +329,Vibrava +330,Flygon +331,Cacnea +332,Cacturne +333,Swablu +334,Altaria +335,Zangoose +336,Seviper +337,Lunatone +338,Solrock +339,Barboach +340,Whiscash +341,Corphish +342,Crawdaunt +343,Baltoy +344,Claydol +345,Lileep +346,Cradily +347,Anorith +348,Armaldo +349,Feebas +350,Milotic +351,Castform +352,Kecleon +353,Shuppet +354,Banette +355,Duskull +356,Dusclops +357,Tropius +358,Chimecho +359,Absol +360,Wynaut +361,Snorunt +362,Glalie +363,Spheal +364,Sealeo +365,Walrein +366,Clamperl +367,Huntail +368,Gorebyss +369,Relicanth +370,Luvdisc +371,Bagon +372,Shelgon +373,Salamence +374,Beldum +375,Metang +376,Metagross +377,Regirock +378,Regice +379,Registeel +380,Latias +381,Latios +382,Kyogre +383,Groudon +384,Rayquaza +385,Jirachi +386,Deoxys +387,Turtwig +388,Grotle +389,Torterra +390,Chimchar +391,Monferno +392,Infernape +393,Piplup +394,Prinplup +395,Empoleon +396,Starly +397,Staravia +398,Staraptor +399,Bidoof +400,Bibarel +401,Kricketot +402,Kricketune +403,Shinx +404,Luxio +405,Luxray +406,Budew +407,Roserade +408,Cranidos +409,Rampardos +410,Shieldon +411,Bastiodon +412,Burmy +413,Wormadam +414,Mothim +415,Combee +416,Vespiquen +417,Pachirisu +418,Buizel +419,Floatzel +420,Cherubi +421,Cherrim +422,Shellos +423,Gastrodon +424,Ambipom +425,Drifloon +426,Drifblim +427,Buneary +428,Lopunny +429,Mismagius +430,Honchkrow +431,Glameow +432,Purugly +433,Chingling +434,Stunky +435,Skuntank +436,Bronzor +437,Bronzong +438,Bonsly +439,MimeJr. +440,Happiny +441,Chatot +442,Spiritomb +443,Gible +444,Gabite +445,Garchomp +446,Munchlax +447,Riolu +448,Lucario +449,Hippopotas +450,Hippowdon +451,Skorupi +452,Drapion +453,Croagunk +454,Toxicroak +455,Carnivine +456,Finneon +457,Lumineon +458,Mantyke +459,Snover +460,Abomasnow +461,Weavile +462,Magnezone +463,Lickilicky +464,Rhyperior +465,Tangrowth +466,Electivire +467,Magmortar +468,Togekiss +469,Yanmega +470,Leafeon +471,Glaceon +472,Gliscor +473,Mamoswine +474,Porygon-Z +475,Gallade +476,Probopass +477,Dusknoir +478,Froslass +479,Rotom +480,Uxie +481,Mesprit +482,Azelf +483,Dialga +484,Palkia +485,Heatran +486,Regigigas +487,Giratina +488,Cresselia +489,Phione +490,Manaphy +491,Darkrai +492,Shaymin +493,Arceus +494,Victini +495,Snivy +496,Servine +497,Serperior +498,Tepig +499,Pignite +500,Emboar +501,Oshawott +502,Dewott +503,Samurott +504,Patrat +505,Watchog +506,Lillipup +507,Herdier +508,Stoutland +509,Purrloin +510,Liepard +511,Pansage +512,Simisage +513,Pansear +514,Simisear +515,Panpour +516,Simipour +517,Munna +518,Musharna +519,Pidove +520,Tranquill +521,Unfezant +522,Blitzle +523,Zebstrika +524,Roggenrola +525,Boldore +526,Gigalith +527,Woobat +528,Swoobat +528,Swoobat +529,Drilbur +530,Excadrill +531,Audino +532,Timburr +533,Gurdurr +534,Conkeldurr +535,Tympole +536,Palpitoad +537,Seismitoad +538,Throh +539,Sawk +540,Sewaddle +541,Swadloon +542,Leavanny +543,Venipede +544,Whirlipede +545,Scolipede +546,Cottonee +547,Whimsicott +548,Petilil +549,Lilligant +550,Basculin +551,Sandile +552,Krokorok +553,Krookodile +554,Darumaka +555,Darmanitan +556,Maractus +557,Dwebble +558,Crustle +559,Scraggy +560,Scrafty +561,Sigilyph +562,Yamask +563,Cofagrigus +564,Tirtouga +565,Carracosta +566,Archen +567,Archeops +568,Trubbish +569,Garbodor +570,Zorua +571,Zoroark +572,Minccino +573,Cinccino +574,Gothita +575,Gothorita +576,Gothitelle +577,Solosis +578,Duosion +579,Reuniclus +580,Ducklett +581,Swanna +582,Vanillite +583,Vanillish +584,Vanilluxe +585,Deerling +586,Sawsbuck +587,Emolga +588,Karrablast +589,Escavalier +590,Foongus +591,Amoonguss +592,Frillish +593,Jellicent +594,Alomomola +595,Joltik +596,Galvantula +597,Ferroseed +598,Ferrothorn +599,Klink +600,Klang +601,Klinklang +602,Tynamo +603,Eelektrik +604,Eelektross +605,Elgyem +606,Beheeyem +607,Litwick +608,Lampent +609,Chandelure +610,Axew +611,Fraxure +612,Haxorus +613,Cubchoo +614,Beartic +615,Cryogonal +616,Shelmet +617,Accelgor +618,Stunfisk +619,Mienfoo +620,Mienshao +621,Druddigon +622,Golett +623,Golurk +624,Pawniard +625,Bisharp +626,Bouffalant +627,Rufflet +628,Braviary +629,Vullaby +630,Mandibuzz +631,Heatmor +632,Durant +633,Deino +634,Zweilous +635,Hydreigon +636,Larvesta +637,Volcarona +638,Cobalion +639,Terrakion +640,Virizion +641,Tornadus +642,Thundurus +643,Reshiram +644,Zekrom +645,Landorus +646,Kyurem +647,Keldeo +648,Meloetta +649,Genesect +650,Chespin +651,Quilladin +652,Chesnaught +653,Fennekin +654,Braixen +655,Delphox +656,Froakie +657,Frogadier +658,Greninja +659,Bunnelby +660,Diggersby +661,Fletchling +662,Fletchinder +663,Talonflame +664,Scatterbug +665,Spewpa +666,Vivillon +667,Litleo +668,Pyroar +669,Flabébé +670,Floette +671,Florges +672,Skiddo +673,Gogoat +674,Pancham +675,Pangoro +676,Furfrou +677,Espurr +678,Meowstic +679,Honedge +680,Doublade +681,Aegislash +682,Spritzee +683,Aromatisse +684,Swirlix +685,Slurpuff +686,Inkay +687,Malamar +688,Binacle +689,Barbaracle +690,Skrelp +691,Dragalge +692,Clauncher +693,Clawitzer +694,Helioptile +695,Heliolisk +696,Tyrunt +697,Tyrantrum +698,Amaura +699,Aurorus +700,Sylveon +701,Hawlucha +702,Dedenne +703,Carbink +704,Goomy +705,Sliggoo +706,Goodra +707,Klefki +708,Phantump +709,Trevenant +710,Pumpkaboo +711,Gourgeist +712,Bergmite +713,Avalugg +714,Noibat +715,Noivern +716,Xerneas +717,Yveltal +718,Zygarde +719,Diancie +720,Hoopa +721,Volcanion +722,Rowlet +723,Dartrix +724,Decidueye +725,Litten +726,Torracat +727,Incineroar +728,Popplio +729,Brionne +730,Primarina +731,Pikipek +732,Trumbeak +733,Toucannon +734,Yungoos +735,Gumshoos +736,Grubbin +737,Charjabug +738,Vikavolt +739,Crabrawler +740,Crabominable +741,Oricorio +742,Cutiefly +743,Ribombee +744,Rockruff +745,Lycanroc +746,Wishiwashi +747,Mareanie +748,Toxapex +749,Mudbray +750,Mudsdale +751,Dewpider +752,Araquanid +753,Fomantis +754,Lurantis +755,Morelull +756,Shiinotic +757,Salandit +758,Salazzle +759,Stufful +760,Bewear +761,Bounsweet +762,Steenee +763,Tsareena +764,Comfey +765,Oranguru +766,Passimian +767,Wimpod +768,Golisopod +769,Sandygast +770,Palossand +771,Pyukumuku +772,Type:Null +773,Silvally +774,Minior +775,Komala +776,Turtonator +777,Togedemaru +778,Mimikyu +779,Bruxish +780,Drampa +781,Dhelmise +782,Jangmo-o +783,Hakamo-o +784,Kommo-o +785,TapuKoko +786,TapuLele +787,TapuBulu +788,TapuFini +789,Cosmog +790,Cosmoem +791,Solgaleo +792,Lunala +793,Nihilego +794,Buzzwole +795,Pheromosa +796,Xurkitree +797,Celesteela +798,Kartana +799,Guzzlord +800,Necrozma +801,Magearna +802,Marshadow +803,Poipole +804,Naganadel +805,Stakataka +806,Blacephalon +807,Zeraora +808,Meltan +809,Melmetal +810,Grookey +811,Thwackey +812,Rillaboom +813,Scorbunny +814,Raboot +815,Cinderace +816,Sobble +817,Drizzile +818,Inteleon +819,Skwovet +820,Greedent +821,Rookidee +822,Corvisquire +823,Corviknight +824,Blipbug +825,Dottler +826,Orbeetle +827,Nickit +828,Thievul +829,Gossifleur +830,Eldegoss +831,Wooloo +832,Dubwool +833,Chewtle +834,Drednaw +835,Yamper +836,Boltund +837,Rolycoly +838,Carkol +839,Coalossal +840,Applin +841,Flapple +842,Appletun +843,Silicobra +844,Sandaconda +845,Cramorant +846,Arrokuda +847,Barraskewda +848,Toxel +849,Toxtricity +850,Sizzlipede +851,Centiskorch +852,Clobbopus +853,Grapploct +854,Sinistea +855,Polteageist +856,Hatenna +857,Hattrem +858,Hatterene +859,Impidimp +860,Morgrem +861,Grimmsnarl +862,Obstagoon +863,Perrserker +864,Cursola +865,Sirfetch'd +866,Mr.Rime +867,Runerigus +868,Milcery +869,Alcremie +870,Falinks +871,Pincurchin +872,Snom +873,Frosmoth +874,Stonjourner +875,Eiscue +876,Indeedee +877,Morpeko +878,Cufant +879,Copperajah +880,Dracozolt +881,Arctozolt +882,Dracovish +883,Arctovish +884,Duraludon +885,Dreepy +886,Drakloak +887,Dragapult +888,Zacian +889,Zamazenta +890,Eternatus +891,Kubfu +892,Urshifu +893,Zarude +894,Regieleki +895,Regidrago +896,Glastrier +897,Spectrier +898,Calyrex diff --git a/db/migrate/20231102230947_create_pokemons.rb b/db/migrate/20231102230947_create_pokemons.rb new file mode 100644 index 0000000..764aceb --- /dev/null +++ b/db/migrate/20231102230947_create_pokemons.rb @@ -0,0 +1,10 @@ +class CreatePokemons < ActiveRecord::Migration[7.1] + def change + create_table :pokemons do |t| + t.integer :pokedex_num, null: false + t.string :name, null: false + + t.timestamps + end + end +end diff --git a/db/schema.rb b/db/schema.rb index 0982ec0..f6cad56 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.1].define(version: 2023_11_02_223203) do +ActiveRecord::Schema[7.1].define(version: 2023_11_02_230947) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -59,6 +59,13 @@ ActiveRecord::Schema[7.1].define(version: 2023_11_02_223203) do t.datetime "updated_at", null: false end + create_table "pokemons", force: :cascade do |t| + t.integer "pokedex_num", null: false + t.string "name", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + create_table "runs", force: :cascade do |t| t.string "title", null: false t.text "description" diff --git a/db/seeds.rb b/db/seeds.rb index ce6f747..c68e9ae 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -8,6 +8,8 @@ # MovieGenre.find_or_create_by!(name: genre_name) # end +require "csv" + [ "Pokémon Red", "Pokémon Blue", "Pokémon Yellow", "Pokémon Gold", "Pokémon Silver", "Pokémon Crystal", "Pokémon Ruby", "Pokémon Sapphire", "Pokémon Emerald", @@ -21,3 +23,8 @@ ].each do |title| Game.create(title:) end + +csv_file = Rails.root.join("db/data/pokemon.csv") +CSV.foreach(csv_file, headers: true) do |row| + Pokemon.create(pokedex_num: row["pokedex_num"].to_i, name: row["name"]) +end diff --git a/test/fixtures/pokemons.yml b/test/fixtures/pokemons.yml new file mode 100644 index 0000000..0a1883c --- /dev/null +++ b/test/fixtures/pokemons.yml @@ -0,0 +1,9 @@ +# Read about fixtures at https://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html + +one: + pokedex_num: 1 + name: MyString + +two: + pokedex_num: 1 + name: MyString diff --git a/test/models/pokemon_test.rb b/test/models/pokemon_test.rb new file mode 100644 index 0000000..b2763dc --- /dev/null +++ b/test/models/pokemon_test.rb @@ -0,0 +1,7 @@ +require "test_helper" + +class PokemonTest < ActiveSupport::TestCase + # test "the truth" do + # assert true + # end +end -- cgit v1.2.3