Source code for tibco.liveview.models.snapshot_result

from ..exceptions import LiveViewException
from ..models.liveview_tuple import LvTuple
from ..util import convert_tuple_with_schema


[docs]class SnapshotResult: """The class is used to encapsulate the results of snapshot queries. Instantiated through LiveViewClient#snapshot_query(). Parameters: - snapshot : The raw JSON of a snapshot query, as a list. Attributes: - schema : Dict containing the Schema for the table queried. - keys : List containing corresponding Key(s) for the tuples in 'data' - cols : List of the names of columns in the table - snapshot_data : List of dicts, serving as the snapshot data. - size : Number of tuples in the snapshot. """ def __init__(self, snapshot) -> None: self.data = [] self.keys = [] _header = snapshot.pop(0) _footer = snapshot.pop() self.schema = _header.get('data').get('schema') self.cols = list(self.schema.keys()) for s in snapshot: self.data.append(LvTuple(s.get('data'), self.schema)) self.keys.append(s.get('key')) self.size = len(self.data)
[docs] def to_dict(self) -> dict: """Returns the data of the snapshot as a dictionary. Returns: - A Dict, with keys 'schema', 'keys', and 'data' """ output = { 'schema': self.schema, 'keys': self.keys, 'data': list(map(lambda t: convert_tuple_with_schema(t, self.schema), self.data)), } return output
[docs] def get_column(self, col_name) -> list: """Returns a list containing every entry for a given column. Parameters: - col_name : The name of the column to get data from. Returns: - A list of values. """ if col_name not in self.cols: raise LiveViewException(f'{col_name} not found. available columns are: {self.cols}') return [data_dict.get(col_name) for data_dict in self.data]