meta données pour cette page
  •  

Ceci est une ancienne révision du document !


Règles sur les classes

Version 04-2023

Nommage des classes de donnée (modele)

Classe correspondant à

Correspondance Règle de nommage
une table des BDDs Dans ce cas le nom doit être celui de la classe pascal. Soit TSQL + nom de la table dans la base. Exemples : TSQLPersonne, TSQLFamille … Pour facilité le fichier s'appelle record + nom de la classe (a l'image du back). Il est stocké dans ngx-logeasweb-ui\src\lib\models\BDD\Nom bdd\
à une classe interne au front On préfixe le nom de la lettre T suivi d'un nom parlant. NB : on ne crée pas une classe copie d'une classe TSQL, si on a besoin d'ajouter des éléments on utilise l'héritage (extends)
Exemple : TPersonnePlus extends TSQLPersonne { nomDeJeuneFille : string …}
ou on ajoute une propriété à la classe de base calculée
Exemple : getNomComplet(){return `${this.titre} ${this.prenom} ${this.nom}`}
Si la classe est à usage unique du composant on pourra utiliser une Interface
classes dérivées pour affichage En fait il ne s'agit pas de classe mais d'interface (pas de fonction de traitement). Le nommage se fait sur le nom de la table plus Grid
Exemple : IPersonneGrid corresponds au type TSQLPersonne mis à plat pour usage dans la grille

Les classes issues des BDDs (TSQL…)

Quelques règles génériques

  • On ne charge les données depuis le back directement depuis le code mais uniquement au travers des fonctions de la classe afin d'avoir des comportements homogènes
  • Une classe NE DOIT PAS APPELER une autre classe de typage, si c'est le cas c'est le service qui doit le faire.
    Exemple : pour effacer une famille il faut vérifier les personnes donc on devrait importer TSQPersonne dans recordFamille et réciproquement — on aurait donc TSQLFamille qui appelle une méthode de TSQLPersonne et réciproquement ⇒ à mettre dans un service.

Les fonctions « normées » correspondant au CRUD

Opération Fonction Description
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)
CREATE / UPDATE sauveToBDD$ async sauveToBDD$(base?:TbaseLoGeAs)
Permet de créer (ID=0) ou 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)
DELETE effaceToBDD$ async effaceToBDD$(ID:number, base?:TbaseLoGeAs)

Nommage des classes de donnée (modèle)

Classe correspondant à une table des BDDs

Élément Règle Exemple
Préfixe TSQL + nom de la table TSQLPersonne
Type Classe représentant une table BDD TSQLFamille
Nom du fichier record + nom de la classe recordTSQLPersonne
Emplacement ngx-logeasweb-ui\src\lib\models\BDD\NomBDD\

Classe interne au front

Règle Description Exemple
Préfixe Lettre T suivie d’un nom parlant TPersonnePlus
Extension Utiliser l’héritage plutôt qu’une copie extends TSQLPersonne
Propriété calculée Ajouter une méthode de calcul getNomComplet()
Usage unique Utiliser une interface Interface locale

Exemple :

class TPersonnePlus extends TSQLPersonne {
  nomDeJeuneFille: string;
}

Exemple propriété calculée :

getNomComplet() {
  return `${this.titre} ${this.prenom} ${this.nom}`;
}

Classes dérivées pour affichage

Type Règle Exemple
Nature Interface uniquement (pas de logique)
Nommage Nom de la table + Grid IPersonneGrid
Utilisation Type mis à plat pour une grille DataGrid

Les classes issues des BDDs (TSQL…)

Quelques règles génériques

Règle Description
Chargement Toujours via les fonctions de la classe Comportement homogène
Couplage Une classe ne doit pas appeler une autre classe métier Utiliser un service
Logique transverse Centralisée dans un service Vérifications croisées

Exemple interdit :

TSQLFamille appelle TSQLPersonne
TSQLPersonne appelle TSQLFamille

⇒ À gérer dans un service

Fonctions normées correspondant au CRUD

READ

Nom de la fonction :

chargeFromBDD$

Signature :

static async chargeFromBDD$(
  filtre: TSQLPersonne = new TSQLPersonne(),
  base?: TBaseLoGeAs
): Promise<TSQLPersonne[]>
Paramètre Type Description
filtre Objet modèle Permet de sélectionner un sous-ensemble
base TBaseLoGeAs Base alternative optionnelle

Exemple :

this.personnes = await TSQLPersonne.chargeFromBDD$();

Utilisation du filtre

const filtre = new TSQLPersonne({
  Codepostal: "31800"
});
 
this.personnes = await TSQLPersonne.chargeFromBDD$(filtre); 

Résultat attendu :

* uniquement les personnes ayant le code postal 31800

CREATE / UPDATE

Nom de la fonction :

sauveToBDD$

Signature :

async sauveToBDD$(base?: TBaseLoGeAs)
Cas Condition Action
Création ID = 0 Insertion en base
Mise à jour ID ≠ 0 Update en base
Préparation Aucune Gérée par la méthode

DELETE

Nom de la fonction :

effaceToBDD$

Signature :

async effaceToBDD$(
  ID: number,
  base?: TBaseLoGeAs
)
Paramètre Type Description
ID number Identifiant de l'objet
base TBaseLoGeAs Base optionnelle

Tableau récapitulatif du CRUD

Opération Méthode Type Description
READ chargeFromBDD$ static async Charge une liste d'objets depuis la base
CREATE sauveToBDD$ async Crée un objet
UPDATE sauveToBDD$ async Met à jour un objet
DELETE effaceToBDD$ async Supprime un objet