+
diff --git a/public/partdb.js b/public/partdb.js
index 3c87109..11d4ad7 100644
--- a/public/partdb.js
+++ b/public/partdb.js
@@ -144,3 +144,24 @@ function select()
}
}
+function delete_part()
+{
+ if (null == parts) {
+ return;
+ }
+ const results = document.getElementById('results');
+ if (results.selectedIndex < 0) {
+ return;
+ }
+ const part_selected = parseInt(results.options[results.selectedIndex].value);
+ const xhr = new XMLHttpRequest();
+ xhr.open('GET', '/delete/' + part_selected, true);
+ xhr.onload = function() {
+ search(); // refresh search
+ };
+ xhr.onerror = function() {
+ console.log("delete part failed");
+ };
+ xhr.send();
+
+}
diff --git a/server.rb b/server.rb
index 85748c4..234bdc0 100755
--- a/server.rb
+++ b/server.rb
@@ -142,7 +142,7 @@ end
get '/search/:terms' do
terms = params['terms'].split(" ")
terms.keep_if {|term| term.length >= 3}
- halt 404 if terms.empty?
+ halt 400 if terms.empty?
# search in names, description, and category
statements = []
statements << @db.prepare("SELECT id FROM part WHERE name LIKE ?")
@@ -177,3 +177,35 @@ get '/search/:terms' do
parts.sort! {|x,y| x["name"] <=> y["name"]}
parts.to_json
end
+
+def delete_part(id)
+ # first delete all children
+ statement = @db.prepare("SELECT id FROM part WHERE family = ?")
+ statement.execute(id).each do |row|
+ puts "child: #{row['id']}"
+ delete_part(row['id'])
+ puts "deleted"
+ end
+ # delete all fields
+ statements = []
+ statements << @db.prepare("DELETE FROM property_value WHERE part = ?")
+ statements << @db.prepare("DELETE FROM assembly WHERE assembled = ?")
+ statements << @db.prepare("DELETE FROM assembly WHERE component = ?")
+ statements << @db.prepare("DELETE FROM drawing WHERE part = ?")
+ statements << @db.prepare("DELETE FROM attachment WHERE part = ?")
+ statements << @db.prepare("DELETE FROM distribution WHERE part = ?")
+ statements << @db.prepare("DELETE FROM property_value WHERE part = ?")
+ statements << @db.prepare("DELETE FROM inventory WHERE part = ?")
+ statements << @db.prepare("DELETE FROM part WHERE id = ?")
+ statements.each do |statement|
+ statement.execute(id)
+ end
+end
+
+get '/delete/:id' do
+ statement = @db.prepare("SELECT id FROM part WHERE id = ?")
+ result = statement.execute(params['id'])
+ halt 400 if result.to_a.empty?
+ delete_part(params['id'])
+ return 200
+end