meta données pour cette page
  •  

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
certif:procedure:usageclasseinterface [2026/05/06 11:41] – [Les fonctions des classes "Serveurs"] nicolascertif:procedure:usageclasseinterface [2026/05/06 12:17] (Version actuelle) – [Les fonctions « normées » à usage interne de la classe ("protected")] nicolas
Ligne 30: Ligne 30:
 |**classe: TSQLRecordConstructor<T>**|Indique la table qui doit être chargée au travers de la classe (exemple : TSQLPersonne, TSQLHistoriqueDon...)| |**classe: TSQLRecordConstructor<T>**|Indique la table qui doit être chargée au travers de la classe (exemple : TSQLPersonne, TSQLHistoriqueDon...)|
 |**filtre: Partial<T>|null = null**|Paramètre optionnel\\ Si il est indiquer le filtrage demandé à la BDD pends en compte ce filtrage\\ Si il est omis la fonction **calculFiltre_chargeFromBDD** de la classe (indiqué si dessus) et appelée pour créer si pertinent un filtre sur secteur, exercice, utilisateur)| |**filtre: Partial<T>|null = null**|Paramètre optionnel\\ Si il est indiquer le filtrage demandé à la BDD pends en compte ce filtrage\\ Si il est omis la fonction **calculFiltre_chargeFromBDD** de la classe (indiqué si dessus) et appelée pour créer si pertinent un filtre sur secteur, exercice, utilisateur)|
-\\+
 ^Sortie^Fonction^ ^Sortie^Fonction^
