Sync up with master

This commit is contained in:
Sylvain Bellemare 2016-12-12 11:54:08 +01:00
parent 49fca5cf3f
commit b9cfc5d9a2
4 changed files with 7 additions and 51 deletions

View File

@ -107,28 +107,6 @@ def get_blocks_status_from_transaction(connection, transaction_id):
raise NotImplementedError
@singledispatch
def get_txids_by_metadata_id(connection, metadata_id):
"""Retrieves transaction ids related to a particular metadata.
When creating a transaction one of the optional arguments is the
`metadata`. The metadata is a generic dict that contains extra
information that can be appended to the transaction.
To make it easy to query the bigchain for that particular metadata as we
create a UUID for the metadata and store it with the transaction.
Args:
metadata_id (str): the id for this particular metadata.
Returns:
A list of transaction ids containing that metadata. If no
transaction exists with that metadata it returns an empty list `[]`
"""
raise NotImplementedError
@singledispatch
def get_txids_by_asset_id(connection, asset_id):
"""Retrieves transactions ids related to a particular asset.

View File

@ -73,18 +73,6 @@ def get_blocks_status_from_transaction(connection, transaction_id):
.pluck('votes', 'id', {'block': ['voters']}))
@register_query(RethinkDBConnection)
def get_txids_by_metadata_id(connection, metadata_id):
return connection.run(
r.table('bigchain', read_mode=READ_MODE)
.get_all(metadata_id, index='metadata_id')
.concat_map(lambda block: block['block']['transactions'])
.filter(lambda transaction:
transaction['transaction']['metadata']['id'] ==
metadata_id)
.get_field('id'))
@register_query(RethinkDBConnection)
def get_txids_by_asset_id(connection, asset_id):
# here we only want to return the transaction ids since later on when
@ -93,7 +81,7 @@ def get_txids_by_asset_id(connection, asset_id):
r.table('bigchain')
.get_all(asset_id, index='asset_id')
.concat_map(lambda block: block['block']['transactions'])
.filter(lambda transaction: transaction['transaction']['asset']['id'] == asset_id)
.filter(lambda transaction: transaction['asset']['id'] == asset_id)
.get_field('id'))
@ -103,11 +91,9 @@ def get_asset_by_id(connection, asset_id):
r.table('bigchain', read_mode=READ_MODE)
.get_all(asset_id, index='asset_id')
.concat_map(lambda block: block['block']['transactions'])
.filter(lambda transaction:
transaction['transaction']['asset']['id'] == asset_id)
.filter(lambda transaction:
transaction['transaction']['operation'] == 'CREATE')
.pluck({'transaction': 'asset'}))
.filter(lambda transaction: transaction['asset']['id'] == asset_id)
.filter(lambda transaction: transaction['operation'] == 'CREATE')
.pluck('asset'))
@register_query(RethinkDBConnection)
@ -116,7 +102,7 @@ def get_spent(connection, transaction_id, condition_id):
return connection.run(
r.table('bigchain', read_mode=READ_MODE)
.concat_map(lambda doc: doc['block']['transactions'])
.filter(lambda transaction: transaction['transaction']['fulfillments'].contains(
.filter(lambda transaction: transaction['fulfillments'].contains(
lambda fulfillment: fulfillment['input'] == {'txid': transaction_id, 'cid': condition_id})))
@ -126,7 +112,7 @@ def get_owned_ids(connection, owner):
return connection.run(
r.table('bigchain', read_mode=READ_MODE)
.concat_map(lambda doc: doc['block']['transactions'])
.filter(lambda tx: tx['transaction']['conditions'].contains(
.filter(lambda tx: tx['conditions'].contains(
lambda c: c['owners_after'].contains(owner))))

View File

@ -62,17 +62,11 @@ def create_bigchain_secondary_index(connection, dbname):
.table('bigchain')
.index_create('transaction_id', r.row['block']['transactions']['id'], multi=True))
# secondary index for payload data by UUID
connection.run(
r.db(dbname)
.table('bigchain')
.index_create('metadata_id', r.row['block']['transactions']['transaction']['metadata']['id'], multi=True))
# secondary index for asset uuid
connection.run(
r.db(dbname)
.table('bigchain')
.index_create('asset_id', r.row['block']['transactions']['transaction']['asset']['id'], multi=True))
.index_create('asset_id', r.row['block']['transactions']['asset']['id'], multi=True))
# wait for rethinkdb to finish creating secondary indexes
connection.run(

View File

@ -92,8 +92,6 @@ def test_create_secondary_indexes():
'block_timestamp')) is True
assert conn.run(r.db(dbname).table('bigchain').index_list().contains(
'transaction_id')) is True
assert conn.run(r.db(dbname).table('bigchain').index_list().contains(
'metadata_id')) is True
assert conn.run(r.db(dbname).table('bigchain').index_list().contains(
'asset_id')) is True