Skip to content

Commit

Permalink
Write transaction to specific genesis address
Browse files Browse the repository at this point in the history
  • Loading branch information
Samuel committed Jun 2, 2022
1 parent 46ae7b6 commit acaf93d
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 0 deletions.
2 changes: 2 additions & 0 deletions lib/archethic/db.ex
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@ defmodule Archethic.DB do
opts :: [paging_state: nil | binary(), after: DateTime.t()]
) :: Enumerable.t()
@callback write_transaction(Transaction.t()) :: :ok
@callback write_transaction_at(Transaction.t(), binary()) :: :ok
@callback write_transaction_chain(Enumerable.t()) :: :ok
@callback write_transaction(Transaction.t()) :: :ok
@callback list_transactions(fields :: list()) :: Enumerable.t()
@callback add_last_transaction_address(binary(), binary(), DateTime.t()) :: :ok
@callback list_last_transaction_addresses() :: Enumerable.t()
Expand Down
9 changes: 9 additions & 0 deletions lib/archethic/db/embedded_impl.ex
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,15 @@ defmodule Archethic.DB.EmbeddedImpl do
end
end

@doc """
Write a transaction if a specific genesis address
"""
@spec write_transaction_at(Transaction.t(), binary()) :: :ok
def write_transaction_at(tx = %Transaction{}, genesis_address)
when is_binary(genesis_address) do
ChainWriter.append_transaction(genesis_address, tx)
end

@doc """
Determine if the transaction exists or not
"""
Expand Down
14 changes: 14 additions & 0 deletions lib/archethic/transaction_chain.ex
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,20 @@ defmodule Archethic.TransactionChain do
)
end

@doc """
Write the transaction in a specific genesis address
"""
@spec writer_transaction_at(Transaction.t(), binary()) :: :ok
def write_transaction_at(tx = %Transaction{address: address, type: type}, genesis_address) do
DB.write_transaction_at(tx, genesis_address)
KOLedger.remove_transaction(address)

Logger.info("Transaction stored",
transaction_address: Base.encode16(address),
transaction_type: type
)
end

@doc """
Persist a new transaction chain
"""
Expand Down

0 comments on commit acaf93d

Please sign in to comment.