style: format codebase
This commit is contained in:
@@ -14,7 +14,9 @@ defmodule ComponentsElixir.Repo.Migrations.MigrateQrToApriltag do
|
||||
create unique_index(:storage_locations, [:apriltag_id])
|
||||
|
||||
# Add constraint to ensure apriltag_id is in valid range (0-586 for tag36h11)
|
||||
create constraint(:storage_locations, :apriltag_id_range, check: "apriltag_id >= 0 AND apriltag_id <= 586")
|
||||
create constraint(:storage_locations, :apriltag_id_range,
|
||||
check: "apriltag_id >= 0 AND apriltag_id <= 586"
|
||||
)
|
||||
|
||||
# Note: We keep qr_code_old for now in case we need to rollback
|
||||
# It can be removed in a future migration after confirming everything works
|
||||
|
||||
@@ -25,102 +25,208 @@ Repo.delete_all(Category)
|
||||
Repo.delete_all(StorageLocation)
|
||||
|
||||
# Create categories
|
||||
{:ok, resistors} = Inventory.create_category(%{name: "Resistors", description: "Various types of resistors"})
|
||||
{:ok, capacitors} = Inventory.create_category(%{name: "Capacitors", description: "Electrolytic, ceramic, and film capacitors"})
|
||||
{:ok, semiconductors} = Inventory.create_category(%{name: "Semiconductors", description: "ICs, transistors, diodes"})
|
||||
{:ok, connectors} = Inventory.create_category(%{name: "Connectors", description: "Headers, terminals, plugs"})
|
||||
{:ok, resistors} =
|
||||
Inventory.create_category(%{name: "Resistors", description: "Various types of resistors"})
|
||||
|
||||
{:ok, capacitors} =
|
||||
Inventory.create_category(%{
|
||||
name: "Capacitors",
|
||||
description: "Electrolytic, ceramic, and film capacitors"
|
||||
})
|
||||
|
||||
{:ok, semiconductors} =
|
||||
Inventory.create_category(%{name: "Semiconductors", description: "ICs, transistors, diodes"})
|
||||
|
||||
{:ok, connectors} =
|
||||
Inventory.create_category(%{name: "Connectors", description: "Headers, terminals, plugs"})
|
||||
|
||||
# Create subcategories
|
||||
{:ok, _through_hole_resistors} = Inventory.create_category(%{
|
||||
name: "Through-hole",
|
||||
description: "Traditional leaded resistors",
|
||||
parent_id: resistors.id
|
||||
})
|
||||
{:ok, _through_hole_resistors} =
|
||||
Inventory.create_category(%{
|
||||
name: "Through-hole",
|
||||
description: "Traditional leaded resistors",
|
||||
parent_id: resistors.id
|
||||
})
|
||||
|
||||
{:ok, _smd_resistors} = Inventory.create_category(%{
|
||||
name: "SMD/SMT",
|
||||
description: "Surface mount resistors",
|
||||
parent_id: resistors.id
|
||||
})
|
||||
{:ok, _smd_resistors} =
|
||||
Inventory.create_category(%{
|
||||
name: "SMD/SMT",
|
||||
description: "Surface mount resistors",
|
||||
parent_id: resistors.id
|
||||
})
|
||||
|
||||
{:ok, _ceramic_caps} = Inventory.create_category(%{
|
||||
name: "Ceramic",
|
||||
description: "Ceramic disc and multilayer capacitors",
|
||||
parent_id: capacitors.id
|
||||
})
|
||||
{:ok, _ceramic_caps} =
|
||||
Inventory.create_category(%{
|
||||
name: "Ceramic",
|
||||
description: "Ceramic disc and multilayer capacitors",
|
||||
parent_id: capacitors.id
|
||||
})
|
||||
|
||||
{:ok, _electrolytic_caps} = Inventory.create_category(%{
|
||||
name: "Electrolytic",
|
||||
description: "Polarized electrolytic capacitors",
|
||||
parent_id: capacitors.id
|
||||
})
|
||||
{:ok, _electrolytic_caps} =
|
||||
Inventory.create_category(%{
|
||||
name: "Electrolytic",
|
||||
description: "Polarized electrolytic capacitors",
|
||||
parent_id: capacitors.id
|
||||
})
|
||||
|
||||
# Create a DEEP category hierarchy to test fallback path (7+ levels)
|
||||
{:ok, deep_cat_1} = Inventory.create_category(%{name: "Level 1", description: "Deep hierarchy test", parent_id: resistors.id})
|
||||
{:ok, deep_cat_2} = Inventory.create_category(%{name: "Level 2", description: "Deep hierarchy test", parent_id: deep_cat_1.id})
|
||||
{:ok, deep_cat_3} = Inventory.create_category(%{name: "Level 3", description: "Deep hierarchy test", parent_id: deep_cat_2.id})
|
||||
{:ok, deep_cat_4} = Inventory.create_category(%{name: "Level 4", description: "Deep hierarchy test", parent_id: deep_cat_3.id})
|
||||
{:ok, deep_cat_5} = Inventory.create_category(%{name: "Level 5", description: "Deep hierarchy test", parent_id: deep_cat_4.id})
|
||||
{:ok, deep_cat_6} = Inventory.create_category(%{name: "Level 6", description: "Deep hierarchy test", parent_id: deep_cat_5.id})
|
||||
{:ok, deep_cat_7} = Inventory.create_category(%{name: "Level 7", description: "Deep hierarchy test - triggers fallback", parent_id: deep_cat_6.id})
|
||||
{:ok, deep_cat_1} =
|
||||
Inventory.create_category(%{
|
||||
name: "Level 1",
|
||||
description: "Deep hierarchy test",
|
||||
parent_id: resistors.id
|
||||
})
|
||||
|
||||
{:ok, deep_cat_2} =
|
||||
Inventory.create_category(%{
|
||||
name: "Level 2",
|
||||
description: "Deep hierarchy test",
|
||||
parent_id: deep_cat_1.id
|
||||
})
|
||||
|
||||
{:ok, deep_cat_3} =
|
||||
Inventory.create_category(%{
|
||||
name: "Level 3",
|
||||
description: "Deep hierarchy test",
|
||||
parent_id: deep_cat_2.id
|
||||
})
|
||||
|
||||
{:ok, deep_cat_4} =
|
||||
Inventory.create_category(%{
|
||||
name: "Level 4",
|
||||
description: "Deep hierarchy test",
|
||||
parent_id: deep_cat_3.id
|
||||
})
|
||||
|
||||
{:ok, deep_cat_5} =
|
||||
Inventory.create_category(%{
|
||||
name: "Level 5",
|
||||
description: "Deep hierarchy test",
|
||||
parent_id: deep_cat_4.id
|
||||
})
|
||||
|
||||
{:ok, deep_cat_6} =
|
||||
Inventory.create_category(%{
|
||||
name: "Level 6",
|
||||
description: "Deep hierarchy test",
|
||||
parent_id: deep_cat_5.id
|
||||
})
|
||||
|
||||
{:ok, deep_cat_7} =
|
||||
Inventory.create_category(%{
|
||||
name: "Level 7",
|
||||
description: "Deep hierarchy test - triggers fallback",
|
||||
parent_id: deep_cat_6.id
|
||||
})
|
||||
|
||||
# Create storage locations
|
||||
{:ok, shelf_a} = Inventory.create_storage_location(%{name: "Shelf A", description: "Main electronics shelf"})
|
||||
{:ok, _shelf_b} = Inventory.create_storage_location(%{name: "Shelf B", description: "Components overflow shelf"})
|
||||
{:ok, shelf_a} =
|
||||
Inventory.create_storage_location(%{name: "Shelf A", description: "Main electronics shelf"})
|
||||
|
||||
{:ok, _shelf_b} =
|
||||
Inventory.create_storage_location(%{name: "Shelf B", description: "Components overflow shelf"})
|
||||
|
||||
# Create drawers on Shelf A
|
||||
{:ok, drawer_a1} = Inventory.create_storage_location(%{
|
||||
name: "Drawer 1",
|
||||
description: "Resistors and capacitors",
|
||||
parent_id: shelf_a.id
|
||||
})
|
||||
{:ok, drawer_a1} =
|
||||
Inventory.create_storage_location(%{
|
||||
name: "Drawer 1",
|
||||
description: "Resistors and capacitors",
|
||||
parent_id: shelf_a.id
|
||||
})
|
||||
|
||||
{:ok, drawer_a2} = Inventory.create_storage_location(%{
|
||||
name: "Drawer 2",
|
||||
description: "Semiconductors and ICs",
|
||||
parent_id: shelf_a.id
|
||||
})
|
||||
{:ok, drawer_a2} =
|
||||
Inventory.create_storage_location(%{
|
||||
name: "Drawer 2",
|
||||
description: "Semiconductors and ICs",
|
||||
parent_id: shelf_a.id
|
||||
})
|
||||
|
||||
# Create boxes in Drawer A1
|
||||
{:ok, box_a1_1} = Inventory.create_storage_location(%{
|
||||
name: "Box 1",
|
||||
description: "Through-hole resistors",
|
||||
parent_id: drawer_a1.id
|
||||
})
|
||||
{:ok, box_a1_1} =
|
||||
Inventory.create_storage_location(%{
|
||||
name: "Box 1",
|
||||
description: "Through-hole resistors",
|
||||
parent_id: drawer_a1.id
|
||||
})
|
||||
|
||||
{:ok, _box_a1_2} = Inventory.create_storage_location(%{
|
||||
name: "Box 2",
|
||||
description: "SMD resistors",
|
||||
parent_id: drawer_a1.id
|
||||
})
|
||||
{:ok, _box_a1_2} =
|
||||
Inventory.create_storage_location(%{
|
||||
name: "Box 2",
|
||||
description: "SMD resistors",
|
||||
parent_id: drawer_a1.id
|
||||
})
|
||||
|
||||
{:ok, box_a1_3} = Inventory.create_storage_location(%{
|
||||
name: "Box 3",
|
||||
description: "Ceramic capacitors",
|
||||
parent_id: drawer_a1.id
|
||||
})
|
||||
{:ok, box_a1_3} =
|
||||
Inventory.create_storage_location(%{
|
||||
name: "Box 3",
|
||||
description: "Ceramic capacitors",
|
||||
parent_id: drawer_a1.id
|
||||
})
|
||||
|
||||
# Create boxes in Drawer A2
|
||||
{:ok, box_a2_1} = Inventory.create_storage_location(%{
|
||||
name: "Box 1",
|
||||
description: "Microcontrollers",
|
||||
parent_id: drawer_a2.id
|
||||
})
|
||||
{:ok, box_a2_1} =
|
||||
Inventory.create_storage_location(%{
|
||||
name: "Box 1",
|
||||
description: "Microcontrollers",
|
||||
parent_id: drawer_a2.id
|
||||
})
|
||||
|
||||
{:ok, _box_a2_2} = Inventory.create_storage_location(%{
|
||||
name: "Box 2",
|
||||
description: "Transistors and diodes",
|
||||
parent_id: drawer_a2.id
|
||||
})
|
||||
{:ok, _box_a2_2} =
|
||||
Inventory.create_storage_location(%{
|
||||
name: "Box 2",
|
||||
description: "Transistors and diodes",
|
||||
parent_id: drawer_a2.id
|
||||
})
|
||||
|
||||
# Create a DEEP storage location hierarchy to test fallback path (7+ levels)
|
||||
{:ok, deep_loc_1} = Inventory.create_storage_location(%{name: "Deep Level 1", description: "Deep hierarchy test", parent_id: box_a1_3.id})
|
||||
{:ok, deep_loc_2} = Inventory.create_storage_location(%{name: "Deep Level 2", description: "Deep hierarchy test", parent_id: deep_loc_1.id})
|
||||
{:ok, deep_loc_3} = Inventory.create_storage_location(%{name: "Deep Level 3", description: "Deep hierarchy test", parent_id: deep_loc_2.id})
|
||||
{:ok, deep_loc_4} = Inventory.create_storage_location(%{name: "Deep Level 4", description: "Deep hierarchy test", parent_id: deep_loc_3.id})
|
||||
{:ok, deep_loc_5} = Inventory.create_storage_location(%{name: "Deep Level 5", description: "Deep hierarchy test", parent_id: deep_loc_4.id})
|
||||
{:ok, deep_loc_6} = Inventory.create_storage_location(%{name: "Deep Level 6", description: "Deep hierarchy test", parent_id: deep_loc_5.id})
|
||||
{:ok, deep_loc_7} = Inventory.create_storage_location(%{name: "Deep Level 7", description: "Deep hierarchy test - triggers fallback", parent_id: deep_loc_6.id})
|
||||
{:ok, deep_loc_1} =
|
||||
Inventory.create_storage_location(%{
|
||||
name: "Deep Level 1",
|
||||
description: "Deep hierarchy test",
|
||||
parent_id: box_a1_3.id
|
||||
})
|
||||
|
||||
{:ok, deep_loc_2} =
|
||||
Inventory.create_storage_location(%{
|
||||
name: "Deep Level 2",
|
||||
description: "Deep hierarchy test",
|
||||
parent_id: deep_loc_1.id
|
||||
})
|
||||
|
||||
{:ok, deep_loc_3} =
|
||||
Inventory.create_storage_location(%{
|
||||
name: "Deep Level 3",
|
||||
description: "Deep hierarchy test",
|
||||
parent_id: deep_loc_2.id
|
||||
})
|
||||
|
||||
{:ok, deep_loc_4} =
|
||||
Inventory.create_storage_location(%{
|
||||
name: "Deep Level 4",
|
||||
description: "Deep hierarchy test",
|
||||
parent_id: deep_loc_3.id
|
||||
})
|
||||
|
||||
{:ok, deep_loc_5} =
|
||||
Inventory.create_storage_location(%{
|
||||
name: "Deep Level 5",
|
||||
description: "Deep hierarchy test",
|
||||
parent_id: deep_loc_4.id
|
||||
})
|
||||
|
||||
{:ok, deep_loc_6} =
|
||||
Inventory.create_storage_location(%{
|
||||
name: "Deep Level 6",
|
||||
description: "Deep hierarchy test",
|
||||
parent_id: deep_loc_5.id
|
||||
})
|
||||
|
||||
{:ok, deep_loc_7} =
|
||||
Inventory.create_storage_location(%{
|
||||
name: "Deep Level 7",
|
||||
description: "Deep hierarchy test - triggers fallback",
|
||||
parent_id: deep_loc_6.id
|
||||
})
|
||||
|
||||
# Create sample components
|
||||
sample_components = [
|
||||
@@ -162,7 +268,8 @@ sample_components = [
|
||||
keywords: "microcontroller avr atmega328 arduino",
|
||||
storage_location_id: box_a2_1.id,
|
||||
count: 10,
|
||||
datasheet_url: "https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf",
|
||||
datasheet_url:
|
||||
"https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf",
|
||||
category_id: semiconductors.id
|
||||
},
|
||||
%{
|
||||
@@ -264,7 +371,11 @@ IO.puts("")
|
||||
IO.puts("🎉 Database seeded successfully!")
|
||||
IO.puts("📊 Summary:")
|
||||
IO.puts(" Categories: #{length(Inventory.list_categories())}")
|
||||
IO.puts(" Storage Locations: #{length(Inventory.list_storage_locations())} (with auto-assigned AprilTags)")
|
||||
|
||||
IO.puts(
|
||||
" Storage Locations: #{length(Inventory.list_storage_locations())} (with auto-assigned AprilTags)"
|
||||
)
|
||||
|
||||
IO.puts(" Components: #{length(Inventory.list_components())}")
|
||||
IO.puts("")
|
||||
IO.puts("🏷️ AprilTag System:")
|
||||
|
||||
Reference in New Issue
Block a user