Skip to content

Commit

Permalink
Merge pull request #43 from moondrek/fix-migration-scripts
Browse files Browse the repository at this point in the history
Fix database migration scripts
  • Loading branch information
warronbebster authored Feb 28, 2024
2 parents 82fe999 + 60121af commit d65bcba
Show file tree
Hide file tree
Showing 11 changed files with 168 additions and 28 deletions.
16 changes: 15 additions & 1 deletion priv/repo/migrations/20210116183505_create_cities.exs
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,26 @@ defmodule MayorGame.Repo.Migrations.CreateCities do

@timestamps_opts [type: :utc_datetime]

def resources do
[
"oil",
"coal",
"gems",
"gold",
"diamond",
"stone",
"copper",
"iron",
"water"
]
end

def change do
create table(:cities) do
add :title, :string, null: false
add :region, :string
add :climate, :string
add :resources, :map, default: Map.new(MayorGame.City.Town.resources(), fn x -> {x, 0} end)
add :resources, :map, default: Map.new(resources(), fn x -> {x, 0} end)

add :logs, {:array, :string}, default: ["City created"]

Expand Down
84 changes: 82 additions & 2 deletions priv/repo/migrations/20210502000913_add_buildables.exs
Original file line number Diff line number Diff line change
@@ -1,11 +1,91 @@
defmodule MayorGame.Repo.Migrations.AddBuildables do
use Ecto.Migration
import MayorGame.City.Buildable
# import MayorGame.City.Buildable

@timestamps_opts [type: :utc_datetime]
@buildables_list [
:huts,
:single_family_homes,
:multi_family_homes,
:homeless_shelters,
:apartments,
:micro_apartments,
:high_rises,
# :megablocks,
:roads,
:highways,
:airports,
:subway_lines,
:bus_lines,
:bike_lanes,
:bikeshare_stations,
:coal_plants,
# :natural_gas_plants,
:wind_turbines,
:solar_plants,
:nuclear_plants,
:dams,
# :fusion_reactors,
:carbon_capture_plants,
:parks,
# :campgrounds,
# :nature_preserves,
:libraries,
:schools,
:middle_schools,
:high_schools,
:universities,
:research_labs,
# :mines,
# :lumber_yards,
# :fisheries,
# :uranium_mines,
# :oil_wells,
# :lithium_mines,
# :reservoirs,
# :salt_farms,
# :quarries,
# :desalination_plants,
# :rice_farms,
# :wheat_farms,
# :produce_farms,
# :livestock_farms,
# :vineyards,
# :bakeries,
# :sushi_restaurants,
# :farmers_markets,
# :delis,
# :grocery_stores,
# :butchers,
:retail_shops,
:factories,
:office_buildings,
# :distribution_centers,
:theatres,
:arenas,
# :zoos,
# :aquariums,
# :ski_resorts,
# :resorts,
:hospitals,
:doctor_offices
# :air_bases,
# :defense_bases,
# :missile_defense_arrays,
# :wood_warehouses,
# :fish_tanks,
# :lithium_vats,
# :salt_sheds,
# :rock_yards,
# :water_tanks,
# :cow_pens,
# :silos,
# :refrigerated_warehouses
]
defmacro buildables_list, do: @buildables_list

def change do
for buildable <- buildables_list() do
for buildable <- @buildables_list do
create table(buildable) do
add :enabled, :boolean, default: true
add :reason, {:array, :string}, default: []
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
defmodule MayorGame.Repo.Migrations.AddPollutionToTownDb do
defmodule MayorGame.Repo.Migrations.AddHasJobToCitizen do
use Ecto.Migration

def change do
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
defmodule MayorGame.Repo.Migrations.RemoveUpgradesFromBuildables do
use Ecto.Migration
import MayorGame.City.Buildable
require MayorGame.Repo.Migrations.AddBuildables

@buildables_list MayorGame.Repo.Migrations.AddBuildables.buildables_list()
defmacro buildables_list, do: @buildables_list

def change do
for buildable <- buildables_list() do
for buildable <- @buildables_list do
alter table(buildable) do
remove :upgrades
remove(:upgrades)
end
end
end
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
defmodule MayorGame.Repo.Migrations.RemoveUpgradesFromBuildables do
defmodule MayorGame.Repo.Migrations.RemoveReasonFromBuildables do
use Ecto.Migration
import MayorGame.City.Buildable
require MayorGame.Repo.Migrations.RemoveUpgradesFromBuildables

@buildables_list MayorGame.Repo.Migrations.RemoveUpgradesFromBuildables.buildables_list()
defmacro buildables_list, do: @buildables_list

def change do
for buildable <- buildables_list() do
for buildable <- @buildables_list do
alter table(buildable) do
remove :reason
remove :enabled
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
defmodule MayorGame.Repo.Migrations.RemovePollutionTreasuryFromDetails do
defmodule MayorGame.Repo.Migrations.RemoveCruftFromCitizens do
use Ecto.Migration

def change do
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
defmodule MayorGame.Repo.Migrations.AddCitizenCountToTowns do
defmodule MayorGame.Repo.Migrations.AddMissilesToTown do
use Ecto.Migration

def change do
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
defmodule MayorGame.Repo.Migrations.AddBuildablesCountToTown do
use Ecto.Migration
import MayorGame.City.Buildable
require MayorGame.Repo.Migrations.RemoveReasonFromBuildables

@buildables_list MayorGame.Repo.Migrations.RemoveReasonFromBuildables.buildables_list() ++
[:air_bases, :mines, :defense_bases]
defmacro buildables_list, do: @buildables_list

def change do
for buildable <- buildables_list() do
for buildable <- @buildables_list do
alter table(:cities) do
add(buildable, :integer, default: 0)
end
Expand Down
7 changes: 5 additions & 2 deletions priv/repo/migrations/20230205202717_drop_details.exs
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
defmodule MayorGame.Repo.Migrations.DropDetails do
use Ecto.Migration
import MayorGame.City.Buildable
require MayorGame.Repo.Migrations.AddBuildablesCountToTown

@buildables_list MayorGame.Repo.Migrations.AddBuildablesCountToTown.buildables_list()
defmacro buildables_list, do: @buildables_list

def change do
for buildable <- buildables_list() do
for buildable <- @buildables_list do
drop(table(buildable))
end

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,39 @@
defmodule MayorGame.Repo.Migrations.ConstraintBuildablesToPositive do
use Ecto.Migration
import MayorGame.City.Buildable
require MayorGame.Repo.Migrations.DropDetails

@buildables_list MayorGame.Repo.Migrations.DropDetails.buildables_list() ++
[
:megablocks,
:natural_gas_plants,
:fusion_reactors,
:campgrounds,
:nature_preserves,
:lumber_yards,
:fisheries,
:uranium_mines,
:oil_wells,
:lithium_mines,
:reservoirs,
:salt_farms,
:quarries,
:distribution_centers,
:zoos,
:aquariums,
:ski_resorts,
:resorts,
:missile_defense_arrays,
:wood_warehouses,
:fish_tanks,
:lithium_vats,
:salt_sheds,
:rock_yards,
:water_tanks
]
defmacro buildables_list, do: @buildables_list

def change do
for buildable <- buildables_list() do
for buildable <- @buildables_list do
create constraint("cities", String.to_atom(to_string(buildable) <> "_must_be_positive"),
check: "#{to_string(buildable)} >= 0"
)
Expand Down
23 changes: 13 additions & 10 deletions priv/repo/seeds.exs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ randomString = :crypto.strong_rand_bytes(32) |> Base.encode64(padding: false) |>
cityName = String.replace(randomString, "/", "a") <> "ville"

alias MayorGame.Auth.User
alias MayorGame.City.{Town, Citizens}
alias MayorGame.City.{Town}
alias MayorGame.{Auth, City}

# {:ok, %World{}} = City.create_world(%{day: 0, pollution: 0})
Expand Down Expand Up @@ -50,12 +50,15 @@ Auth.create_user(%{
user_id: madeUser_id
})

# create citizens
{:ok, %Citizens{}} =
City.create_citizens(%{
"town_id" => madeTown_id,
"age" => 0,
"has_job" => false,
"education" => 0,
"has_car" => false
})

# citizens don't get their own table anymore
# {:ok, %Citizens{}} =
# City.create_citizens(%{
# :town_id => madeTown_id,
# :age => 0,
# :has_job => false,
# :education => 0,
# :has_car => false,
# :last_moved => 0
# })

0 comments on commit d65bcba

Please sign in to comment.