Autor Thema: Vorschlag: PurgeFn()  (Gelesen 982 mal)

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 18888
Vorschlag: PurgeFn()
« am: 23 November 2022, 18:24:38 »
Immer mal wieder kommt die Diskussion auf, warum z.B. FileLog beim Löschen eines device nicht auch die zugehörigen Logdateien löscht.
Aktuell hier:

https://forum.fhem.de/index.php/topic,130490.0.html

Im Modul zu FileLog ist ja sogar eine DeleteFn() vorhanden, aber Rudi war es zu riskant, diese scharf zu schalten

https://forum.fhem.de/index.php/topic,41896.msg341454.html#msg341454

Das kann man prinzipiell auch gut nachvollziehen, außerdem würde die Funktion nur das aktuelle Logfile löschen und nicht die vorher vom device schon angelegten, beispielsweise monatliche Logs.

Das bringt mich auf die Idee, ob man nicht eine PurgeFn() bauen könnte, die letztlich die DeleteFn() einfach mit einem Parameter aufruft, der dafür sorgt, dass auch die zu einem device gehörenden Dateien gelöscht werden. Dazu gäbe es dann CommandPurge(), um das bei vollem Bewusstsein als Anwender einzusetzen. Im Frontend halte ich das Anbieten dieser Funktionalität nicht wirklich empfehlenswert.


Das zugrundeliegende Ansinnen eines solchen purges betrifft ja nicht nur FileLog, sondern kann auch bei anderen TYPE sinnvoll sein:

  • RSS und InfoPanel könnten das zugehörige Layout löschen
  • SVG könnte die benutzte gplot Datei löschen
  • ...


Die Entscheidung darüber, was bei einem purge gelöscht wird, trifft letztendlich der jeweilige Modulentwickler. Er könnte sogar unterschiedliche Funktionen für DeleteFn() und PurgeFn() implementieren, falls dies Sinn ergibt.

Persönlich käme ich auch weiterhin gut ohne PurgeFn() klar, aber für den einen oder anderen Anwender, der weiß, was er tut (davon gibt es ab und an tatsächlich noch welche) könnte das durchaus hilfreich sein.

Die Diskussion ist eröffnet...  :)
-----------------------
Mach es möglichst simpel und mach es richtig,
dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!
Zustimmung Zustimmung x 1 Liste anzeigen

Offline drhirn

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2004
Antw:Vorschlag: PurgeFn()
« Antwort #1 am: 23 November 2022, 18:34:08 »
Super Idee! Meine Stimme hast du.

Offline Thorsten Pferdekaemper

  • Developer
  • Hero Member
  • ****
  • Beiträge: 6554
  • Finger weg von der fhem.cfg
Antw:Vorschlag: PurgeFn()
« Antwort #2 am: 26 November 2022, 15:59:38 »
Hi,
ich bin hier zwar auch schon ein paar Jahre dabei, aber ich habe bisher noch gar nicht so darauf geachtet, was da nach dem Löschen tatsächlich stehen bleibt. (Vielleicht ist das halt kein so großes Problem, wenn man am FHEM-Server eine 250GB SSD dranhängen hat.)
Ich dachte immer, ich muss bei FUIP mal dafür sorgen, dass die eigene Konfig-Datei weggelöscht wird.
Anders gesagt: Ich bin eigentlich davon ausgegangen, dass jedes Device beim Löschen tatsächlich alles abräumen sollte. ...zumindest insoweit ein Device erkennen kann, was denn nun "seine" Dateien sind. Bei einem FileLog z.B. kann man ja die Dateinamen zwischendurch ändern. Weiß das Ding denn dann noch, welche Dateien dazugehören?
Gruß,
   Thorsten

FUIP

Offline xenos1984

  • Developer
  • Full Member
  • ****
  • Beiträge: 480
Antw:Vorschlag: PurgeFn()
« Antwort #3 am: 26 November 2022, 18:21:14 »
  • RSS und InfoPanel könnten das zugehörige Layout löschen
  • SVG könnte die benutzte gplot Datei löschen
  • ...

Da wäre ich vorsichtiger. Das Layout bzw. die gplot Datei könnten ja auch noch von anderen RSS / InfoPanel / SVG Devices genutzt werden als dem, dessen PurgeFn gerade aufgerufen wird.

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 18888
Antw:Vorschlag: PurgeFn()
« Antwort #4 am: 26 November 2022, 22:14:41 »
Da wäre ich vorsichtiger. Das Layout bzw. die gplot Datei könnten ja auch noch von anderen RSS / InfoPanel / SVG Devices genutzt werden

Da muss halt der entsprechende Modulentwickler eine entsprechende Prüfung in "seine" PurgeFn() einbauen.
Das ist ja kein Hexenwerk, die Mechanismen für solche Suchen sind seit Jahren in FHEM vorhanden...

my @a=defInfo("GPLOTFILE=SVG_Dieselpreis","NAME");
liefert ein Array zurück, in dem alle devices stehen, die das GPLOTFILE "SVG_Dieselpreis" benutzen.
Wenn da mehr als ein Eintrag (das aktuelle device) drinsteht, darf das gplot nicht gelöscht werden.

Aber spätestens beim Löschen des letzten devices, das diese Datei benutzt, wird dann auch das gplot gelöscht.

-----------------------
Mach es möglichst simpel und mach es richtig,
dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!