From ee36c245fcebfb626a5627829dfdd59a801c6a45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?King=20K=C3=A9vin?= Date: Mon, 30 Jan 2023 04:51:15 +0100 Subject: [PATCH] server: provide search terms as param --- public/partdb.js | 2 +- server.rb | 30 +++++++++++++++++++++++++----- 2 files changed, 26 insertions(+), 6 deletions(-) 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