From 5e53c1a61b7bfa78dab74fab0d6d8d1b4202217c Mon Sep 17 00:00:00 2001 From: WorldTeacher <41587052+WorldTeacher@users.noreply.github.com> Date: Thu, 27 Jun 2024 13:17:41 +0200 Subject: [PATCH] rework elsa media database function --- src/backend/database.py | 41 +++++++++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 16 deletions(-) diff --git a/src/backend/database.py b/src/backend/database.py index ba701a8..4af46c8 100644 --- a/src/backend/database.py +++ b/src/backend/database.py @@ -147,7 +147,11 @@ class Database: """ conn = self.connect() cursor = conn.cursor() - self.logger.log_info(f"Querying database with query {query}, args: {args}") + log_message = f"Querying database with query {query}, args: {args}" + if "INSERT" in query: + log_message = f"Querying database with query {query}" + + self.logger.log_info(log_message) cursor.execute(query, args) rv = cursor.fetchall() @@ -1324,21 +1328,17 @@ class Database: Args: data (dict): a dictionary containing the data of the media, - Structured: {"chapter":str, "title":str, "signature":str, "pages":str} + elsa_id (int): the id of the ELSA apparat """ - self.query_db( - "INSERT INTO elsa_media (chapter, title, signature, pages,book_author,text_author, elsa_id) VALUES (?,?,?,?,?,?,?)", - ( - data["chapter"], - data["title"], - data["signature"], - data["pages"], - data["book_author"], - data["text_author"], - elsa_id, - ), - ) - + headers = [] + entries = [] + for key, value in data.items(): + headers.append(key) + entries.append(value) + headers.append("elsa_id") + entries.append(elsa_id) + query = f"INSERT INTO elsa_media ({', '.join(headers)}) VALUES ({', '.join(['?' for i in range(len(headers))])})" + self.query_db(query, entries) def getElsaMedia(self, elsa_id: int): """get all the media of an ELSA apparat @@ -1348,7 +1348,16 @@ class Database: Returns: list[tuple]: a list of tuples containing the media """ - return self.query_db("SELECT * FROM elsa_media WHERE elsa_id=?", (elsa_id,)) + media = self.query_db("SELECT * FROM elsa_media WHERE elsa_id=?", (elsa_id,)) + # convert the media to a list of dictionaries + ret = [] + table_fields = self.query_db("PRAGMA table_info(elsa_media)") + for m in media: + tmp = {} + for i in range(len(m)): + tmp[table_fields[i][1]] = m[i] + ret.append(tmp) + return ret def insertElsaFile(self, file: list[dict], elsa_id: int): """Instert a list of files into the ELSA system