From 3ecb05a62d82f97c5d824e1fbb2132f0acdb50eb Mon Sep 17 00:00:00 2001 From: Rodolphe Marques Date: Tue, 13 Jun 2017 11:36:58 +0200 Subject: [PATCH] Renamed `txid` to `transaction_id` in data models - Updated schema validation - Updated database schema - Updated database queries - Fixed tests --- bigchaindb/backend/mongodb/query.py | 4 ++-- bigchaindb/backend/mongodb/schema.py | 4 ++-- bigchaindb/backend/rethinkdb/query.py | 6 ++++-- bigchaindb/backend/rethinkdb/schema.py | 6 +++--- bigchaindb/common/schema/transaction.yaml | 4 ++-- bigchaindb/common/transaction.py | 4 ++-- tests/common/test_transaction.py | 10 +++++----- 7 files changed, 20 insertions(+), 18 deletions(-) diff --git a/bigchaindb/backend/mongodb/query.py b/bigchaindb/backend/mongodb/query.py index 3bc4dc53..a1e97b64 100644 --- a/bigchaindb/backend/mongodb/query.py +++ b/bigchaindb/backend/mongodb/query.py @@ -157,7 +157,7 @@ def get_spent(conn, transaction_id, output): {'$match': { 'block.transactions.inputs': { '$elemMatch': { - 'fulfills.txid': transaction_id, + 'fulfills.transaction_id': transaction_id, 'fulfills.output': output, }, }, @@ -166,7 +166,7 @@ def get_spent(conn, transaction_id, output): {'$match': { 'block.transactions.inputs': { '$elemMatch': { - 'fulfills.txid': transaction_id, + 'fulfills.transaction_id': transaction_id, 'fulfills.output': output, }, }, diff --git a/bigchaindb/backend/mongodb/schema.py b/bigchaindb/backend/mongodb/schema.py index 6c54bfd8..c9c5bbb4 100644 --- a/bigchaindb/backend/mongodb/schema.py +++ b/bigchaindb/backend/mongodb/schema.py @@ -68,10 +68,10 @@ def create_bigchain_secondary_index(conn, dbname): .create_index('block.transactions.outputs.public_keys', name='outputs') - # secondary index on inputs/transaction links (txid, output) + # secondary index on inputs/transaction links (transaction_id, output) conn.conn[dbname]['bigchain']\ .create_index([ - ('block.transactions.inputs.fulfills.txid', ASCENDING), + ('block.transactions.inputs.fulfills.transaction_id', ASCENDING), ('block.transactions.inputs.fulfills.output', ASCENDING), ], name='inputs') diff --git a/bigchaindb/backend/rethinkdb/query.py b/bigchaindb/backend/rethinkdb/query.py index 3ee90f34..a2e97d9a 100644 --- a/bigchaindb/backend/rethinkdb/query.py +++ b/bigchaindb/backend/rethinkdb/query.py @@ -122,7 +122,8 @@ def get_spent(connection, transaction_id, output): .get_all([transaction_id, output], index='inputs') .concat_map(lambda doc: doc['block']['transactions']) .filter(lambda transaction: transaction['inputs'].contains( - lambda input_: input_['fulfills'] == {'txid': transaction_id, 'output': output}))) + lambda input_: input_['fulfills'] == { + 'transaction_id': transaction_id, 'output': output}))) @register_query(RethinkDBConnection) @@ -286,7 +287,8 @@ def unwind_block_transactions(block): def get_spending_transactions(connection, links): query = ( r.table('bigchain') - .get_all(*[(l['txid'], l['output']) for l in links], index='inputs') + .get_all(*[(l['transaction_id'], l['output']) for l in links], + index='inputs') .concat_map(unwind_block_transactions) # filter transactions spending output .filter(lambda doc: r.expr(links).set_intersection( diff --git a/bigchaindb/backend/rethinkdb/schema.py b/bigchaindb/backend/rethinkdb/schema.py index 8f0f6b9c..f96e8a86 100644 --- a/bigchaindb/backend/rethinkdb/schema.py +++ b/bigchaindb/backend/rethinkdb/schema.py @@ -79,15 +79,15 @@ def create_bigchain_secondary_index(connection, dbname): .concat_map(lambda tx: tx['outputs']['public_keys']) .reduce(lambda l, r: l + r), multi=True)) - # secondary index on inputs/transaction links (txid, output) + # secondary index on inputs/transaction links (transaction_id, output) connection.run( r.db(dbname) .table('bigchain') .index_create('inputs', r.row['block']['transactions'] .concat_map(lambda tx: tx['inputs']['fulfills']) - .with_fields('txid', 'output') - .map(lambda fulfills: [fulfills['txid'], + .with_fields('transaction_id', 'output') + .map(lambda fulfills: [fulfills['transaction_id'], fulfills['output']]), multi=True)) diff --git a/bigchaindb/common/schema/transaction.yaml b/bigchaindb/common/schema/transaction.yaml index f63b652e..e58b5403 100644 --- a/bigchaindb/common/schema/transaction.yaml +++ b/bigchaindb/common/schema/transaction.yaml @@ -204,13 +204,13 @@ definitions: additionalProperties: false required: - output - - txid + - transaction_id properties: output: "$ref": "#/definitions/offset" description: | Index of the output containing the condition being fulfilled - txid: + transaction_id: "$ref": "#/definitions/sha3_hexdigest" description: | Transaction ID containing the output to spend diff --git a/bigchaindb/common/transaction.py b/bigchaindb/common/transaction.py index 365fee8f..b021c66e 100644 --- a/bigchaindb/common/transaction.py +++ b/bigchaindb/common/transaction.py @@ -175,7 +175,7 @@ class TransactionLink(object): :class:`~bigchaindb.common.transaction.TransactionLink` """ try: - return cls(link['txid'], link['output']) + return cls(link['transaction_id'], link['output']) except TypeError: return cls() @@ -189,7 +189,7 @@ class TransactionLink(object): return None else: return { - 'txid': self.txid, + 'transaction_id': self.txid, 'output': self.output, } diff --git a/tests/common/test_transaction.py b/tests/common/test_transaction.py index 18750ad4..6855bf3a 100644 --- a/tests/common/test_transaction.py +++ b/tests/common/test_transaction.py @@ -363,7 +363,7 @@ def test_transaction_link_serialization(): tx_id = 'a transaction id' expected = { - 'txid': tx_id, + 'transaction_id': tx_id, 'output': 0, } tx_link = TransactionLink(tx_id, 0) @@ -386,7 +386,7 @@ def test_transaction_link_deserialization(): tx_id = 'a transaction id' expected = TransactionLink(tx_id, 0) tx_link = { - 'txid': tx_id, + 'transaction_id': tx_id, 'output': 0, } tx_link = TransactionLink.from_dict(tx_link) @@ -845,7 +845,7 @@ def test_create_transfer_transaction_single_io(tx, user_pub, user2_pub, ], 'fulfillment': None, 'fulfills': { - 'txid': tx.id, + 'transaction_id': tx.id, 'output': 0 } } @@ -894,7 +894,7 @@ def test_create_transfer_transaction_multiple_io(user_pub, user_priv, ], 'fulfillment': None, 'fulfills': { - 'txid': tx.id, + 'transaction_id': tx.id, 'output': 0 } }, { @@ -903,7 +903,7 @@ def test_create_transfer_transaction_multiple_io(user_pub, user_priv, ], 'fulfillment': None, 'fulfills': { - 'txid': tx.id, + 'transaction_id': tx.id, 'output': 1 } }