get_txids_filtered rewrited

This commit is contained in:
andrei 2022-02-14 13:17:34 +02:00
parent bcdff80c38
commit f1b333dc72

View File

@ -40,7 +40,8 @@ def _group_transaction_by_ids(txids: list, connection):
"inputs": [ "inputs": [
{ {
"owners_before": _in[2], "owners_before": _in[2],
"fulfills": {"transaction_id": _in[3], "output_index": _in[4]} if len(_in[3]) > 0 and len(_int[4]) > 0 else None, "fulfills": {"transaction_id": _in[3], "output_index": _in[4]} if len(_in[3]) > 0 and len(
_int[4]) > 0 else None,
"fulfillment": _in[1] "fulfillment": _in[1]
} for _in in _txinputs } for _in in _txinputs
], ],
@ -189,18 +190,15 @@ def store_block(block: dict, connection):
@register_query(LocalMongoDBConnection) @register_query(LocalMongoDBConnection)
def get_txids_filtered(connection, asset_id: str, operation: str = None, def get_txids_filtered(connection, asset_id, operation=None, last_tx=None): # TODO here is used 'OR' operator
last_tx: str = None): # TODO here is used 'OR' operator _transaction_object = {"inputs": [], "outputs": [], "operation": "", "version": "", "id": ""}
_transaction_object = formats.transactions.copy()
_transaction_object["inputs"] = []
_transaction_object["outputs"] = []
actions = { actions = {
"CREATE": {"sets": ["CREATE", asset_id], "index": "transaction_search"}, "CREATE": {"sets": ["CREATE", asset_id], "index": "transaction_search"},
# 1 - operation, 2 - id (only in transactions) + # 1 - operation, 2 - id (only in transactions) +
"TRANSFER": {"sets": ["TRANSFER", asset_id], "index": "asset_search"}, "TRANSFER": {"sets": ["TRANSFER", asset_id], "index": "asset_search"},
# 1 - operation, 2 - asset.id (linked mode) + OPERATOR OR # 1 - operation, 2 - asset.id (linked mode) + OPERATOR OR
None: {"sets": [asset_id, asset_id], "index": "both_search"} None: {"sets": [asset_id, asset_id]}
}[operation] }[operation]
space = connection.space("transactions") space = connection.space("transactions")
if actions["sets"][0] == "CREATE": if actions["sets"][0] == "CREATE":
@ -210,11 +208,13 @@ def get_txids_filtered(connection, asset_id: str, operation: str = None,
_transactions = space.select([operation, asset_id], index=actions["index"]) _transactions = space.select([operation, asset_id], index=actions["index"])
_transactions = _transactions.data _transactions = _transactions.data
else: else:
_transactions = space.select([asset_id, asset_id], index=actions["index"]) _tx_ids = space.select([asset_id], index="id_search")
_transactions = _transactions.data _assets_ids = space.select([asset_id], index="only_asset_search")
return tuple(set([item for sublist in _assets_ids.data for item in sublist] + [item for sublist in _tx_ids.data for item in sublist]))
if last_tx: if last_tx:
_transactions = [_transactions[0]] return tuple(next(iter(_transactions)))
return tuple([elem[0] for elem in _transactions]) return tuple([elem[0] for elem in _transactions])