Renamed txid to transaction_id in data models

- Updated schema validation
- Updated database schema
- Updated database queries
- Fixed tests
This commit is contained in:
Rodolphe Marques 2017-06-13 11:36:58 +02:00
parent 32fc9244e6
commit 3ecb05a62d
7 changed files with 20 additions and 18 deletions

View File

@ -157,7 +157,7 @@ def get_spent(conn, transaction_id, output):
{'$match': { {'$match': {
'block.transactions.inputs': { 'block.transactions.inputs': {
'$elemMatch': { '$elemMatch': {
'fulfills.txid': transaction_id, 'fulfills.transaction_id': transaction_id,
'fulfills.output': output, 'fulfills.output': output,
}, },
}, },
@ -166,7 +166,7 @@ def get_spent(conn, transaction_id, output):
{'$match': { {'$match': {
'block.transactions.inputs': { 'block.transactions.inputs': {
'$elemMatch': { '$elemMatch': {
'fulfills.txid': transaction_id, 'fulfills.transaction_id': transaction_id,
'fulfills.output': output, 'fulfills.output': output,
}, },
}, },

View File

@ -68,10 +68,10 @@ def create_bigchain_secondary_index(conn, dbname):
.create_index('block.transactions.outputs.public_keys', .create_index('block.transactions.outputs.public_keys',
name='outputs') name='outputs')
# secondary index on inputs/transaction links (txid, output) # secondary index on inputs/transaction links (transaction_id, output)
conn.conn[dbname]['bigchain']\ conn.conn[dbname]['bigchain']\
.create_index([ .create_index([
('block.transactions.inputs.fulfills.txid', ASCENDING), ('block.transactions.inputs.fulfills.transaction_id', ASCENDING),
('block.transactions.inputs.fulfills.output', ASCENDING), ('block.transactions.inputs.fulfills.output', ASCENDING),
], name='inputs') ], name='inputs')

View File

@ -122,7 +122,8 @@ def get_spent(connection, transaction_id, output):
.get_all([transaction_id, output], index='inputs') .get_all([transaction_id, output], index='inputs')
.concat_map(lambda doc: doc['block']['transactions']) .concat_map(lambda doc: doc['block']['transactions'])
.filter(lambda transaction: transaction['inputs'].contains( .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) @register_query(RethinkDBConnection)
@ -286,7 +287,8 @@ def unwind_block_transactions(block):
def get_spending_transactions(connection, links): def get_spending_transactions(connection, links):
query = ( query = (
r.table('bigchain') 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) .concat_map(unwind_block_transactions)
# filter transactions spending output # filter transactions spending output
.filter(lambda doc: r.expr(links).set_intersection( .filter(lambda doc: r.expr(links).set_intersection(

View File

@ -79,15 +79,15 @@ def create_bigchain_secondary_index(connection, dbname):
.concat_map(lambda tx: tx['outputs']['public_keys']) .concat_map(lambda tx: tx['outputs']['public_keys'])
.reduce(lambda l, r: l + r), multi=True)) .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( connection.run(
r.db(dbname) r.db(dbname)
.table('bigchain') .table('bigchain')
.index_create('inputs', .index_create('inputs',
r.row['block']['transactions'] r.row['block']['transactions']
.concat_map(lambda tx: tx['inputs']['fulfills']) .concat_map(lambda tx: tx['inputs']['fulfills'])
.with_fields('txid', 'output') .with_fields('transaction_id', 'output')
.map(lambda fulfills: [fulfills['txid'], .map(lambda fulfills: [fulfills['transaction_id'],
fulfills['output']]), fulfills['output']]),
multi=True)) multi=True))

View File

@ -204,13 +204,13 @@ definitions:
additionalProperties: false additionalProperties: false
required: required:
- output - output
- txid - transaction_id
properties: properties:
output: output:
"$ref": "#/definitions/offset" "$ref": "#/definitions/offset"
description: | description: |
Index of the output containing the condition being fulfilled Index of the output containing the condition being fulfilled
txid: transaction_id:
"$ref": "#/definitions/sha3_hexdigest" "$ref": "#/definitions/sha3_hexdigest"
description: | description: |
Transaction ID containing the output to spend Transaction ID containing the output to spend

View File

@ -175,7 +175,7 @@ class TransactionLink(object):
:class:`~bigchaindb.common.transaction.TransactionLink` :class:`~bigchaindb.common.transaction.TransactionLink`
""" """
try: try:
return cls(link['txid'], link['output']) return cls(link['transaction_id'], link['output'])
except TypeError: except TypeError:
return cls() return cls()
@ -189,7 +189,7 @@ class TransactionLink(object):
return None return None
else: else:
return { return {
'txid': self.txid, 'transaction_id': self.txid,
'output': self.output, 'output': self.output,
} }

View File

@ -363,7 +363,7 @@ def test_transaction_link_serialization():
tx_id = 'a transaction id' tx_id = 'a transaction id'
expected = { expected = {
'txid': tx_id, 'transaction_id': tx_id,
'output': 0, 'output': 0,
} }
tx_link = TransactionLink(tx_id, 0) tx_link = TransactionLink(tx_id, 0)
@ -386,7 +386,7 @@ def test_transaction_link_deserialization():
tx_id = 'a transaction id' tx_id = 'a transaction id'
expected = TransactionLink(tx_id, 0) expected = TransactionLink(tx_id, 0)
tx_link = { tx_link = {
'txid': tx_id, 'transaction_id': tx_id,
'output': 0, 'output': 0,
} }
tx_link = TransactionLink.from_dict(tx_link) 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, 'fulfillment': None,
'fulfills': { 'fulfills': {
'txid': tx.id, 'transaction_id': tx.id,
'output': 0 'output': 0
} }
} }
@ -894,7 +894,7 @@ def test_create_transfer_transaction_multiple_io(user_pub, user_priv,
], ],
'fulfillment': None, 'fulfillment': None,
'fulfills': { 'fulfills': {
'txid': tx.id, 'transaction_id': tx.id,
'output': 0 'output': 0
} }
}, { }, {
@ -903,7 +903,7 @@ def test_create_transfer_transaction_multiple_io(user_pub, user_priv,
], ],
'fulfillment': None, 'fulfillment': None,
'fulfills': { 'fulfills': {
'txid': tx.id, 'transaction_id': tx.id,
'output': 1 'output': 1
} }
} }