Source code for pacifica.metadata.rest.tkvinfo_queries.kvs_for_transaction

#!/usr/bin/python
# -*- coding: utf-8 -*-
"""CherryPy File Details object class."""
from cherrypy import tools
from pacifica.metadata.orm import TransactionKeyValue, Keys, Values
from pacifica.metadata.orm.base import db_connection_decorator


# pylint: disable=too-few-public-methods
[docs]class KVsForTransaction(object): """Retrieves a list of key/value pairs for a transaction_id.""" exposed = True
[docs] @staticmethod def get_kv_pairs_for_transaction(transaction_id): """Retrieve a list of key/value pairs for a transaction_id.""" # pylint: disable=no-member tkv_query = (TransactionKeyValue .select(Keys.key, Values.value) .join(Keys, on=(TransactionKeyValue.key == Keys.id)) .join(Values, on=(TransactionKeyValue.value == Values.id)) .where(TransactionKeyValue.transaction == transaction_id)).dicts() # pylint: enable=no-member return {str(item['key']): str(item['value']) for item in tkv_query}
# Cherrypy requires these named methods. # pylint: disable=invalid-name @staticmethod @tools.json_out() @db_connection_decorator def GET(transaction_id): """Return key/value combos for a given transaction.""" return KVsForTransaction.get_kv_pairs_for_transaction(transaction_id)