Repository navigation
feat: ajout d’opérations de paramétrage par lots - #12
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Ce PR propose d'ajouter des API batch explicites pour stocker et oublier plusieurs paramètres en un seul appel :
Parametres::getMany()Parametres::setMany()Parametres::forgetMany()L'objectif est de prendre en charge les applications et les modules qui disposent déjà d'un groupe de paramètres associés à mettre à jour, sans obliger les appelants à émettre des appels
set()ouforget()distincts pour chaque élément.Cela peut être utile pour les cas courants tels que l'enregistrement de formulaires de configuration, l'application de valeurs par défaut de configuration, la mise à jour des préférences du module, l'importation de paramètres ou la réinitialisation d'un groupe d'options associées. Cela donne également aux gestionnaires un point d'extension clair pour optimiser les écritures groupées tout en gardant compatible le comportement des gestionnaires existants.
Pourquoi
La documentation des limitations indique que les écritures immédiates peuvent entraîner plusieurs requêtes de base de données ou écritures de fichiers lorsque plusieurs paramètres sont modifiés dans une seule requête.
Avec ce PR, les appelants peuvent regrouper directement ces opérations :
Les écritures différées optimisent plusieurs appels / tout au long du cycle de vie de la requête, tandis que ces méthodes fournissent une API explicite lorsque l'appelant dispose déjà d'un lot de modifications associées.set()forget()
Comportement
Les nouvelles API suivent le même comportement que les appels répétés à
set()etforget():file.propertyIls respectent également le cadre
defer_writesactuel :defer_writesest désactivé, les gestionnaires pris en charge persistent immédiatement le lotdefer_writesest activée, les appels par lots sont mis en file d'attente et conservés pendant post_systemAssistance au gestionnaire
BaseHandlerimplemente par défautsetMany()etforgetMany()qui appellent les méthodesset()etforget()existantes pour chaque élément. Les gestionnaires personnalisés existants continuent de travailler sur cette solution de secours.Les gestionnaires peuvent toujours remplacer les méthodes par lots lorsqu'elles peuvent persister plus efficacement :
DatabaseHandlerregroupe les insertions par lots, les mises à jour et les suppressionsFileHandlerregroupe les modifications par fichier de contexteTests
Ce PR ajoute des tests pour l'API publique, des opérations par lots sensibles au contexte, la gestion des clés en double, la persistance par lots du gestionnaire de base de données/fichiers et les écritures par lots différées.
Liste de contrôle: