mirror of
https://github.com/planetmint/planetmint.git
synced 2025-11-24 14:35:45 +00:00
removed duplicate code
Signed-off-by: Lorenz Herzberger <lorenzherzberger@gmail.com>
This commit is contained in:
parent
23a8eda910
commit
0286ecc163
@ -70,20 +70,6 @@ def store_transaction(connection, transaction):
|
||||
raise NotImplementedError
|
||||
|
||||
|
||||
@singledispatch
|
||||
def store_governance_transactions(connection, transactions):
|
||||
"""Store the list of governance transactions."""
|
||||
|
||||
raise NotImplementedError
|
||||
|
||||
|
||||
@singledispatch
|
||||
def store_governance_transaction(connection, transaction):
|
||||
"""Store a single governance transaction."""
|
||||
|
||||
raise NotImplementedError
|
||||
|
||||
|
||||
@singledispatch
|
||||
def get_transaction_by_id(connection, transaction_id):
|
||||
"""Get the transaction by transaction id."""
|
||||
|
||||
@ -113,9 +113,9 @@ def store_transaction_outputs(connection, output: Output, index: int) -> str:
|
||||
|
||||
|
||||
@register_query(TarantoolDBConnection)
|
||||
def store_transactions(connection, signed_transactions: list):
|
||||
def store_transactions(connection, signed_transactions: list, table = TARANT_TABLE_TRANSACTION):
|
||||
for transaction in signed_transactions:
|
||||
store_transaction(connection, transaction)
|
||||
store_transaction(connection, transaction, table)
|
||||
[
|
||||
store_transaction_outputs(connection, Output.outputs_dict(output, transaction["id"]), index)
|
||||
for index, output in enumerate(transaction[TARANT_TABLE_OUTPUT])
|
||||
@ -123,7 +123,7 @@ def store_transactions(connection, signed_transactions: list):
|
||||
|
||||
|
||||
@register_query(TarantoolDBConnection)
|
||||
def store_transaction(connection, transaction):
|
||||
def store_transaction(connection, transaction, table = TARANT_TABLE_TRANSACTION):
|
||||
scripts = None
|
||||
if TARANT_TABLE_SCRIPT in transaction:
|
||||
scripts = transaction[TARANT_TABLE_SCRIPT]
|
||||
@ -137,7 +137,7 @@ def store_transaction(connection, transaction):
|
||||
scripts,
|
||||
)
|
||||
try:
|
||||
connection.run(connection.space(TARANT_TABLE_TRANSACTION).insert(tx), only_data=False)
|
||||
connection.run(connection.space(table).insert(tx), only_data=False)
|
||||
except Exception as e:
|
||||
logger.info(f"Could not insert transactions: {e}")
|
||||
if e.args[0] == 3 and e.args[1].startswith('Duplicate key exists in'):
|
||||
@ -146,39 +146,6 @@ def store_transaction(connection, transaction):
|
||||
raise OperationDataInsertionError()
|
||||
|
||||
|
||||
@register_query(TarantoolDBConnection)
|
||||
def store_governance_transactions(connection, signed_transactions: list):
|
||||
for transaction in signed_transactions:
|
||||
store_governance_transaction(connection, transaction)
|
||||
[
|
||||
store_transaction_outputs(connection, Output.outputs_dict(output, transaction["id"]), index)
|
||||
for index, output in enumerate(transaction[TARANT_TABLE_OUTPUT])
|
||||
]
|
||||
|
||||
|
||||
@register_query(TarantoolDBConnection)
|
||||
def store_governance_transaction(connection, transaction):
|
||||
scripts = None
|
||||
if TARANT_TABLE_SCRIPT in transaction:
|
||||
scripts = transaction[TARANT_TABLE_SCRIPT]
|
||||
tx = (
|
||||
transaction["id"],
|
||||
transaction["operation"],
|
||||
transaction["version"],
|
||||
transaction["metadata"],
|
||||
transaction["assets"],
|
||||
transaction["inputs"],
|
||||
scripts,
|
||||
)
|
||||
try:
|
||||
connection.run(connection.space(TARANT_TABLE_GOVERNANCE).insert(tx), only_data=False)
|
||||
except Exception as e:
|
||||
if e.args[0] == 3 and e.args[1].startswith('Duplicate key exists in'):
|
||||
raise CriticalDoubleSpend()
|
||||
else:
|
||||
raise OperationDataInsertionError()
|
||||
|
||||
|
||||
@register_query(TarantoolDBConnection)
|
||||
def get_transaction_by_id(connection, transaction_id, table=TARANT_TABLE_TRANSACTION):
|
||||
txs = connection.run(connection.space(table).select(transaction_id, index=TARANT_ID_SEARCH))
|
||||
|
||||
@ -163,8 +163,8 @@ class Planetmint(object):
|
||||
else:
|
||||
txns.append(transaction)
|
||||
|
||||
backend.query.store_transactions(self.connection, txns)
|
||||
backend.query.store_governance_transactions(self.connection, gov_txns)
|
||||
backend.query.store_transactions(self.connection, txns, TARANT_TABLE_TRANSACTION)
|
||||
backend.query.store_transactions(self.connection, gov_txns, TARANT_TABLE_GOVERNANCE)
|
||||
|
||||
def delete_transactions(self, txs):
|
||||
return backend.query.delete_transactions(self.connection, txs)
|
||||
|
||||
@ -170,69 +170,29 @@ def test_update_utxoset(b, signed_create_tx, signed_transfer_tx, db_conn):
|
||||
|
||||
|
||||
@pytest.mark.bdb
|
||||
def test_store_transaction(mocker, b, signed_create_tx, signed_transfer_tx, db_context):
|
||||
from planetmint.backend.tarantool.connection import TarantoolDBConnection
|
||||
|
||||
def test_store_transaction(mocker, b, signed_create_tx, signed_transfer_tx):
|
||||
mocked_store_transaction = mocker.patch("planetmint.backend.query.store_transactions")
|
||||
b.store_bulk_transactions([signed_create_tx])
|
||||
if not isinstance(b.connection, TarantoolDBConnection):
|
||||
mongo_client = MongoClient(host=db_context.host, port=db_context.port)
|
||||
utxoset = mongo_client[db_context.name]["utxos"]
|
||||
assert utxoset.count_documents({}) == 1
|
||||
utxo = utxoset.find_one()
|
||||
assert utxo["transaction_id"] == signed_create_tx.id
|
||||
assert utxo["output_index"] == 0
|
||||
|
||||
mocked_store_transaction.assert_called_once_with(
|
||||
mocked_store_transaction.assert_any_call(
|
||||
b.connection,
|
||||
[signed_create_tx.to_dict()],
|
||||
"transactions"
|
||||
)
|
||||
mocked_store_transaction.reset_mock()
|
||||
b.store_bulk_transactions([signed_transfer_tx])
|
||||
if not isinstance(b.connection, TarantoolDBConnection):
|
||||
assert utxoset.count_documents({}) == 1
|
||||
utxo = utxoset.find_one()
|
||||
assert utxo["transaction_id"] == signed_transfer_tx.id
|
||||
assert utxo["output_index"] == 0
|
||||
if not isinstance(b.connection, TarantoolDBConnection):
|
||||
mocked_store_transaction.assert_called_once_with(
|
||||
b.connection,
|
||||
[signed_transfer_tx.to_dict()],
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.bdb
|
||||
def test_store_bulk_transaction(mocker, b, signed_create_tx, signed_transfer_tx, db_context):
|
||||
from planetmint.backend.tarantool.connection import TarantoolDBConnection
|
||||
|
||||
def test_store_bulk_transaction(mocker, b, signed_create_tx, signed_transfer_tx):
|
||||
mocked_store_transactions = mocker.patch("planetmint.backend.query.store_transactions")
|
||||
b.store_bulk_transactions((signed_create_tx,))
|
||||
if not isinstance(b.connection, TarantoolDBConnection):
|
||||
mongo_client = MongoClient(host=db_context.host, port=db_context.port)
|
||||
utxoset = mongo_client[db_context.name]["utxos"]
|
||||
assert utxoset.count_documents({}) == 1
|
||||
utxo = utxoset.find_one()
|
||||
assert utxo["transaction_id"] == signed_create_tx.id
|
||||
assert utxo["output_index"] == 0
|
||||
|
||||
mocked_store_transactions.assert_called_once_with(
|
||||
mocked_store_transactions.assert_any_call(
|
||||
b.connection,
|
||||
[signed_create_tx.to_dict()],
|
||||
"transactions"
|
||||
)
|
||||
|
||||
mocked_store_transactions.reset_mock()
|
||||
b.store_bulk_transactions((signed_transfer_tx,))
|
||||
if not isinstance(b.connection, TarantoolDBConnection):
|
||||
assert utxoset.count_documents({}) == 1
|
||||
utxo = utxoset.find_one()
|
||||
assert utxo["transaction_id"] == signed_transfer_tx.id
|
||||
assert utxo["output_index"] == 0
|
||||
|
||||
if not isinstance(b.connection, TarantoolDBConnection):
|
||||
mocked_store_transactions.assert_called_once_with(
|
||||
b.connection,
|
||||
[signed_transfer_tx.to_dict()],
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.bdb
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user