From f61b5c46bf7ec72f081b2ff6d30e0b34c42d97b5 Mon Sep 17 00:00:00 2001 From: Santiago Pittella Date: Thu, 2 Nov 2023 16:52:20 -0300 Subject: [PATCH] update if contract or class already exists --- lib/starknet_explorer/block/block.ex | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/lib/starknet_explorer/block/block.ex b/lib/starknet_explorer/block/block.ex index 2f3272b6..c8881f2f 100644 --- a/lib/starknet_explorer/block/block.ex +++ b/lib/starknet_explorer/block/block.ex @@ -301,12 +301,20 @@ defmodule StarknetExplorer.Block do Message.insert_from_transaction(inserted_tx, block.timestamp, network) end) - Enum.each(declared_classes_changeset, fn changeset -> - Repo.insert(changeset) + Enum.each(declared_classes_changeset, fn class -> + Repo.insert( + class, + on_conflict: [set: [block_number: class.data["block_number"]]], + conflict_target: [:hash, :network] + ) end) - Enum.each(deployed_contracts, fn changeset -> - Repo.insert(changeset) + Enum.each(deployed_contracts, fn contract -> + Repo.insert( + contract, + on_conflict: [set: [block_number: contract.data["block_number"]]], + conflict_target: [:address, :network] + ) end) Enum.each(events, fn event -> {:ok, _event} = Events.insert(event) end)