feat(db) update db when pakfile make changes
This commit is contained in:
parent
67c0c00fc3
commit
2060ad088d
1 changed files with 43 additions and 1 deletions
|
|
@ -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()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue