diff --git a/planetmint/backend/models/output.py b/planetmint/backend/models/output.py index c1b645d..3ca0a55 100644 --- a/planetmint/backend/models/output.py +++ b/planetmint/backend/models/output.py @@ -15,51 +15,50 @@ class SubCondition: @dataclass class ConditionDetails: - type: str + type: str = "" public_key: str = "" threshold: int = 0 - sub_conditions: list[SubCondition] = field(default_factory=list) + sub_conditions: list[SubCondition] = None @dataclass class Condition: - uri: str - details: ConditionDetails + uri: str = "" + details: ConditionDetails = field(default_factory=ConditionDetails) @dataclass class Output: - id: str - amount: int - condition: field(default_factory=Condition) - public_keys: str = "" + tx_id: str = "" + amount: int = 0 + condition: Condition = field(default_factory=Condition) @staticmethod def from_dict(output: dict, tx_id: str = "") -> Output: if output["condition"]["details"].get("subconditions") is None: return output_with_public_key(output, tx_id) else: + print(output) return output_with_sub_conditions(output, tx_id) @staticmethod def from_tuple(output: tuple) -> Output: return Output( - id=output[0], - public_keys=output[1], + tx_id=output[0], condition=Condition( - uri=output[2], + uri=output[1], details=ConditionDetails( - type=output[3], - public_key=output[4], - threshold=output[5], - sub_conditions=output[6], + type=output[2], + public_key=output[3], + threshold=output[4], + sub_conditions=output[5], ), ), ) def to_output_dict(self) -> dict: return { - "id": self.id, + "id": self.tx_id, "public_keys": self.public_keys, "condition": { "uri": self.condition.uri, @@ -75,7 +74,7 @@ class Output: def output_with_sub_conditions(output, tx_id) -> Output: return Output( - id=tx_id, + tx_id=tx_id, amount=output["amount"], condition=Condition( uri=output["condition"]["uri"], @@ -98,7 +97,7 @@ def output_with_sub_conditions(output, tx_id) -> Output: def output_with_public_key(output, tx_id) -> Output: return Output( - id=tx_id, + tx_id=tx_id, amount=output["amount"], condition=Condition( uri=output["condition"]["uri"], diff --git a/planetmint/backend/tarantool/query.py b/planetmint/backend/tarantool/query.py index 24adba3..b4a7940 100644 --- a/planetmint/backend/tarantool/query.py +++ b/planetmint/backend/tarantool/query.py @@ -78,10 +78,14 @@ def store_transaction_inputs(connection, input: Input, index: int): @register_query(TarantoolDBConnection) def store_transaction_outputs(connection, output: Output, index: int): connection.run(connection.space(TARANT_TABLE_OUTPUT).insert(( - output.public_keys, - output.condition, - output.condition, + output.tx_id, + output.amount, + output.condition.uri if output.condition else "", + output.condition.details.type if output.condition.details else "", + output.condition.details.public_key if output.condition.details else "", uuid4().hex, + output.condition.details.threshold if output.condition.details else "", + output.condition.details.sub_conditions if output.condition.details else "", index ))) @@ -97,7 +101,7 @@ def store_transactions(connection, signed_transactions: list): [store_transaction_inputs(connection, Input.from_dict(input, transaction["id"]), index) for index, input in enumerate(transaction[TARANT_TABLE_INPUT])] - [store_transaction_outputs(connection, Output.from_dict(output, transaction["id"])) for index, output in + [store_transaction_outputs(connection, Output.from_dict(output, transaction["id"]), index) for index, output in enumerate(transaction[TARANT_TABLE_OUTPUT])] for _key in txtuples[TARANT_TABLE_KEYS]: