From 1080cf8bc2dcee8adcf382b8515cb89fb02c3280 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Wed, 23 Sep 2020 18:28:56 +0200
Subject: [PATCH] save sensor update time in database

---
 src/logic/Database.py | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/src/logic/Database.py b/src/logic/Database.py
index 91ba76e..599c347 100644
--- a/src/logic/Database.py
+++ b/src/logic/Database.py
@@ -1,4 +1,5 @@
 import sqlite3
+from datetime import datetime
 from typing import Tuple
 
 from TheCodeLabs_BaseUtils import DefaultLogger
@@ -12,6 +13,8 @@ class Database:
     TABLE_DEVICE = 'device'
     TABLE_SENSOR = 'sensor'
 
+    DATE_FORMAT = '%Y-%m-%d %H:%M:%S'
+
     def __init__(self, databasePath):
         self._databasePath = databasePath
         self.__create_database()
@@ -27,11 +30,15 @@ class Database:
                          device_id INTEGER,
                          name TEXT NOT NULL, 
                          type TEXT NOT NULL, 
-                         value TEXT NOT NULL)''')
+                         value TEXT NOT NULL,
+                         timestamp TEXT NOT NULL)''')
 
     def __get_connection(self):
         return sqlite3.connect(self._databasePath)
 
+    def __get_current_datetime(self):
+        return datetime.strftime(datetime.now(), self.DATE_FORMAT)
+
     def get_all_devices(self):
         with self.__get_connection() as connection:
             cursor = connection.execute(f'SELECT * FROM {self.TABLE_DEVICE} ORDER BY name')
@@ -62,12 +69,14 @@ class Database:
         with self.__get_connection() as connection:
             LOGGER.debug(f'Inserting new sensor "{name}" for device "{device[1]}" '
                          f'(type: "{sensorType}", value: "{value}")')
-            connection.execute(f'INSERT INTO {self.TABLE_SENSOR}(name, device_id, type, value) VALUES(?, ?, ?, ?)',
-                               (name, device[0], sensorType, value))
+            connection.execute(f'INSERT INTO {self.TABLE_SENSOR}(name, device_id, type, value, timestamp ) '
+                               f'VALUES(?, ?, ?, ?, ?)',
+                               (name, device[0], sensorType, value, self.__get_current_datetime()))
 
     def update_sensor(self, device: Tuple[int, str], name: str, sensorType: str, value: str):
         LOGGER.debug(f'Updating sensor "{name}" for device "{device[1]}" '
                      f'(type: "{sensorType}", value: "{value}")')
         with self.__get_connection() as connection:
-            connection.execute(f'UPDATE {self.TABLE_SENSOR} SET value = ? WHERE device_id = ? AND name = ?',
-                               (value, device[0], name))
+            connection.execute(f'UPDATE {self.TABLE_SENSOR} SET value = ?, timestamp = ? '
+                               f'WHERE device_id = ? AND name = ?',
+                               (value, self.__get_current_datetime(), device[0], name, ))
-- 
GitLab