diff options
author | Louie S <louie@example.com> | 2023-09-16 09:36:14 -0400 |
---|---|---|
committer | Louie S <louie@example.com> | 2023-09-16 09:36:14 -0400 |
commit | b4025edf0ac5400d4dd8c418a9a156c44e9c67f8 (patch) | |
tree | bc583aca1f81689790acfbfbabc43dd2ffd29499 /db_sqlite.py | |
parent | e1c06206b38d5c6fdc603073c239c95e05d978d2 (diff) |
Saving and loading working for groups
Diffstat (limited to 'db_sqlite.py')
-rw-r--r-- | db_sqlite.py | 71 |
1 files changed, 68 insertions, 3 deletions
diff --git a/db_sqlite.py b/db_sqlite.py index 9d47da8..99f412b 100644 --- a/db_sqlite.py +++ b/db_sqlite.py @@ -1,13 +1,24 @@ +import os import sys from PyQt5.QtSql import QSqlDatabase, QSqlQuery Globals = __import__("globals") +from group import Group -def CreateTables(db_path): +def initDB(): """ - Create database at a specified directory + Check for existing database. If it doesn't exist, build it + """ + if not os.path.exists(Globals.db_path): + createTables() + + loadFromTables() + +def createTables(): + """ + Create database at a specified Globals.db_path """ database = QSqlDatabase.addDatabase("QSQLITE") # SQlite version 3 - database.setDatabaseName(db_path) + database.setDatabaseName(Globals.db_path) if not database.open(): print("Unable to open data source file.") @@ -42,3 +53,57 @@ def CreateTables(db_path): """) database.close() + +def loadFromTables(): + """ + Load groups and entries into global variables + """ + database = QSqlDatabase.addDatabase("QSQLITE") # SQlite version 3 + database.setDatabaseName(Globals.db_path) + + if not database.open(): + print("Unable to open data source file.") + sys.exit(1) # Error out. TODO consider throwing a dialog instead + + query = QSqlQuery() + + query.exec_("SELECT * FROM groups") + while query.next(): + record = query.record() + Globals.groups.append( + Group( + record.field("id").value(), + record.field("name").value(), + record.field("column").value(), + record.field("link").value())) + + database.close() + +def insertGroup(new_group): + """ + Save groups and entries to the database at Globals.db_path + """ + output = -1 + + database = QSqlDatabase.addDatabase("QSQLITE") # SQlite version 3 + database.setDatabaseName(Globals.db_path) + + if not database.open(): + print("Unable to open data source file.") + sys.exit(1) # Error out. TODO consider throwing a dialog instead + + query = QSqlQuery() + + query.prepare(""" + INSERT INTO groups (name, column, link) VALUES (?, ?, ?) + """) + query.addBindValue(new_group.name) + query.addBindValue(new_group.column) + query.addBindValue(new_group.link) + query.exec_() + + output = query.lastInsertId() + + database.close() + + return output |