From 2060ad088d97188d3e0a8ba96963387a459cdda8 Mon Sep 17 00:00:00 2001 From: L0m1g Date: Mon, 3 Mar 2025 11:49:17 +0100 Subject: [PATCH] feat(db) update db when pakfile make changes --- src/erminig/common/pakfile.py | 44 ++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/src/erminig/common/pakfile.py b/src/erminig/common/pakfile.py index 96881ad..c453d27 100644 --- a/src/erminig/common/pakfile.py +++ b/src/erminig/common/pakfile.py @@ -10,6 +10,8 @@ import os import toml +from .db import get_db_connection + class Pakfile: """ Représente un fichier de description de paquet (pakfile.toml) @@ -82,12 +84,15 @@ class Pakfile: with open(pakfile_path, "w", encoding="utf-8") as f: toml.dump(data, f) + self.update_db() + def set(self, key: str, value): """ Définit une valeur dans le pakfile et sauvegarde immédiatement """ self.data[key] = value self._save() + self.update_db() def _save(self): """ @@ -116,7 +121,7 @@ class Pakfile: case _: return None - def _get(self, key: str) -> str | None: + def _get(self, key: str) -> str | None : """ Getter générique pour les chaines """ @@ -157,6 +162,8 @@ class Pakfile: print(f"Erreur lors de la suppression de '{package}': {e}") return False + self.update_db() + def check(self): """ Vérifie la validité de la structure du pakfile. @@ -180,3 +187,38 @@ class Pakfile: return False return True + + def update_db(self): + """ + Met à jour la base SQLite avec les informations actuelles du pakfile. + Si le paquet existe, il est mis à jour. Sinon, il est inséré. + """ + conn = get_db_connection() + cursor = conn.cursor() + + # Récupère les données à jour + name = self.get("name") + version = self.get("ver") + revision = self.get("rev") + sources = self.get("src") + deps = self.get("deps") + bdeps = self.get("bdeps") + + # Conversion des listes en string (on se complique pas la vie) + src_str = ",".join(sources) if sources else "" + deps_str = ",".join(deps) if deps else "" + bdeps_str = ",".join(bdeps) if bdeps else "" + + cursor.execute(""" + INSERT INTO paquets (name, version, revision, sources, deps, build_deps) + VALUES (?, ?, ?, ?, ?, ?) + ON CONFLICT(name) DO UPDATE SET + version = excluded.version, + revision = excluded.revision, + sources = excluded.sources, + deps = excluded.deps, + build_deps = excluded.build_deps + """, (name, version, revision, src_str, deps_str, bdeps_str)) + + conn.commit() + conn.close()