From 58b913f5b8c07e877d4f746fb9591921924d1f79 Mon Sep 17 00:00:00 2001 From: Mitchell Gerber Date: Sat, 13 Jan 2018 14:31:28 -0600 Subject: [PATCH] server - hard code all seeds for consistency --- lib/myapp/data/category.ex | 6 - priv/repo/seeds.exs | 299 +++++++++++++++++++------------------ 2 files changed, 153 insertions(+), 152 deletions(-) diff --git a/lib/myapp/data/category.ex b/lib/myapp/data/category.ex index c54a890..f8a26a2 100644 --- a/lib/myapp/data/category.ex +++ b/lib/myapp/data/category.ex @@ -11,12 +11,6 @@ defmodule MyApp.Data.Category do field :title, :string end - def changeset(category, params \\ %{}) do - category - |> cast(params, [:category, :title]) - |> validate_required([:category, :title]) - end - def get_categories() do Repo.all(Data.Category) end diff --git a/priv/repo/seeds.exs b/priv/repo/seeds.exs index 6a8434b..2b676d6 100644 --- a/priv/repo/seeds.exs +++ b/priv/repo/seeds.exs @@ -10,174 +10,181 @@ # We recommend using the bang functions (`insert!`, `update!` # and so on) as they will fail if something goes wrong. +import Ecto.Changeset alias MyApp.Repo alias MyApp.Data defmodule Category do def get_seed() do - map_categories("class", get_classes()) - |> Enum.concat(map_categories("realm", get_realms())) - |> Enum.concat(map_categories("other", get_other())) - end - - defp map_categories(category, titles) do - titles - |> Enum.map(fn (t) -> %{category: category, title: t} end) + get_classes() + |> Enum.concat(get_realms()) + |> Enum.concat(get_other()) end defp get_classes() do [ - "Druid", - "Rogue", - "Priest", - "Hunter", - "Shaman", - "Warrior", - "Mage", - "Paladin", - "Warlock", + %{"id" => 0, "category" => "class", "title" => "Druid"}, + %{"id" => 1, "category" => "class", "title" => "Rogue"}, + %{"id" => 2, "category" => "class", "title" => "Priest"}, + %{"id" => 3, "category" => "class", "title" => "Hunter"}, + %{"id" => 4, "category" => "class", "title" => "Shaman"}, + %{"id" => 5, "category" => "class", "title" => "Warrior"}, + %{"id" => 6, "category" => "class", "title" => "Mage"}, + %{"id" => 7, "category" => "class", "title" => "Paladin"}, + %{"id" => 8, "category" => "class", "title" => "Warlock"}, ] end defp get_realms() do [ - "Aegwynn", - "Agamaggan", - "Aggramar", - "Akama", - "Alleria", - "Archimonde", - "Argent Dawn", - "Arthas", - "Azgalor", - "Azjol-Nerub", - "Azshara", - "Blackhand", - "Blackrock", - "Bleeding Hollow", - "Bloodhoof", - "Bloodscalp", - "Bonechewer", - "Boulderfist", - "Bronzebeard", - "Burning Blade", - "Burning Legion", - "Cenarion Circle", - "Cenarius", - "Cho'gall", - "Chromaggus", - "Crushridge", - "Daggerspine", - "Dalaran", - "Dark Iron", - "Darkspear", - "Deathwing", - "Destromath", - "Dethecus", - "Detheroc", - "Doomhammer", - "Draenor", - "Dragonblight", - "Dragonmaw", - "Draka", - "Dunemaul", - "Durotan", - "Earthen Ring", - "Eldre'Thalas", - "Elune", - "Emerald Dream", - "Eonar", - "Eredar", - "Feathermoon", - "Firetree", - "Frostmane", - "Frostmourne", - "Frostwolf", - "Garona", - "Gilneas", - "Greymane", - "Gorefiend", - "Gorgonnash", - "Gurubashi", - "Hellscream", - "Hyjal", - "Icecrown", - "Illidan", - "Kargath", - "Kalecgos", - "Kael'thas", - "Kel'Thuzad", - "Khadgar", - "Khaz'goroth", - "Kil'Jaeden", - "Kilrogg", - "Kirin Tor", - "Laughing Skull", - "Lightbringer", - "Lightning's Blade", - "Lightninghoof", - "Llane", - "Lothar", - "Magtheridon", - "Maelstrom", - "Mal'Ganis", - "Malfurion", - "Malygos", - "Mannoroth", - "Medivh", - "Moonrunner", - "Nathrezim", - "Ner'zhul", - "Perenolde", - "Proudmoore", - "Sargeras", - "Scarlet Crusade", - "Shadow Council", - "Shadow Moon", - "Shadowsong", - "Shattered Hand", - "Silver Hand", - "Silvermoon", - "Skullcrusher", - "Skywall", - "Smolderthorn", - "Spinebreaker", - "Spirestone", - "Staghelm", - "Stonemaul", - "Stormrage", - "Stormreaver", - "Stormscale", - "Suramar", - "Terenas", - "Test", - "Thunderhorn", - "Thunderlord", - "Tichondrius", - "Twisting Nether", - "Uldum", - "Uther", - "Ursin", - "Warsong", - "Whisperwind", - "Wildhammer", - "Windrunner", - "Zul'jin", + %{"id" => 9, "category" => "realm", "title" => "Aegwynn"}, + %{"id" => 10, "category" => "realm", "title" => "Agamaggan"}, + %{"id" => 11, "category" => "realm", "title" => "Aggramar"}, + %{"id" => 12, "category" => "realm", "title" => "Akama"}, + %{"id" => 13, "category" => "realm", "title" => "Alleria"}, + %{"id" => 14, "category" => "realm", "title" => "Archimonde"}, + %{"id" => 15, "category" => "realm", "title" => "Argent Dawn"}, + %{"id" => 16, "category" => "realm", "title" => "Arthas"}, + %{"id" => 17, "category" => "realm", "title" => "Azgalor"}, + %{"id" => 18, "category" => "realm", "title" => "Azjol-Nerub"}, + %{"id" => 19, "category" => "realm", "title" => "Azshara"}, + %{"id" => 20, "category" => "realm", "title" => "Blackhand"}, + %{"id" => 21, "category" => "realm", "title" => "Blackrock"}, + %{"id" => 22, "category" => "realm", "title" => "Bleeding Hollow"}, + %{"id" => 23, "category" => "realm", "title" => "Bloodhoof"}, + %{"id" => 24, "category" => "realm", "title" => "Bloodscalp"}, + %{"id" => 25, "category" => "realm", "title" => "Bonechewer"}, + %{"id" => 26, "category" => "realm", "title" => "Boulderfist"}, + %{"id" => 27, "category" => "realm", "title" => "Bronzebeard"}, + %{"id" => 28, "category" => "realm", "title" => "Burning Blade"}, + %{"id" => 29, "category" => "realm", "title" => "Burning Legion"}, + %{"id" => 30, "category" => "realm", "title" => "Cenarion Circle"}, + %{"id" => 31, "category" => "realm", "title" => "Cenarius"}, + %{"id" => 32, "category" => "realm", "title" => "Cho'gall"}, + %{"id" => 33, "category" => "realm", "title" => "Chromaggus"}, + %{"id" => 34, "category" => "realm", "title" => "Crushridge"}, + %{"id" => 35, "category" => "realm", "title" => "Daggerspine"}, + %{"id" => 36, "category" => "realm", "title" => "Dalaran"}, + %{"id" => 37, "category" => "realm", "title" => "Dark Iron"}, + %{"id" => 38, "category" => "realm", "title" => "Darkspear"}, + %{"id" => 39, "category" => "realm", "title" => "Deathwing"}, + %{"id" => 40, "category" => "realm", "title" => "Destromath"}, + %{"id" => 41, "category" => "realm", "title" => "Dethecus"}, + %{"id" => 42, "category" => "realm", "title" => "Detheroc"}, + %{"id" => 43, "category" => "realm", "title" => "Doomhammer"}, + %{"id" => 44, "category" => "realm", "title" => "Draenor"}, + %{"id" => 45, "category" => "realm", "title" => "Dragonblight"}, + %{"id" => 46, "category" => "realm", "title" => "Dragonmaw"}, + %{"id" => 47, "category" => "realm", "title" => "Draka"}, + %{"id" => 48, "category" => "realm", "title" => "Dunemaul"}, + %{"id" => 49, "category" => "realm", "title" => "Durotan"}, + %{"id" => 50, "category" => "realm", "title" => "Earthen Ring"}, + %{"id" => 51, "category" => "realm", "title" => "Eldre'Thalas"}, + %{"id" => 52, "category" => "realm", "title" => "Elune"}, + %{"id" => 53, "category" => "realm", "title" => "Emerald Dream"}, + %{"id" => 54, "category" => "realm", "title" => "Eonar"}, + %{"id" => 55, "category" => "realm", "title" => "Eredar"}, + %{"id" => 56, "category" => "realm", "title" => "Feathermoon"}, + %{"id" => 57, "category" => "realm", "title" => "Firetree"}, + %{"id" => 58, "category" => "realm", "title" => "Frostmane"}, + %{"id" => 59, "category" => "realm", "title" => "Frostmourne"}, + %{"id" => 60, "category" => "realm", "title" => "Frostwolf"}, + %{"id" => 61, "category" => "realm", "title" => "Garona"}, + %{"id" => 62, "category" => "realm", "title" => "Gilneas"}, + %{"id" => 63, "category" => "realm", "title" => "Greymane"}, + %{"id" => 64, "category" => "realm", "title" => "Gorefiend"}, + %{"id" => 65, "category" => "realm", "title" => "Gorgonnash"}, + %{"id" => 66, "category" => "realm", "title" => "Gurubashi"}, + %{"id" => 67, "category" => "realm", "title" => "Hellscream"}, + %{"id" => 68, "category" => "realm", "title" => "Hyjal"}, + %{"id" => 69, "category" => "realm", "title" => "Icecrown"}, + %{"id" => 70, "category" => "realm", "title" => "Illidan"}, + %{"id" => 71, "category" => "realm", "title" => "Kargath"}, + %{"id" => 72, "category" => "realm", "title" => "Kalecgos"}, + %{"id" => 73, "category" => "realm", "title" => "Kael'thas"}, + %{"id" => 74, "category" => "realm", "title" => "Kel'Thuzad"}, + %{"id" => 75, "category" => "realm", "title" => "Khadgar"}, + %{"id" => 76, "category" => "realm", "title" => "Khaz'goroth"}, + %{"id" => 77, "category" => "realm", "title" => "Kil'Jaeden"}, + %{"id" => 78, "category" => "realm", "title" => "Kilrogg"}, + %{"id" => 79, "category" => "realm", "title" => "Kirin Tor"}, + %{"id" => 80, "category" => "realm", "title" => "Laughing Skull"}, + %{"id" => 81, "category" => "realm", "title" => "Lightbringer"}, + %{"id" => 82, "category" => "realm", "title" => "Lightning's Blade"}, + %{"id" => 83, "category" => "realm", "title" => "Lightninghoof"}, + %{"id" => 84, "category" => "realm", "title" => "Llane"}, + %{"id" => 85, "category" => "realm", "title" => "Lothar"}, + %{"id" => 86, "category" => "realm", "title" => "Magtheridon"}, + %{"id" => 87, "category" => "realm", "title" => "Maelstrom"}, + %{"id" => 88, "category" => "realm", "title" => "Mal'Ganis"}, + %{"id" => 89, "category" => "realm", "title" => "Malfurion"}, + %{"id" => 90, "category" => "realm", "title" => "Malygos"}, + %{"id" => 91, "category" => "realm", "title" => "Mannoroth"}, + %{"id" => 92, "category" => "realm", "title" => "Medivh"}, + %{"id" => 93, "category" => "realm", "title" => "Moonrunner"}, + %{"id" => 94, "category" => "realm", "title" => "Nathrezim"}, + %{"id" => 95, "category" => "realm", "title" => "Ner'zhul"}, + %{"id" => 96, "category" => "realm", "title" => "Perenolde"}, + %{"id" => 97, "category" => "realm", "title" => "Proudmoore"}, + %{"id" => 98, "category" => "realm", "title" => "Sargeras"}, + %{"id" => 99, "category" => "realm", "title" => "Scarlet Crusade"}, + %{"id" => 100, "category" => "realm", "title" => "Shadow Council"}, + %{"id" => 101, "category" => "realm", "title" => "Shadow Moon"}, + %{"id" => 102, "category" => "realm", "title" => "Shadowsong"}, + %{"id" => 103, "category" => "realm", "title" => "Shattered Hand"}, + %{"id" => 104, "category" => "realm", "title" => "Silver Hand"}, + %{"id" => 105, "category" => "realm", "title" => "Silvermoon"}, + %{"id" => 106, "category" => "realm", "title" => "Skullcrusher"}, + %{"id" => 107, "category" => "realm", "title" => "Skywall"}, + %{"id" => 108, "category" => "realm", "title" => "Smolderthorn"}, + %{"id" => 109, "category" => "realm", "title" => "Spinebreaker"}, + %{"id" => 110, "category" => "realm", "title" => "Spirestone"}, + %{"id" => 111, "category" => "realm", "title" => "Staghelm"}, + %{"id" => 112, "category" => "realm", "title" => "Stonemaul"}, + %{"id" => 113, "category" => "realm", "title" => "Stormrage"}, + %{"id" => 114, "category" => "realm", "title" => "Stormreaver"}, + %{"id" => 115, "category" => "realm", "title" => "Stormscale"}, + %{"id" => 116, "category" => "realm", "title" => "Suramar"}, + %{"id" => 117, "category" => "realm", "title" => "Terenas"}, + %{"id" => 118, "category" => "realm", "title" => "Test"}, + %{"id" => 119, "category" => "realm", "title" => "Thunderhorn"}, + %{"id" => 120, "category" => "realm", "title" => "Thunderlord"}, + %{"id" => 121, "category" => "realm", "title" => "Tichondrius"}, + %{"id" => 122, "category" => "realm", "title" => "Twisting Nether"}, + %{"id" => 123, "category" => "realm", "title" => "Uldum"}, + %{"id" => 124, "category" => "realm", "title" => "Uther"}, + %{"id" => 125, "category" => "realm", "title" => "Ursin"}, + %{"id" => 126, "category" => "realm", "title" => "Warsong"}, + %{"id" => 127, "category" => "realm", "title" => "Whisperwind"}, + %{"id" => 128, "category" => "realm", "title" => "Wildhammer"}, + %{"id" => 129, "category" => "realm", "title" => "Windrunner"}, + %{"id" => 130, "category" => "realm", "title" => "Zul'jin"}, ] end defp get_other() do [ - "Off-Topic", - "Guild Recruitment", - "General Discussion", - "Suggestions", - "Role-Playing", - "Raid and Dungeon Discussion", + %{"id" => 131, "category" => "other", "title" => "Off-Topic"}, + %{"id" => 132, "category" => "other", "title" => "Guild Recruitment"}, + %{"id" => 133, "category" => "other", "title" => "General Discussion"}, + %{"id" => 134, "category" => "other", "title" => "Suggestions"}, + %{"id" => 135, "category" => "other", "title" => "Role-Playing"}, + %{"id" => 136, "category" => "other", "title" => "Raid and Dungeon Discussion"}, ] end end -Repo.insert_all(Data.Category, Category.get_seed()) +# insert if not exists +Enum.each(Category.get_seed(), fn(cat) -> + Repo.transaction(fn -> + exists = Repo.get_by(Data.Category, %{id: Map.get(cat, "id")}) != nil + + if !exists do + %Data.Category{} + |> cast(cat, [:id, :category, :title]) + |> Repo.insert! + end + end) +end)