This is an automated email from the ASF dual-hosted git repository. apratim pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/incubator-resilientdb-graphql.git
The following commit(s) were added to refs/heads/main by this push: new 125b1b4 Removed mutations and queries that are no longer supported 125b1b4 is described below commit 125b1b4bd5699d1a92a6a209694fa45943adda32 Author: apratimshukla6 <apratimshuk...@gmail.com> AuthorDate: Wed Nov 20 12:43:51 2024 -0800 Removed mutations and queries that are no longer supported --- app.py | 95 -------------------------------------------------------- filter.py | 104 -------------------------------------------------------------- 2 files changed, 199 deletions(-) diff --git a/app.py b/app.py index bdeece0..744b6cb 100644 --- a/app.py +++ b/app.py @@ -10,7 +10,6 @@ import strawberry import typing import ast from typing import Optional, List -from filter import filter_by_keys from flask import Flask from flask_cors import CORS @@ -46,53 +45,6 @@ class PrepareAsset: recipientPublicKey: str asset: str -@strawberry.input -class UpdateAsset: - id: str - operation: typing.Optional["str"] - amount: typing.Optional["int"] - signerPublicKey: str - signerPrivateKey: str - recipientPublicKey: typing.Optional["str"] - asset: typing.Optional["str"] - -@strawberry.input -class FilterKeys: - ownerPublicKey: Optional[str] - recipientPublicKey: Optional[str] - -@strawberry.type -class Keys: - publicKey: str - privateKey: str - -def update(data): - record = db.transactions.retrieve(data.id) - prepared_token_tx = db.transactions.prepare( - operation=record["operation"] if data.operation == "" else data.operation, - signers=data.signerPublicKey, - recipients=[([record["outputs"][0]["condition"]["details"]["public_key"] if data.recipientPublicKey == "" else data.recipientPublicKey], record["outputs"][0]["amount"] if data.amount == "" else data.amount)], - asset=record["asset"] if data.asset == "" else ast.literal_eval(data.asset), - ) - - # fulfill the tnx - fulfilled_token_tx = db.transactions.fulfill(prepared_token_tx, private_keys=data.signerPrivateKey) - - id = db.transactions.send_commit(fulfilled_token_tx)[4:] # Extract ID - data = db.transactions.retrieve(txid=id) - payload = RetrieveTransaction( - id=data["id"], - version=data["version"], - amount=data["outputs"][0]["amount"], - uri=data["outputs"][0]["condition"]["uri"], - type=data["outputs"][0]["condition"]["details"]["type"], - publicKey=data["outputs"][0]["condition"]["details"]["public_key"], - operation=data["operation"], - metadata=data["metadata"], - asset=str(data["asset"]) - ) - return payload - @strawberry.type class Query: @strawberry.field @@ -111,32 +63,6 @@ class Query: asset=str(data["asset"]) ) return payload - - @strawberry.field - def getFilteredTransactions(self, filter: Optional[FilterKeys]) -> List[RetrieveTransaction]: - url = f"{protocol}{db_root_url}{fetch_all_endpoint}" - if filter.ownerPublicKey != None: - filter.ownerPublicKey = filter.ownerPublicKey if filter.ownerPublicKey.strip() else None - if filter.recipientPublicKey != None: - filter.recipientPublicKey = filter.recipientPublicKey if filter.recipientPublicKey.strip() else None - json_data = filter_by_keys(url, filter.ownerPublicKey, filter.recipientPublicKey) - records = [] - for data in json_data: - try: - records.append(RetrieveTransaction( - id=data["id"], - version=data["version"], - amount=data["outputs"][0]["amount"], - uri=data["outputs"][0]["condition"]["uri"], - type=data["outputs"][0]["condition"]["details"]["type"], - publicKey=data["outputs"][0]["condition"]["details"]["public_key"], - operation=data["operation"], - metadata=data["metadata"], - asset=str(data["asset"]) - )) - except Exception as e: - print(e) - return records @strawberry.type class Mutation: @@ -157,27 +83,6 @@ class Mutation: id=id ) return payload - - @strawberry.mutation - def updateTransaction(self, data: UpdateAsset) -> RetrieveTransaction: - return update(data) - - @strawberry.mutation - def updateMultipleTransaction(self, data: List[UpdateAsset]) -> List[RetrieveTransaction]: - result = [] - for transaction in data: - result.append(update(transaction)) - return result - - @strawberry.mutation - def generateKeys(self) -> Keys: - keys = generate_keypair() - payload = Keys( - publicKey=keys.public_key, - privateKey=keys.private_key - ) - return payload - schema = strawberry.Schema(query=Query, mutation=Mutation) diff --git a/filter.py b/filter.py deleted file mode 100644 index ce96e9e..0000000 --- a/filter.py +++ /dev/null @@ -1,104 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - - -import requests -import json - -def fix_json_with_commas(mixed_content): - # Manually parsing the JSON objects by counting braces - json_objects = [] - brace_count = 0 - current_json = '' - in_json = False - - for char in mixed_content: - if char == '{': - if brace_count == 0: - in_json = True - current_json = char - else: - current_json += char - brace_count += 1 - elif char == '}': - brace_count -= 1 - if brace_count == 0 and in_json: - current_json += char - json_objects.append(current_json) - in_json = False - else: - current_json += char - elif in_json: - current_json += char - - # Combine all JSON blocks into a valid JSON array string - combined_json = '[' + ','.join(json_objects) + ']' - return combined_json - -def get_json_objects_by_public_key(json_data, owner_public_key=None, recipient_public_key=None): - matching_objects = [] - for obj in json_data: - try: - # Check if the necessary fields are present - if 'inputs' in obj and 'outputs' in obj: - if owner_public_key is not None and recipient_public_key is not None: - if owner_public_key in obj['inputs'][0]['owners_before'] and recipient_public_key in obj['outputs'][0]['public_keys']: - matching_objects.append(obj) - elif owner_public_key is None and recipient_public_key is not None: - if recipient_public_key in obj['outputs'][0]['public_keys']: - matching_objects.append(obj) - elif owner_public_key is not None and recipient_public_key is None: - if owner_public_key in obj['inputs'][0]['owners_before']: - matching_objects.append(obj) - else: - matching_objects.append(obj) # Append all if no keys specified - except Exception as e: - print(f"Error processing JSON object: {e}") - return matching_objects - -def get_json_data(url, ownerPublicKey=None, recipientPublicKey=None): - try: - response = requests.get(url) - # Check if the request was successful (status code 200) - if response.status_code == 200: - # Parse the JSON data from the response - json_text = fix_json_with_commas(response.text) - json_data = json.loads(json_text) - if ownerPublicKey == None and recipientPublicKey == None: - matching_objects = get_json_objects_by_public_key(json_data, None, None) - return matching_objects - elif ownerPublicKey == None and recipientPublicKey != None: - matching_objects = get_json_objects_by_public_key(json_data, None, recipientPublicKey) - return matching_objects - elif ownerPublicKey != None and recipientPublicKey == None: - matching_objects = get_json_objects_by_public_key(json_data, ownerPublicKey, None) - return matching_objects - else: - # Get all JSON objects that match the given publicKey - matching_objects = get_json_objects_by_public_key(json_data, ownerPublicKey, recipientPublicKey) - return matching_objects - else: - print(f"Error: Unable to retrieve data from {url}. Status code: {response.status_code}") - return None - - except requests.exceptions.RequestException as e: - print(f"Error: {e}") - return None - -def filter_by_keys(url, ownerPublicKey, recipientPublicKey): - json_data = get_json_data(url, ownerPublicKey, recipientPublicKey) - return json_data