Aller au contenu principal

Types

Chargement...

Description Générale​

Le dossier types/ contient des définitions de types et des classes utilisées dans l'application backend d'AlgoForge. Ces types permettent de structurer les données, de standardiser les réponses des API, et de définir des comportements spécifiques comme les droits d'accès ou les gestionnaires de routes.


Structure du Dossier​

types/
├── droits.enum.ts # Enumération des droits d'accès.
├── response.entity.ts # Classes pour structurer les réponses des API.
├── RouteHandler.d.ts # Interface pour les gestionnaires de routes.

1. droits.enum.ts​

Description​

Ce fichier définit une énumération (enum) des droits d'accès pour les utilisateurs sur les algorithmes et les dossiers. Ces droits permettent de gérer les permissions des utilisateurs dans l'application.

Enumération : Droits​

  • Owner : L'utilisateur est propriétaire de l'algorithme ou du dossier.
  • ReadWrite : L'utilisateur a des droits de lecture et d'écriture.
  • ReadOnly : L'utilisateur a uniquement des droits de lecture.

Exemple d'Utilisation​

import { Droits } from "../types/droits.enum";

const userPermission: Droits = Droits.ReadWrite;

if (userPermission === Droits.Owner) {
console.log("L'utilisateur est propriétaire.");
}

2. response.entity.ts​

Description​

Ce fichier contient des classes pour structurer les réponses des API. Chaque classe représente un type de réponse spécifique (succès, erreur, etc.) et inclut un code de statut HTTP, un message, et éventuellement des données supplémentaires.

Classes Principales​

a. Res​

  • Classe de base pour toutes les réponses.
  • Attributs :
    • statut : Code de statut HTTP.
    • message : Message de la réponse.
    • data : Données supplémentaires (optionnel).

Exemple :​

const response = new Res(200, "Opération réussie", { id: 1 });
console.log(response);

b. Réponses Spécifiques​

  • BadRequestRes : Requête mal formée (statut 400).
  • UnauthorizedRes : Non autorisé (statut 401).
  • ForbiddenRes : Accès interdit (statut 403).
  • NotFoundRes : Ressource non trouvée (statut 404).
  • InternalServerErrorRes : Erreur interne du serveur (statut 500).
  • OkRes : Succès (statut 200).
  • CreatedRes : Ressource créée (statut 201).

Exemple d'Utilisation​

import { OkRes, NotFoundRes } from "../types/response.entity";

function getUser(id: number) {
if (id === 1) {
return new OkRes("Utilisateur trouvé", { id: 1, name: "John Doe" });
} else {
return new NotFoundRes("Utilisateur non trouvé");
}
}

3. RouteHandler.d.ts​

Description​

Ce fichier définit une interface pour les gestionnaires de routes dans l'application. Il permet de structurer les routes et leurs callbacks.

Interface : RouteHandler​

  • route : Chemin de la route (par exemple, /api/users).
  • callback : Fonction de rappel exécutée lorsque la route est appelée.

Exemple d'Utilisation​

import RouteHandler from "../types/RouteHandler";

const userRoute: RouteHandler = {
route: "/api/users",
callback: (req, res) => {
res.send("Liste des utilisateurs");
},
};

Points Techniques​

1. Standardisation des Réponses​

Les classes dans response.entity.ts permettent de standardiser les réponses des API, ce qui facilite la gestion des erreurs et des succès dans l'application.

2. Gestion des Permissions​

L'énumération Droits dans droits.enum.ts fournit une manière claire et typée de gérer les permissions des utilisateurs sur les ressources.

3. Structuration des Routes​

L'interface RouteHandler dans RouteHandler.d.ts aide à structurer les routes et leurs gestionnaires, ce qui améliore la lisibilité et la maintenabilité du code.