Spaces:
Running
Running
Fix critical async/await bug in Supabase database methods
Browse files- Fix get_tree() method to be async (was causing 500 error)
- Fix update_tree() method to be async
- Fix delete_tree() method to be async
- Add missing _check_connection() calls for consistency
- Remove debugging code from frontend
This fixes the 'object dict can't be used in await expression' error
that was preventing tree editing from working properly.
- static/js/tree-track-app.js +1 -0
- supabase_database.py +6 -3
static/js/tree-track-app.js
CHANGED
@@ -124,6 +124,7 @@ export class TreeTrackApp {
|
|
124 |
|
125 |
async checkForEditTree() {
|
126 |
const editTreeId = localStorage.getItem('editTreeId');
|
|
|
127 |
if (editTreeId) {
|
128 |
// Clear the localStorage item to prevent repeated loads
|
129 |
localStorage.removeItem('editTreeId');
|
|
|
124 |
|
125 |
async checkForEditTree() {
|
126 |
const editTreeId = localStorage.getItem('editTreeId');
|
127 |
+
|
128 |
if (editTreeId) {
|
129 |
// Clear the localStorage item to prevent repeated loads
|
130 |
localStorage.removeItem('editTreeId');
|
supabase_database.py
CHANGED
@@ -93,8 +93,9 @@ class SupabaseDatabase:
|
|
93 |
logger.error(f"Error retrieving trees: {e}")
|
94 |
raise
|
95 |
|
96 |
-
def get_tree(self, tree_id: int) -> Optional[Dict[str, Any]]:
|
97 |
"""Get a specific tree by ID"""
|
|
|
98 |
try:
|
99 |
result = self.client.table('trees') \
|
100 |
.select("*") \
|
@@ -109,8 +110,9 @@ class SupabaseDatabase:
|
|
109 |
logger.error(f"Error retrieving tree {tree_id}: {e}")
|
110 |
raise
|
111 |
|
112 |
-
def update_tree(self, tree_id: int, tree_data: Dict[str, Any]) -> Dict[str, Any]:
|
113 |
"""Update a tree record"""
|
|
|
114 |
try:
|
115 |
# Remove id from update data if present
|
116 |
update_data = {k: v for k, v in tree_data.items() if k != 'id'}
|
@@ -131,8 +133,9 @@ class SupabaseDatabase:
|
|
131 |
logger.error(f"Error updating tree {tree_id}: {e}")
|
132 |
raise
|
133 |
|
134 |
-
def delete_tree(self, tree_id: int) -> bool:
|
135 |
"""Delete a tree record"""
|
|
|
136 |
try:
|
137 |
result = self.client.table('trees') \
|
138 |
.delete() \
|
|
|
93 |
logger.error(f"Error retrieving trees: {e}")
|
94 |
raise
|
95 |
|
96 |
+
async def get_tree(self, tree_id: int) -> Optional[Dict[str, Any]]:
|
97 |
"""Get a specific tree by ID"""
|
98 |
+
self._check_connection()
|
99 |
try:
|
100 |
result = self.client.table('trees') \
|
101 |
.select("*") \
|
|
|
110 |
logger.error(f"Error retrieving tree {tree_id}: {e}")
|
111 |
raise
|
112 |
|
113 |
+
async def update_tree(self, tree_id: int, tree_data: Dict[str, Any]) -> Dict[str, Any]:
|
114 |
"""Update a tree record"""
|
115 |
+
self._check_connection()
|
116 |
try:
|
117 |
# Remove id from update data if present
|
118 |
update_data = {k: v for k, v in tree_data.items() if k != 'id'}
|
|
|
133 |
logger.error(f"Error updating tree {tree_id}: {e}")
|
134 |
raise
|
135 |
|
136 |
+
async def delete_tree(self, tree_id: int) -> bool:
|
137 |
"""Delete a tree record"""
|
138 |
+
self._check_connection()
|
139 |
try:
|
140 |
result = self.client.table('trees') \
|
141 |
.delete() \
|