mostly working templating for landing page
This commit is contained in:
@@ -4,6 +4,8 @@ import logging
|
||||
from typing import Generator
|
||||
import datetime
|
||||
|
||||
from templating import SensorInfo
|
||||
|
||||
# main database connector class
|
||||
# permission validation is not performed on this class
|
||||
# perform those higher on the call stack
|
||||
@@ -36,10 +38,14 @@ class DatabaseConnect:
|
||||
def display_users(self) -> tuple[tuple[int, str, int]]:
|
||||
self.cursor.execute("SELECT * FROM Users")
|
||||
return self.cursor.fetchall()
|
||||
|
||||
def username_from_id(self, user_id):
|
||||
self.cursor.execute("SELECT users.`username` FROM users WHERE `ID` = 1;")
|
||||
return self.cursor.fetchone()
|
||||
|
||||
def view_valid_rooms(self, user_id) -> list[tuple[str, str]]:
|
||||
def view_valid_rooms(self, user_id) -> list[tuple[str, str, int]]:
|
||||
self.cursor.execute(
|
||||
"SELECT rooms.name, rooms.shortname from permissions INNER JOIN rooms ON permissions.`roomID` = rooms.`ID` WHERE permissions.`userID` = ? AND permissions.`view` = 1;",
|
||||
"SELECT rooms.name, rooms.shortname, rooms.ID from permissions INNER JOIN rooms ON permissions.`roomID` = rooms.`ID` WHERE permissions.`userID` = ? AND permissions.`view` = 1;",
|
||||
(user_id,))
|
||||
return self.cursor.fetchall()
|
||||
|
||||
@@ -55,9 +61,22 @@ class DatabaseConnect:
|
||||
# self.cursor.execute("SELECT rooms.`ID` from rooms WHERE rooms.shortname = ?;",(shortname,))
|
||||
# return self.cursor.fetchone()
|
||||
|
||||
def get_sensors_in_room(self, shortname) -> list[int]:
|
||||
self.cursor.execute("SELECT devices.`ID` from devices LEFT JOIN rooms ON devices.`roomID` = rooms.ID WHERE rooms.shortname = ?;",(shortname,))
|
||||
def get_sensors_in_room_shortname(self, shortname) -> list[int]:
|
||||
self.cursor.execute("SELECT Sensors.`ID` from Sensors LEFT JOIN rooms ON Sensors.`roomID` = rooms.ID WHERE rooms.shortname = ?;",(shortname,))
|
||||
return [x[0] for x in self.cursor.fetchall()]
|
||||
|
||||
def get_sensors_in_room_id(self, roomid) -> list[tuple[int, int]]:
|
||||
self.cursor.execute("SELECT Sensors.`ID`, Sensors.`Type` from Sensors LEFT JOIN rooms ON Sensors.`roomID` = rooms.ID WHERE rooms.`ID` = ?;",(roomid,))
|
||||
return [(x[0], x[1]) for x in self.cursor.fetchall()]
|
||||
|
||||
def get_sensorsinfo_by_sensorid(self, sensorid) -> SensorInfo | None:
|
||||
self.cursor.execute("SELECT readings.`Timestamp`, readings.`reading` FROM readings WHERE readings.`sensorID` = ? ORDER BY readings.`Timestamp` DESC FETCH FIRST 1 ROWS ONLY;",(sensorid,))
|
||||
fetch = self.cursor.fetchone()
|
||||
if fetch is None:
|
||||
return None
|
||||
else:
|
||||
return SensorInfo(0,sensorid, fetch[0], fetch[1])
|
||||
|
||||
|
||||
def get_sensor_data(self, sensor_ID: int) -> Generator[tuple[datetime.datetime, float]]:
|
||||
self.cursor.execute("SELECT Timestamp, reading FROM Readings WHERE `sensorID` = ? ORDER BY `Timestamp` DESC;",(sensor_ID,))
|
||||
@@ -65,7 +84,7 @@ class DatabaseConnect:
|
||||
yield row
|
||||
|
||||
def get_sensor_type(self, sensor_ID):
|
||||
self.cursor.execute("SELECT types.`type_desc` from types LEFT JOIN devices ON types.`ID` = devices.`type` WHERE devices.`ID` = ?;",(sensor_ID,))
|
||||
self.cursor.execute("SELECT types.`type_desc` from types LEFT JOIN Sensors ON types.`ID` = Sensors.`type` WHERE Sensors.`ID` = ?;",(sensor_ID,))
|
||||
return self.cursor.fetchone()[0]
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
||||
Reference in New Issue
Block a user