Files
component-system/priv/repo/migrations/20250914113737_create_storage_locations.exs
2025-09-14 15:20:25 +02:00

30 lines
1.0 KiB
Elixir

defmodule ComponentsElixir.Repo.Migrations.CreateStorageLocations do
use Ecto.Migration
def change do
create table(:storage_locations) do
add :name, :string, null: false
add :description, :text
add :qr_code, :string, null: false
add :level, :integer, default: 0
add :path, :text, null: false
add :is_active, :boolean, default: true
add :parent_id, references(:storage_locations, on_delete: :restrict)
timestamps()
end
create unique_index(:storage_locations, [:qr_code])
create index(:storage_locations, [:parent_id])
create index(:storage_locations, [:level])
create unique_index(:storage_locations, [:name, :parent_id])
# Enable trigram extension for path searching
execute "CREATE EXTENSION IF NOT EXISTS pg_trgm", "DROP EXTENSION IF EXISTS pg_trgm"
# GIN index for fast path-based searches
execute "CREATE INDEX storage_locations_path_gin_idx ON storage_locations USING gin(path gin_trgm_ops)",
"DROP INDEX storage_locations_path_gin_idx"
end
end