diff --git a/server.rb b/server.rb index accc13c..54cf8ab 100755 --- a/server.rb +++ b/server.rb @@ -250,20 +250,23 @@ def add_part(part) # update family family = nil field = "family" - part[field] = nil if part[field] and 0 == part[field].length if part[field] then - statement = @db.prepare("SELECT id FROM part WHERE name = ?") - family = statement.execute(part[field]).to_a - raise StandardError.new("family not existing") if family.empty? - update = @db.prepare("UPDATE part SET #{field} = ? WHERE id = ?") - update.execute(family[0]["id"], part["id"]) - family = get_part_by_id(family[0]["id"]) + if part[field].empty? then + update = @db.prepare("UPDATE part SET #{field} = NULL WHERE id = ?") + update.execute(part["id"]) + else + statement = @db.prepare("SELECT id FROM part WHERE name = ?") + family = statement.execute(part[field]).to_a + raise StandardError.new("family not existing") if family.empty? + update = @db.prepare("UPDATE part SET #{field} = ? WHERE id = ?") + update.execute(family[0]["id"], part["id"]) + family = get_part_by_id(family[0]["id"]) + end end # update fields fields_txt = ["name", "description", "details", "mpn", "package", "datasheet", "page"]; fields_txt.each do |field| next unless part[field] - part[field] = nil if part[field].kind_of?(String) and 0 == part[field].length next if family and family[field] == part[field] update = @db.prepare("UPDATE part SET #{field} = ? WHERE id = ?") update.execute(part[field], part["id"]) @@ -271,7 +274,6 @@ def add_part(part) # update manufacturer and package field_ref = ["manufacturer"] field_ref.each do |field| - part[field] = nil if part[field] and 0 == part[field].length next if family and family[field] == part[field] if part[field] then statement = @db.prepare("SELECT id FROM #{field} WHERE LOWER(name) = ?")