-|Promise<T[]>|Un tableau contenant des éléments de la classe indiqué.\\ Les éléments du tableau doivent être typé/traduit correctement au travers de la fonction de la classe **corrigeDataFromBDD** qui est appeler pour chaque élement viaa la procedure **mapArrayTo**.\\ NB: Celle-ci prends aussi en charge les problématique de case| +|**Promise<T[]>**|Un tableau contenant des éléments de la classe indiqué.\\ Les éléments du tableau doivent être typé/traduit correctement au travers de la fonction de la classe **corrigeDataFromBDD** qui est appeler pour chaque élément via la procédure **mapArrayTo**.\\ NB: Celle-ci prends aussi en charge les problématiques de case\\ Si une erreur est détectée, l'utilisateur est informé et un tableau vide est rendu| 
-==== Les fonctions « normées » correspondant au CRUD ==== + 
-^ Opération ^ Fonction ^ Description ^ +== Exemple d'appel : == 
-| READ | ''chargeFromBDD$'' | ''static async chargeFromBDD$(filtre:TSQLPersonne=new TSQLPersonne(), base?:TBaseLoGeAs) : Promise<TSQLPersonne[]>'' \\ C'est la procédure qui doit se charger de toutes les transformations nécessaires après la réception (appel de la fonction générique ''mapArrayTo'' qui appelle ''corrigeDataFromBDD''). \\ ''static'' permet d'appeler la fonction sans instance de la classe. \\ Exemple : ''this.personnes = await TSQLPersonne.chargeFromBDD$();'' \\ Le filtre permet de demander à la BDD un sous-ensemble de la table\\ Exemple ''const filtre new TSQLPersonne({Codepostal: "31800"}) ; this.personnes = await TSQLPersonne.chargeFromBDD$(filtre);'' \\ → on ne devrait avoir que les personnes ayant un codepostal = 31800 (A TESTER) \\ ''base'' peut être laissé vide si on utilise la base chargée dans DG, sinon il faut bien sûr l'indiquer (possibilité de charger une deuxième base) +<code> 
-CREATE / UPDATE | ''sauveToBDD$'' | ''async sauveToBDD$(base?:TbaseLoGeAs)'' \\ Permet de créer (ID=0ou de mettre à jour l'objet instancié dans la base de données. Aucune préparation ne doit être faite avant, c'est la procédure qui s'en charge. \\ ''base'' peut être laissé vide si on utilise la base chargée dans DG, sinon il faut bien sûr l'indiquer (possibilité de charger une deuxième base) | +*********** CLASSIQUE *********** 
-DELETE ''effaceToBDD$'' ''async effaceToBDD$(base?:TbaseLoGeAs)'' |+  detailDon!:TSQLHistoriqueDon[]; 
 +  listeCerfa!:TSQLHistoriqueDonSynthese[]; 
 +  [...] 
 +  this.detailDon await this.DG.BaseCourante.chargeFromBDD$(TSQLHistoriqueDon,filtre); 
 +  this.listeCerfa await this.DG.BaseCourante.chargeFromBDD$(TSQLHistoriqueDonSynthese,{personne:this.personne.ID}); 
 +   
 +*********** SIGNAL*********** 
 +  public personnes signal<TSQLPersonne[]>([]); 
 +  [...] 
 +  const [titres, liens, data] = await Promise.all([ 
 +     await this.DG.BaseCourante.GetFichierTexte$('/PersonneTitre.Txt'), 
 +     await this.DG.BaseCourante.GetFichierTexte$('/PersonneLienFamille.Txt'), 
 +     await this.DG.BaseCourante.chargeFromBDD$(TSQLPersonne
 +  ]); 
 +  this.listeTitres titres.lignes; 
 +  this.listeLiensFamille = liens.lignes; 
 +  this.personnes.set(data)
 +  </code> 
 +   
 +=== Enregistrement de données (sauveToBDD$) === 
 +<code>  async sauveToBDD$<T extends TSQLRecord>(record:Tsource"FICHIER" | "COMPTA" | "SANSOBJET" = "SANSOBJET", forceCreate:boolean=false): Promise<T | null></code> 
 +^Entrée^Fonction^ 
 +|**record:T**|Il s'agit de l'objet à sauvegarder. Il doit bien sur être d'un type connu| 
 +|**source: "FICHIER" | "COMPTA" | "SANSOBJET" = "SANSOBJET"**|Paramètre optionnel\\ Utilisé pour la mise à jour des dates de fin de consentement (TSQLPersonne, TSQLFamille)| 
 +|**forceCreate:boolean=false**|Par défaut si ID est différent de zero, la classe considére qu'il s'agit de la modification d'un enregistrement en base. Si ce n'est pas le cas, par exemple lors de la création d'enregistrement dont on veut maitriser l'ID (TSQLExercice par exemple), il convient de basculer à vrai ce paramétre) 
 + 
 +^Sortie^Fonction^ 
 +|**Promise<T[]>**|Rend l'élement tel qu'enregistré dans la BDD.\\ L'élément doit être typé/traduit correctement au travers de la fonction de la classe **corrigeDataFromBDD** qui est appeler dessus.\\ NBCelle-ci prends aussi en charge les problématiques de case\\ Si une erreur est détectée, l'utilisateur est informé et null est rendu| 
 + 
 +== Exemple d'appel : == 
 +<code> 
 +const res =await this.DG.BaseCourante.sauveToBDD$(personne,"FICHIER") 
 +</code> 
 + 
 +=== Fonction d'effacement (effaceFromBDD$) === 
 +<code>async effaceFromBDD$<T extends TSQLRecord>(record:T): Promise<boolean></code> 
 +^Entrée^Fonction^ 
 +|**record:T**|Il s'agit de l'objet à effacerIl doit bien sur être d'un type connu| 
 + 
 +^Sortie^Fonction^ 
 +|**Promise<boolean>**|Indique si Ok| 
 + 
 +== Exemple d'appel : =
 +<code> 
 +await this.DG.BaseCourante.effaceFromBDD$(famille); 
 +</code> 
 +===== Les fonctions « normées » à définira dans toutes les classes TSQL... ===== 
 +^ Fonction ^ Description ^ 
 +|<code>static override readonly sqlTableNamestring = "personne";</code>|En haut de la classe, doit indiqué (en minuscule) le nom de la table correspondante dans la BDD| 
 +|<code> 
 +constructor(init?: Partial<TSQLPersonne>) { 
 +  super(init); 
 +  if (init) {Object.assign(this, init)} 
 +}</code>
 +|<code> 
 +override corrigeDataFromBDD(){ 
 +  super.corrigeDataFromBDD(); 
 +  [...]\\ code spécifique à la classe 
 +}</code>| Cette fonction doit s'assurer que la donnée qu'elle manipule est bien conforme à la classe. Par exemple une date reçu en texte doit être transformer en Date ...\\  **Elle ne doit manipuler que les objets de sa classe, celle des classes mère doivent être faite par la fonction éponyme de la classe mère**
 +|<code> 
 +override async prepareDataToBDD 
 +        source"FICHIER" | "COMPTA" | "SANSOBJET" = "SANSOBJET", 
 +        DureeConsentement: number,  
 +        ReValidationDateConservation_Compta:boolean,   
 +        ReValidationDateConservation_Modif:boolean)
 +  super.prepareDataToBDD(source,DureeConsentement, 
 +    ReValidationDateConservation_Compta, 
 +    ReValidationDateConservation_Modif)
 +  [...]\\ code spécifique à la classe 
 +}</code>| Cette fonction doit s'assurer que la donnée qu'elle manipule est conforme à ce que le back s'attends à recevoir. Par exemple un sous objet doit être transformer en string...\\  Elle peut aussi gérer des champs "calculé" par exemple la date de fin de consentent. **On préfèrera toujours le faire ici afin d'éviter divergence et redondance)** **Elle ne doit manipuler que les objets de sa classe, celle des classes mère doivent être faite par la fonction éponyme de la classe mère**
 +|<code>override toGrid():IFamilleGrid</code>|Met à plat la structure parente (champ personnalisé, sous structure...) afin de faciliter leur affichage dans les grilles\\ Peut permettre au passage à ajouter des champs calculé\\ **Attention :** la structure résultante est une Interface elle ne peut/doit pas servir pour interfacer avec le back ou autre| 
 +|<code>static toGrids(liste:TSQLFamille[]):IFamilleGrid[]</code>|Boucle sur les éléments du tableau pour appelé togrid| 
 + 
  
-==== Les fonctions « normées » à usage interne de la classe ("protected") ==== 
-^Nom de la fonction^Usage^ 
-|protected override corrigeDataFromBDD()|Appelé sur chaque enregistrement lors du chargement depuis le back, via la procédure  MapUtils.mapArrayTo. Elle permet de corriger, mapper.. les données sur le modèle de la classe. Elle permet en outre de s'affranchir des problèmes de case entre back et front| 
-|protected override async prepareDataToBDD()|Appelé par la fonction sauveToBDD$ elle permet de mettre les format angular au format attendu par le back| 
  
-==== Les fonctions « normées » à usage public ==== 
-^Nom de la fonction^Usage^ 
-|override toGrid():IFamilleGrid|Met à plat la structure parente (champ personnalisé, sous structure...) afin de faciliter leur affichage dans les grilles\\ Peut permettre au passage à ajouter des champs calculé\\ **Attention :** la structure résultante est une Interface elle ne peut/doit pas servir pour interfacer avec le back ou autre| 
-|static toGrids(liste:TSQLFamille[]):IFamilleGrid[]|Boucle sur les éléments du tableau pour appelé togrid| 
  
 ==== Les fonctions spécifique à la classe ==== ==== Les fonctions spécifique à la classe ====
 Dépends de chaque classe voir la classe Dépends de chaque classe voir la classe