add db migrations for ammo group to pack and ammo type class
This commit is contained in:
		| @@ -1,5 +1,6 @@ | |||||||
| # v0.9.1 | # v0.9.1 | ||||||
| - Rename ammo_type's type to class to avoid confusion | - Rename ammo type's "type" to "class" to avoid confusion | ||||||
|  | - Fixes ammo type search | ||||||
| - Code quality improvements | - Code quality improvements | ||||||
|  |  | ||||||
| # v0.9.0 | # v0.9.0 | ||||||
|   | |||||||
| @@ -1,7 +1,117 @@ | |||||||
| defmodule Cannery.Repo.Migrations.RenameTypeToClass do | defmodule Cannery.Repo.Migrations.RenameTypeToClass do | ||||||
|   use Ecto.Migration |   use Ecto.Migration | ||||||
|  |  | ||||||
|   def change do |   def up do | ||||||
|  |     drop index(:ammo_types, [:type]) | ||||||
|  |  | ||||||
|  |     flush() | ||||||
|  |  | ||||||
|     rename table(:ammo_types), :type, to: :class |     rename table(:ammo_types), :type, to: :class | ||||||
|  |  | ||||||
|  |     alter table(:ammo_types) do | ||||||
|  |       remove_if_exists :search, :tsvector | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     flush() | ||||||
|  |  | ||||||
|  |     create index(:ammo_types, [:class]) | ||||||
|  |  | ||||||
|  |     execute """ | ||||||
|  |     ALTER TABLE ammo_types | ||||||
|  |       ADD COLUMN search tsvector | ||||||
|  |         GENERATED ALWAYS AS ( | ||||||
|  |         setweight(to_tsvector('english', coalesce("name", '')), 'A') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("desc", '')), 'B') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("class", '')), 'B') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("manufacturer", '')), 'C') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("upc", '')), 'C') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("bullet_type", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("bullet_core", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("cartridge", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("caliber", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("case_material", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("jacket_type", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', immutable_to_string("muzzle_velocity", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("powder_type", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', immutable_to_string("powder_grains_per_charge", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', immutable_to_string("grains", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("pressure", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("primer_type", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("firing_type", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("wadding", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("shot_type", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("shot_material", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("shot_size", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("unfired_length", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("brass_height", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("chamber_size", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', immutable_to_string("load_grains", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("shot_charge_weight", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("dram_equivalent", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', boolean_to_string("tracer", 'tracer', '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', boolean_to_string("incendiary", 'incendiary', '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', boolean_to_string("blank", 'blank', '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', boolean_to_string("corrosive", 'corrosive', '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("manufacturer", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("upc", '')), 'D') | ||||||
|  |       ) STORED | ||||||
|  |     """ | ||||||
|  |   end | ||||||
|  |  | ||||||
|  |   def down do | ||||||
|  |     drop index(:ammo_types, [:class]) | ||||||
|  |  | ||||||
|  |     flush() | ||||||
|  |  | ||||||
|  |     rename table(:ammo_types), :class, to: :type | ||||||
|  |  | ||||||
|  |     alter table(:ammo_types) do | ||||||
|  |       remove_if_exists :search, :tsvector | ||||||
|  |     end | ||||||
|  |  | ||||||
|  |     flush() | ||||||
|  |  | ||||||
|  |     create index(:ammo_types, [:type]) | ||||||
|  |  | ||||||
|  |     execute """ | ||||||
|  |     ALTER TABLE ammo_types | ||||||
|  |       ADD COLUMN search TSVECTOR | ||||||
|  |         GENERATED ALWAYS AS ( | ||||||
|  |         setweight(to_tsvector('english', coalesce("name", '')), 'A') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("desc", '')), 'B') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("type", '')), 'B') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("manufacturer", '')), 'C') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("upc", '')), 'C') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("bullet_type", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("bullet_core", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("cartridge", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("caliber", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("case_material", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("jacket_type", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', immutable_to_string("muzzle_velocity", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("powder_type", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', immutable_to_string("powder_grains_per_charge", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', immutable_to_string("grains", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("pressure", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("primer_type", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("firing_type", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("wadding", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("shot_type", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("shot_material", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("shot_size", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("unfired_length", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("brass_height", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("chamber_size", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', immutable_to_string("load_grains", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("shot_charge_weight", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("dram_equivalent", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', boolean_to_string("tracer", 'tracer', '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', boolean_to_string("incendiary", 'incendiary', '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', boolean_to_string("blank", 'blank', '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', boolean_to_string("corrosive", 'corrosive', '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("manufacturer", '')), 'D') || | ||||||
|  |         setweight(to_tsvector('english', coalesce("upc", '')), 'D') | ||||||
|  |       ) STORED | ||||||
|  |     """ | ||||||
|   end |   end | ||||||
| end | end | ||||||
|   | |||||||
| @@ -5,6 +5,9 @@ defmodule Cannery.Repo.Migrations.RenameAmmoGroupsToPacks do | |||||||
|     drop index(:ammo_groups, [:user_id], where: "count = 0", name: :empty_ammo_groups_index) |     drop index(:ammo_groups, [:user_id], where: "count = 0", name: :empty_ammo_groups_index) | ||||||
|     drop index(:ammo_groups, [:user_id, :ammo_type_id]) |     drop index(:ammo_groups, [:user_id, :ammo_type_id]) | ||||||
|     drop index(:ammo_groups, [:user_id, :container_id]) |     drop index(:ammo_groups, [:user_id, :container_id]) | ||||||
|  |     drop index(:ammo_groups, [:ammo_type_id]) | ||||||
|  |     drop index(:ammo_groups, [:container_id]) | ||||||
|  |     drop index(:ammo_groups, [:user_id]) | ||||||
|  |  | ||||||
|     flush() |     flush() | ||||||
|  |  | ||||||
| @@ -15,6 +18,9 @@ defmodule Cannery.Repo.Migrations.RenameAmmoGroupsToPacks do | |||||||
|     create index(:packs, [:user_id], where: "count = 0", name: :empty_packs_index) |     create index(:packs, [:user_id], where: "count = 0", name: :empty_packs_index) | ||||||
|     create index(:packs, [:user_id, :ammo_type_id]) |     create index(:packs, [:user_id, :ammo_type_id]) | ||||||
|     create index(:packs, [:user_id, :container_id]) |     create index(:packs, [:user_id, :container_id]) | ||||||
|  |     create index(:packs, [:ammo_type_id]) | ||||||
|  |     create index(:packs, [:container_id]) | ||||||
|  |     create index(:packs, [:user_id]) | ||||||
|  |  | ||||||
|     rename table(:shot_groups), :ammo_group_id, to: :pack_id |     rename table(:shot_groups), :ammo_group_id, to: :pack_id | ||||||
|   end |   end | ||||||
| @@ -23,6 +29,9 @@ defmodule Cannery.Repo.Migrations.RenameAmmoGroupsToPacks do | |||||||
|     drop index(:packs, [:user_id], where: "count = 0", name: :empty_packs_index) |     drop index(:packs, [:user_id], where: "count = 0", name: :empty_packs_index) | ||||||
|     drop index(:packs, [:user_id, :ammo_type_id]) |     drop index(:packs, [:user_id, :ammo_type_id]) | ||||||
|     drop index(:packs, [:user_id, :container_id]) |     drop index(:packs, [:user_id, :container_id]) | ||||||
|  |     drop index(:packs, [:ammo_type_id]) | ||||||
|  |     drop index(:packs, [:container_id]) | ||||||
|  |     drop index(:packs, [:user_id]) | ||||||
|  |  | ||||||
|     flush() |     flush() | ||||||
|  |  | ||||||
| @@ -33,6 +42,9 @@ defmodule Cannery.Repo.Migrations.RenameAmmoGroupsToPacks do | |||||||
|     create index(:ammo_groups, [:user_id], where: "count = 0", name: :empty_ammo_groups_index) |     create index(:ammo_groups, [:user_id], where: "count = 0", name: :empty_ammo_groups_index) | ||||||
|     create index(:ammo_groups, [:user_id, :ammo_type_id]) |     create index(:ammo_groups, [:user_id, :ammo_type_id]) | ||||||
|     create index(:ammo_groups, [:user_id, :container_id]) |     create index(:ammo_groups, [:user_id, :container_id]) | ||||||
|  |     create index(:ammo_groups, [:ammo_type_id]) | ||||||
|  |     create index(:ammo_groups, [:container_id]) | ||||||
|  |     create index(:ammo_groups, [:user_id]) | ||||||
|  |  | ||||||
|     rename table(:shot_groups), :pack_id, to: :ammo_group_id |     rename table(:shot_groups), :pack_id, to: :ammo_group_id | ||||||
|   end |   end | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user