aprs.me/priv/repo/migrations/20260219191058_make_callsign_case_insensitive.exs
Graham McIntire b4f85bf12c
Fix callsign registration to be case-insensitive
Users could register duplicate callsigns with different casing (e.g.,
"w1aw" and "W1AW") because the database unique index was case-sensitive.
Additionally, live validation showed false "already taken" errors on
every keystroke.

Changes:
- Add case-insensitive unique index using lower(callsign)
- Skip callsign uniqueness validation during live form changes
- Add test verifying case-insensitive uniqueness enforcement
2026-02-19 13:20:07 -06:00

11 lines
355 B
Elixir

defmodule Aprsme.Repo.Migrations.MakeCallsignCaseInsensitive do
use Ecto.Migration
def change do
# Drop the existing case-sensitive unique index
drop unique_index(:users, [:callsign])
# Create a case-insensitive unique index using LOWER()
create unique_index(:users, ["lower(callsign)"], name: :users_callsign_lower_index)
end
end