diff --git a/server.rb b/server.rb index 3089751..de35224 100755 --- a/server.rb +++ b/server.rb @@ -239,27 +239,28 @@ post '/part' do # add new part halt(401, "name required") unless part["name"] and part["name"].length > 0 statement = @db.prepare("SELECT id FROM part WHERE name = ?") - halt(401, "name already existing") unless part = statement.execute(part["name"]).to_a.empty? + halt(401, "name already existing") unless statement.execute(part["name"]).to_a.empty? insert = @db.prepare("INSERT INTO part (name) VALUES (?)"); insert.execute(part["name"]) part["id"] = statement.execute(part["name"]).to_a[0]["id"] end - # update fields - fields_txt = ["name", "description", "details", "package", "pincount", "family", "datasheet", "page"]; - fields_txt.each do |field| - halt(401, "#{field} missing") unless part[field] - part[field] = nil if 0 == part[field].length - update = @db.prepare("UPDATE part SET #{field} = ? WHERE id = ?") - update.execute(part["id"], part[field]) + # 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 + halt(401, "family not existing") if family.empty? + family = get_part_by_id(family[0]["id"]) end - fields_int = ["pincount"] - fields_int.each do |field| - halt(401, "#{field} missing") unless part[field] - if 0 == part[field].length then - part[field] = nil - else - part[field] = part[field].to_i - end + # update fields + fields_txt = ["name", "description", "details", "package", "pincount", "family", "datasheet", "page", "pincount"]; + fields_txt.each do |field| + next unless part[field] + part[field] = nil if part[field].kind_of?(String) and 0 == part[field].length + part[field] = part[field].to_i if part[field] and "pincount" == field + next if family[field] == part[field] update = @db.prepare("UPDATE part SET #{field} = ? WHERE id = ?") update.execute(part["id"], part[field]) end @@ -267,6 +268,7 @@ post '/part' do field_ref = ["manufacturer", "package"] field_ref.each do |field| part[field] = nil if part[field] and 0 == part[field].length + next if family[field] == part[field] if part[field] then statement = @db.prepare("SELECT id FROM #{field} WHERE LOWER(name) = ?") ref = statement.execute(part[field].downcase).to_a[0]