Modified Create function to use GraphQL endpoints
diff --git a/resdb_orm/orm.py b/resdb_orm/orm.py
index 457a840..7202d24 100644
--- a/resdb_orm/orm.py
+++ b/resdb_orm/orm.py
@@ -3,24 +3,36 @@
import json
from resdb_driver import Resdb
from resdb_driver.crypto import generate_keypair
+import secrets
class ResDBORM:
def __init__(self, conn_string):
self.db_root_url = conn_string
self.db = Resdb(conn_string)
- def create(self, data):
- keypair = generate_keypair()
- prepared_tx = self.db.transactions.prepare(
- operation="CREATE",
- signers=keypair.public_key,
- asset={"data": data},
- )
- fulfilled_tx = self.db.transactions.fulfill(prepared_tx, private_keys=keypair.private_key)
- response = self.db.transactions.send_commit(fulfilled_tx)
+ def generate_token(self, length=64):
+ return secrets.token_hex(length // 2)
- alphanumeric_id = response.split(":")[1].strip()
- return alphanumeric_id
+ def create(self, data):
+ token = self.generate_token()
+ payload = {"id":token, "data":data}
+ headers = {'Content-Type': 'application/json'}
+ response = requests.post(f'{self.db_root_url}/v1/transactions/commit',
+ data=json.dumps(payload), headers=headers)
+
+
+ # Check if response is successful and handle empty response content
+ if response.status_code == 201:
+ if response.content:
+ decoded_content = response.content.decode('utf-8')
+ id_value = decoded_content.split(': ')[1].strip()
+ return id_value
+ else:
+ return {"status": "create unsuccessful, no content in response"}
+
+ def read_all(self):
+ response = requests.get(f'{self.db_root_url}/v1/transactions')
+ return response.json()
def read(self, key):
response = requests.get(f'{self.db_root_url}/v1/transactions/{key}')
@@ -28,18 +40,16 @@
def delete(self, key):
payload = {"id": key}
- print("cp1")
headers = {'Content-Type': 'application/json'}
response = requests.post(f'{self.db_root_url}/v1/transactions/commit',
data=json.dumps(payload), headers=headers)
- print("cp2")
# Check if response is successful and handle empty response content
if response.status_code == 201:
if response.content:
return {"status": "delete successful"}
else:
- return {"status": "delete successful, no content in response"}
+ return {"status": "delete unsuccessful, no content in response"}
def update(self, key, new_data):
# Delete the existing record first
@@ -50,7 +60,7 @@
print("Warning: Delete operation returned no content.")
# Update by creating a new entry with the same key
- payload = {"id": key, "value": new_data}
+ payload = {"id": key, "data": new_data}
headers = {'Content-Type': 'application/json'}
response = requests.post(f'{self.db_root_url}/v1/transactions/commit',
data=json.dumps(payload), headers=headers)
@@ -60,7 +70,7 @@
if response.content:
return {"status": "update successful"}
else:
- return {"status": "update successful, no content in response"}
+ return {"status": "update unsuccessful, no content in response"}
def connect(conn_string):
- return ResDBORM(conn_string)
+ return ResDBORM(conn_string)
\ No newline at end of file
diff --git a/test.py b/test.py
index 27e39ab..dd916cc 100644
--- a/test.py
+++ b/test.py
@@ -1,5 +1,4 @@
-# another_script.py
-
+# test.py
from resdb_orm import connect
import requests
@@ -13,13 +12,16 @@
# Retrieve records
read_response = db.read(create_response)
print("Read Response:", read_response)
-print("Data:", read_response["asset"]["data"])
+print("Data:", read_response["data"])
# Update records
update_response = db.update(create_response, {"name": "def", "age": 456})
print("Update Response:", update_response)
+read_response = db.read(create_response)
+print("Read Response:", read_response)
+print("New Data:", read_response["data"])
# Delete records
delete_response = db.delete(create_response)
print("Delete Response:", delete_response)
-
+read_response = db.read(create_response)
\ No newline at end of file