def update_record(changeset, key_atom, identifier, table_name, attempts \\ 1, glitch \\ :pass)
def update_record(changeset, key_atom, identifier, table_name, 4 = attempts, glitch) do
{:error,
glitch: glitch,
table_name: table_name,
identifier: identifier,
key_atom: key_atom,
changeset: changeset,
total_attempts: attempts - 1}
|> LogBook.register_error(__MODULE__, 89)
end
def update_record(changeset, key_atom, identifier, table_name, attempts, _glitch) do
update_report =
try do
Repo.transaction(fn ->
from(record in table_name,
where: field(record, ^key_atom) == ^identifier
)
|> Repo.update_all(set: changeset)
end)
rescue
error ->
update_record(changeset, key_atom, identifier, table_name, attempts + 1, error)
end
confirm_successful_update(table_name, update_report)
end
def update_inventory(order_uid, amount_sold) do
%{machine_part_no: part_no} = Sales.get_purchase_order(order_uid)
DB_API.update_record(
[inc: [quantity: amount_sold * -1.0]],
:part_no,
part_no,
Inventory
)
end
Executing update_inventory(order_uid, amount_sold)
results in this error:
{:error, [glitch: %Ecto.QueryError{message: "deps/ecto/lib/ecto/repo/queryable.ex:132: keyword lists can only be interpolated at the top level of where, having, distinct, order_by, update or a join's on in query:\n\nfrom r0 in Warehouse.Inventory,\n where: r0.part_no == ^\"NH9IL4LOZ\",\n update: [set: [inc: ^[quantity: 121]]]\n"}, table_name: Warehouse.Inventory, identifier: "NH9IL4LOZ", key_atom: :part_no, changeset: [inc: [quantity: 121]], total_attempts: 3]}
What is this error message attempting to convey and how is the issue remedied?