ammocpr/priv/repo/migrations/20260312135336_seed_retailers_and_calibers.exs

63 lines
2.8 KiB
Elixir

defmodule Ammoprices.Repo.Migrations.SeedRetailersAndCalibers do
use Ecto.Migration
def up do
now = DateTime.utc_now() |> DateTime.truncate(:second) |> DateTime.to_naive()
retailers = [
%{name: "Lucky Gunner", slug: "lucky-gunner", base_url: "https://www.luckygunner.com"},
%{name: "SGAmmo", slug: "sgammo", base_url: "https://www.sgammo.com"},
%{
name: "Target Sports USA",
slug: "target-sports-usa",
base_url: "https://www.targetsportsusa.com"
}
]
for r <- retailers do
execute("""
INSERT INTO retailers (id, name, slug, base_url, inserted_at, updated_at)
VALUES (gen_random_uuid(), '#{r.name}', '#{r.slug}', '#{r.base_url}', '#{now}', '#{now}')
ON CONFLICT (slug) DO NOTHING
""")
end
calibers = [
{"9mm Luger", "9mm-luger", "handgun", ~s({"9mm","9x19","9mm parabellum","9mm nato"})},
{".45 ACP", "45-acp", "handgun", ~s({".45 acp","45 acp",".45 auto","45 auto"})},
{".380 ACP", "380-acp", "handgun", ~s({".380","380 acp",".380 auto","380 auto"})},
{".40 S&W", "40-sw", "handgun", ~s({".40 s&w","40 s&w",".40 cal","40 cal"})},
{".38 Special", "38-special", "handgun", ~s({".38 spl","38 special",".38 spc","38 spl"})},
{".357 Magnum", "357-magnum", "handgun", ~s({".357 mag","357 mag","357 magnum"})},
{"10mm Auto", "10mm-auto", "handgun", ~s({"10mm","10mm auto"})},
{"5.56x45 / .223 Rem", "556-223", "rifle",
~s({"5.56","5.56x45",".223",".223 rem","223 remington","5.56 nato"})},
{".308 Win / 7.62x51", "308-win", "rifle",
~s({".308",".308 win","308 winchester","7.62x51","7.62 nato"})},
{"7.62x39", "762x39", "rifle", ~s({"7.62x39","7.62x39mm"})},
{".30-06 Springfield", "30-06", "rifle",
~s({".30-06","30-06","30-06 springfield",".30-06 sprg"})},
{".300 Blackout", "300-blackout", "rifle",
~s({".300 blk","300 blackout",".300 aac blackout","300 blk"})},
{"6.5 Creedmoor", "65-creedmoor", "rifle", ~s({"6.5 creedmoor","6.5cm","6.5 cm"})},
{".22 LR", "22-lr", "rimfire", ~s({".22 lr","22 lr",".22 long rifle","22 long rifle"})},
{".22 WMR", "22-wmr", "rimfire", ~s({".22 wmr","22 wmr",".22 magnum","22 mag"})},
{".17 HMR", "17-hmr", "rimfire", ~s({".17 hmr","17 hmr",".17 hornady magnum"})},
{"12 Gauge", "12-gauge", "shotgun", ~s({"12 gauge","12 ga","12ga"})},
{"20 Gauge", "20-gauge", "shotgun", ~s({"20 gauge","20 ga","20ga"})}
]
for {name, slug, category, aliases} <- calibers do
execute("""
INSERT INTO calibers (id, name, slug, category, aliases, inserted_at, updated_at)
VALUES (gen_random_uuid(), '#{name}', '#{slug}', '#{category}', '#{aliases}', '#{now}', '#{now}')
ON CONFLICT (slug) DO NOTHING
""")
end
end
def down do
execute("DELETE FROM calibers")
execute("DELETE FROM retailers")
end
end