diff --git a/public/partdb.js b/public/partdb.js index 893efff..2ac988c 100644 --- a/public/partdb.js +++ b/public/partdb.js @@ -23,7 +23,7 @@ function search() return; } - last_search = '/search/' + terms.value; + last_search = '/search?terms=' + terms.value; let xhr = new XMLHttpRequest(); xhr.open('GET', last_search, true); xhr.onload = function() { diff --git a/server.rb b/server.rb index 6c847a9..02bf01f 100755 --- a/server.rb +++ b/server.rb @@ -174,11 +174,15 @@ get '/part/:name' do part.to_json end -get '/search/:terms' do - terms = params['terms'].split(" ") - terms.keep_if {|term| term.length >= 3} - halt 400 if terms.empty? - # search in names, description, and category +get '/part?' do + halt 404, "name required" unless params['name'] + part = get_part_by_name(params['name']) + halt 404 unless part + part.to_json +end + +# search in names, description, and category +def search(terms) statements = [] statements << @db.prepare("SELECT id FROM part WHERE name LIKE ?") statements << @db.prepare("SELECT id FROM part WHERE mpn LIKE ?") @@ -211,6 +215,22 @@ get '/search/:terms' do parts.compact! parts = parts[0, PARTS_LIMIT] parts.sort! {|x,y| x["name"] <=> y["name"]} +end + +get '/search/:terms' do + terms = params['terms'].split(" ") + terms.keep_if {|term| term.length >= 3} + halt 400 if terms.empty? + parts = search(terms) + parts.to_json +end + +get '/search?' do + halt 400, "terms needed" unless params['terms'] + terms = params['terms'].split(" ") + terms.keep_if {|term| term.length >= 3} + halt 400 if terms.empty? + parts = search(terms) parts.to_json end