From 3c4b4b8f9d2f6cfd1ed6d13b880fd0a832888ca6 Mon Sep 17 00:00:00 2001 From: anima Date: Sun, 9 May 2021 20:56:28 +0200 Subject: [PATCH] add DB handling and first setup --- timeTrack.py | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 72 insertions(+), 2 deletions(-) diff --git a/timeTrack.py b/timeTrack.py index 16f9cce..6628837 100644 --- a/timeTrack.py +++ b/timeTrack.py @@ -3,7 +3,7 @@ # # timeTrack.py # by 4nima -# v.0.0 +# v.0.1 # ######################### # simple time tracking with database @@ -27,6 +27,7 @@ class TimeTrack: datefmt='%Y-%m-%d %H:%M:%S' ) self.load_config() + self.db_setup() ## Läd oder erstellt das config file def load_config(self): @@ -56,8 +57,77 @@ class TimeTrack: json.dump(config, outfile) logging.info('config file successfully created') - def db_connect(self): + def db_setup(self): + sql = [] + sql.append(""" + CREATE TABLE IF NOT EXISTS time_entries ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + starttime DATETIME NOT NULL, + endtime DATETIME NOT NULL, + user_id INTEGER NOT NULL, + activity TEXT, + catrgory_id INTEGER, + client_id INTEGER, + lock BOOLEAN + ) + """) + + sql.append(""" + CREATE TABLE IF NOT EXISTS active_events ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + starttime DATETIME NOT NULL, + user_id INT NOT NULL + ) + """) + + sql.append(""" + CREATE TABLE IF NOT EXISTS users ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL, + worktime INT, + worktime_span INT + ) + """) + + sql.append(""" + CREATE TABLE IF NOT EXISTS clients ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL + ) + """) + + sql.append(""" + CREATE TABLE IF NOT EXISTS categories ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL + ) + """) + self.db_connect(sql) + + def db_connect(self, SQL, DATA=''): + if os.path.isfile(self.DATABASE): + logging.info('DB gefunden') + else: + logging.info('Keine DB gefunden, neue wird angelegt') + + connect = sqlite3.connect(self.DATABASE) + cursor = connect.cursor() + ##> vorgang optimieren... + for sql in SQL: + try: + if isinstance(sql, list): + cursor.executemany(sql, DATA) + else: + cursor.execute(sql) + except: + logging.error('Fehler beim schreiben in DB') + logging.debug(sql) + else: + logging.info('Erfolgreich in DB geschrieben') + logging.debug(sql) + connect.commit() pass + connect.close() def set_user(self): pass