feat(db) update db when pakfile make changes

This commit is contained in:
L0m1g 2025-03-03 11:49:17 +01:00
parent 67c0c00fc3
commit 2060ad088d

View file

@ -10,6 +10,8 @@
import os import os
import toml import toml
from .db import get_db_connection
class Pakfile: class Pakfile:
""" """
Représente un fichier de description de paquet (pakfile.toml) 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: with open(pakfile_path, "w", encoding="utf-8") as f:
toml.dump(data, f) toml.dump(data, f)
self.update_db()
def set(self, key: str, value): def set(self, key: str, value):
""" """
Définit une valeur dans le pakfile et sauvegarde immédiatement Définit une valeur dans le pakfile et sauvegarde immédiatement
""" """
self.data[key] = value self.data[key] = value
self._save() self._save()
self.update_db()
def _save(self): def _save(self):
""" """
@ -116,7 +121,7 @@ class Pakfile:
case _: case _:
return None return None
def _get(self, key: str) -> str | None: def _get(self, key: str) -> str | None :
""" """
Getter générique pour les chaines Getter générique pour les chaines
""" """
@ -157,6 +162,8 @@ class Pakfile:
print(f"Erreur lors de la suppression de '{package}': {e}") print(f"Erreur lors de la suppression de '{package}': {e}")
return False return False
self.update_db()
def check(self): def check(self):
""" """
Vérifie la validité de la structure du pakfile. Vérifie la validité de la structure du pakfile.
@ -180,3 +187,38 @@ class Pakfile:
return False return False
return True 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()