server: handle family in update

This commit is contained in:
King Kévin 2023-01-28 00:06:38 +01:00
parent 30b6fca261
commit 82f51bef62
1 changed files with 18 additions and 16 deletions

View File

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