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
|
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
|
@singledispatch
|
||||||
def get_transaction_by_id(connection, transaction_id):
|
def get_transaction_by_id(connection, transaction_id):
|
||||||
"""Get the transaction by 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)
|
@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:
|
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)
|
store_transaction_outputs(connection, Output.outputs_dict(output, transaction["id"]), index)
|
||||||
for index, output in enumerate(transaction[TARANT_TABLE_OUTPUT])
|
for index, output in enumerate(transaction[TARANT_TABLE_OUTPUT])
|
||||||
@ -123,7 +123,7 @@ def store_transactions(connection, signed_transactions: list):
|
|||||||
|
|
||||||
|
|
||||||
@register_query(TarantoolDBConnection)
|
@register_query(TarantoolDBConnection)
|
||||||
def store_transaction(connection, transaction):
|
def store_transaction(connection, transaction, table = TARANT_TABLE_TRANSACTION):
|
||||||
scripts = None
|
scripts = None
|
||||||
if TARANT_TABLE_SCRIPT in transaction:
|
if TARANT_TABLE_SCRIPT in transaction:
|
||||||
scripts = transaction[TARANT_TABLE_SCRIPT]
|
scripts = transaction[TARANT_TABLE_SCRIPT]
|
||||||
@ -137,7 +137,7 @@ def store_transaction(connection, transaction):
|
|||||||
scripts,
|
scripts,
|
||||||
)
|
)
|
||||||
try:
|
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:
|
except Exception as e:
|
||||||
logger.info(f"Could not insert transactions: {e}")
|
logger.info(f"Could not insert transactions: {e}")
|
||||||
if e.args[0] == 3 and e.args[1].startswith('Duplicate key exists in'):
|
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()
|
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)
|
@register_query(TarantoolDBConnection)
|
||||||
def get_transaction_by_id(connection, transaction_id, table=TARANT_TABLE_TRANSACTION):
|
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))
|
txs = connection.run(connection.space(table).select(transaction_id, index=TARANT_ID_SEARCH))
|
||||||
|
|||||||
@ -163,8 +163,8 @@ class Planetmint(object):
|
|||||||
else:
|
else:
|
||||||
txns.append(transaction)
|
txns.append(transaction)
|
||||||
|
|
||||||
backend.query.store_transactions(self.connection, txns)
|
backend.query.store_transactions(self.connection, txns, TARANT_TABLE_TRANSACTION)
|
||||||
backend.query.store_governance_transactions(self.connection, gov_txns)
|
backend.query.store_transactions(self.connection, gov_txns, TARANT_TABLE_GOVERNANCE)
|
||||||
|
|
||||||
def delete_transactions(self, txs):
|
def delete_transactions(self, txs):
|
||||||
return backend.query.delete_transactions(self.connection, 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
|
@pytest.mark.bdb
|
||||||
def test_store_transaction(mocker, b, signed_create_tx, signed_transfer_tx, db_context):
|
def test_store_transaction(mocker, b, signed_create_tx, signed_transfer_tx):
|
||||||
from planetmint.backend.tarantool.connection import TarantoolDBConnection
|
|
||||||
|
|
||||||
mocked_store_transaction = mocker.patch("planetmint.backend.query.store_transactions")
|
mocked_store_transaction = mocker.patch("planetmint.backend.query.store_transactions")
|
||||||
b.store_bulk_transactions([signed_create_tx])
|
b.store_bulk_transactions([signed_create_tx])
|
||||||
if not isinstance(b.connection, TarantoolDBConnection):
|
mocked_store_transaction.assert_any_call(
|
||||||
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(
|
|
||||||
b.connection,
|
b.connection,
|
||||||
[signed_create_tx.to_dict()],
|
[signed_create_tx.to_dict()],
|
||||||
|
"transactions"
|
||||||
)
|
)
|
||||||
mocked_store_transaction.reset_mock()
|
mocked_store_transaction.reset_mock()
|
||||||
b.store_bulk_transactions([signed_transfer_tx])
|
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
|
@pytest.mark.bdb
|
||||||
def test_store_bulk_transaction(mocker, b, signed_create_tx, signed_transfer_tx, db_context):
|
def test_store_bulk_transaction(mocker, b, signed_create_tx, signed_transfer_tx):
|
||||||
from planetmint.backend.tarantool.connection import TarantoolDBConnection
|
|
||||||
|
|
||||||
mocked_store_transactions = mocker.patch("planetmint.backend.query.store_transactions")
|
mocked_store_transactions = mocker.patch("planetmint.backend.query.store_transactions")
|
||||||
b.store_bulk_transactions((signed_create_tx,))
|
b.store_bulk_transactions((signed_create_tx,))
|
||||||
if not isinstance(b.connection, TarantoolDBConnection):
|
mocked_store_transactions.assert_any_call(
|
||||||
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(
|
|
||||||
b.connection,
|
b.connection,
|
||||||
[signed_create_tx.to_dict()],
|
[signed_create_tx.to_dict()],
|
||||||
|
"transactions"
|
||||||
)
|
)
|
||||||
|
|
||||||
mocked_store_transactions.reset_mock()
|
mocked_store_transactions.reset_mock()
|
||||||
b.store_bulk_transactions((signed_transfer_tx,))
|
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
|
@pytest.mark.bdb
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user