diff --git a/public/index.html b/public/index.html index d97fc99..a3cdc8c 100644 --- a/public/index.html +++ b/public/index.html @@ -27,6 +27,7 @@
package: -
manufacturer:
+
mpn:
family:
datasheet:
page:
diff --git a/public/partdb.js b/public/partdb.js index 75ca114..0348f70 100644 --- a/public/partdb.js +++ b/public/partdb.js @@ -5,7 +5,7 @@ var last_search = null; // the collection of parts var parts = null; // part field to populate -const fields = ["name", "description", "details", "package", "pincount", "manufacturer", "family", "datasheet", "page", "location", "stock"]; +const fields = ["name", "description", "details", "package", "pincount", "manufacturer", "mpn", "family", "datasheet", "page", "location", "stock"]; // URLs to set const urls = ["page","datasheet"]; diff --git a/schema.sql b/schema.sql index dfaba99..d09114b 100644 --- a/schema.sql +++ b/schema.sql @@ -35,6 +35,7 @@ CREATE TABLE IF NOT EXISTS part ( description TEXT, -- a short (searchable) description details TEXT, -- even more part details than just in the description manufacturer INTEGER, + mpn TEXT, family INTEGER, -- if this part is part of a part family datasheet TEXT, -- URL to datasheet package INTEGER, diff --git a/server.rb b/server.rb index 6b72296..d1ae847 100755 --- a/server.rb +++ b/server.rb @@ -72,7 +72,7 @@ end def get_part_by_id(id) return nil unless id - statement = @db.prepare("SELECT part.id, part.name, part.description, part.datasheet, manufacturer.name AS manufacturer, package.name AS package, part.pincount AS pincount, part.page AS page, part.family AS parent, p2.name AS family FROM part LEFT JOIN package ON package.id = part.package LEFT JOIN manufacturer ON manufacturer.id = part.manufacturer LEFT JOIN part AS p2 ON p2.id = part.family WHERE part.id = ?") + statement = @db.prepare("SELECT part.id, part.name, part.description, part.datasheet, manufacturer.name AS manufacturer, part.mpn AS mpn, package.name AS package, part.pincount AS pincount, part.page AS page, part.family AS parent, p2.name AS family FROM part LEFT JOIN package ON package.id = part.package LEFT JOIN manufacturer ON manufacturer.id = part.manufacturer LEFT JOIN part AS p2 ON p2.id = part.family WHERE part.id = ?") part = statement.execute(id).to_a[0] return nil unless part parent = get_part_by_id(part["parent"]) @@ -159,6 +159,7 @@ get '/search/:terms' do # search in names, description, and category statements = [] statements << @db.prepare("SELECT id FROM part WHERE name LIKE ?") + statements << @db.prepare("SELECT id FROM part WHERE mpn LIKE ?") statements << @db.prepare("SELECT id FROM part WHERE description LIKE ?") statements << @db.prepare("SELECT property_value.part AS id FROM property_value JOIN property ON property.id = property_value.property WHERE property.name = 'category' AND property_value.value LIKE ?") term_ids = []