Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 15 additions & 9 deletions server/db/db_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@
sys.path.extend([f"{INSTALL_PATH}/server"])

from helper import if_byte_then_to_str
from logger import mylog
from logger import mylog


#-------------------------------------------------------------------------------
# Return the SQL WHERE clause for filtering devices based on their status.
Expand Down Expand Up @@ -41,7 +42,6 @@ def get_device_condition_by_status(device_status):
return conditions.get(device_status, 'WHERE 1=0')



#-------------------------------------------------------------------------------
# Creates a JSON-like dictionary from a database row
def row_to_json(names, row):
Expand Down Expand Up @@ -71,6 +71,7 @@ def row_to_json(names, row):

return rowEntry


#-------------------------------------------------------------------------------
def sanitize_SQL_input(val):
"""
Expand Down Expand Up @@ -116,7 +117,6 @@ def get_date_from_period(period):
return period_sql



#-------------------------------------------------------------------------------
def print_table_schema(db, table):
"""
Expand Down Expand Up @@ -193,15 +193,21 @@ def get_table_json(sql, sql_query):
"""
try:
sql.execute(sql_query)
column_names = [col[0] for col in sql.description]
rows = sql.fetchall()
if (rows):
# We only return data if we actually got some out of SQLite
column_names = [col[0] for col in sql.description]
data = [row_to_json(column_names, row) for row in rows]
return json_obj({"data": data}, column_names)
except sqlite3.Error as e:
# SQLite error, e.g. malformed query
mylog('verbose', ['[Database] - SQL ERROR: ', e])
return json_obj({}, []) # return empty object

result = {"data": [row_to_json(column_names, row) for row in rows]}
return json_obj(result, column_names)

except Exception as e:
# Catch-all for other exceptions, e.g. iteration error
mylog('verbose', ['[Database] - Unexpected ERROR: ', e])

# In case of any error or no data, return empty object
return json_obj({"data": []}, [])

#-------------------------------------------------------------------------------
class json_obj:
Expand Down