From f87025c5a69f5b28b9668a63cf2fd192aa64f396 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?King=20K=C3=A9vin?= Date: Fri, 3 Feb 2023 02:01:53 +0100 Subject: [PATCH] kicad: add distributors --- kicad_lib.rb | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/kicad_lib.rb b/kicad_lib.rb index d14e497..d1dc170 100755 --- a/kicad_lib.rb +++ b/kicad_lib.rb @@ -21,7 +21,7 @@ DEBUG = false # print debug information puts "= create part to properties views =" -prop2view = [{property: "kicad_symbol"}, {property: "kicad_footprint"}, {property: "qeda_part"}, {property: "qeda_variant"}] +prop2view = [{property: "kicad_symbol"}, {property: "kicad_footprint"}, {property: "qeda_part"}, {property: "qeda_variant"}, {property: "JLCPCB_CORRECTION"}] prop2view.each do |prop| puts prop[:property] prop[:table] = "part_" + prop[:property].downcase.gsub(/[- \/]/,"_") @@ -30,6 +30,18 @@ prop2view.each do |prop| db.query(view) end +puts "= create part to distribution views =" + +dist2view = [{property: "LCSC"}, {property: "JLCPCB"}, {property: "DigiKey"}] + +dist2view.each do |prop| + puts prop[:property] + prop[:table] = "part_" + prop[:property].downcase.gsub(/[- \/]/,"_") + view = "CREATE OR REPLACE VIEW #{prop[:table]} AS SELECT distribution.part AS part, distribution.sku AS #{prop[:property]} FROM distribution JOIN distributor ON distributor.id = distribution.distributor WHERE distributor.name = '#{prop[:property]}'" + puts view if DEBUG + db.query(view) +end + puts "= create part category tables =" kicad_dbl = {} # kicad database library file @@ -52,7 +64,7 @@ categories.each do |category| end view += "part.description FROM part " view += "LEFT JOIN part AS parent ON parent.id = part.family " - prop2view.each do |prop| + (prop2view + dist2view).each do |prop| view += "LEFT JOIN #{prop[:table]} AS #{prop[:table]}1 ON #{prop[:table]}1.part = part.id " view += "LEFT JOIN #{prop[:table]} AS #{prop[:table]}2 ON #{prop[:table]}2.part = parent.id " end @@ -64,8 +76,10 @@ categories.each do |category| library = {name: category, table: table, key: "name", symbols: "kicad_symbol", footprints: "kicad_footprint"} library[:properties] = {description: "description"} library[:fields] = [] - library[:fields] << {name: "QEDA part", column: "qeda_part", visible_on_add: false, visible_in_chooser: true, show_name: false, inherit_properties: true} - library[:fields] << {name: "QEDA variant", column: "qeda_variant", visible_on_add: false, visible_in_chooser: true, show_name: false, inherit_properties: true} + (prop2view + dist2view).each do |prop| + next if prop[:property].start_with? "kicad_" + library[:fields] << {name: prop[:property], column: prop[:property], visible_on_add: false, visible_in_chooser: true, show_name: false, inherit_properties: true} + end kicad_dbl["libraries"] << library end