mirror of
https://github.com/bigchaindb/bigchaindb.git
synced 2024-10-13 13:34:05 +00:00
Sync up with master
This commit is contained in:
parent
49fca5cf3f
commit
b9cfc5d9a2
@ -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.
|
||||
|
@ -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))))
|
||||
|
||||
|
||||
|
@ -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(
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user