Skip to content

Commit

Permalink
Fix last oracle chain loaded in mem table loader init
Browse files Browse the repository at this point in the history
  • Loading branch information
Neylix committed Oct 17, 2022
1 parent 2010acf commit 190b9a7
Showing 1 changed file with 39 additions and 8 deletions.
47 changes: 39 additions & 8 deletions lib/archethic/oracle_chain/mem_table_loader.ex
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
defmodule Archethic.OracleChain.MemTableLoader do
@moduledoc false

alias Archethic.Crypto

alias Archethic.OracleChain
alias Archethic.OracleChain.MemTable

alias Archethic.TransactionChain
Expand All @@ -17,14 +20,25 @@ defmodule Archethic.OracleChain.MemTableLoader do
end

def init(_) do
TransactionChain.list_transactions_by_type(:oracle_summary, [
:address,
:type,
data: [:content],
validation_stamp: [:timestamp]
])
|> Stream.each(&load_transaction(&1, true))
|> Stream.run()
last_summary_timestamp =
TransactionChain.list_transactions_by_type(:oracle_summary, [
:address,
:type,
data: [:content],
validation_stamp: [:timestamp]
])
|> Enum.reduce(
nil,
fn tx = %Transaction{
validation_stamp: %ValidationStamp{timestamp: last_summary_timestamp}
},
_acc ->
load_transaction(tx, true)
last_summary_timestamp
end
)

load_last_oracle_chain(last_summary_timestamp)

{:ok, []}
end
Expand Down Expand Up @@ -87,4 +101,21 @@ defmodule Archethic.OracleChain.MemTableLoader do
end)
end)
end

defp load_last_oracle_chain(nil), do: :ok

defp load_last_oracle_chain(last_summary_timestamp) do
OracleChain.next_summary_date(last_summary_timestamp)
|> Crypto.derive_oracle_address(0)
|> TransactionChain.get_last_address()
|> elem(0)
|> TransactionChain.stream([
:address,
:type,
data: [:content],
validation_stamp: [:timestamp]
])
|> Stream.each(&load_transaction(&1, true))
|> Stream.run()
end
end

0 comments on commit 190b9a7

Please sign in to comment.