ElrahAPI

Package de développement d'API basé sur FASTAPI , pour automatiser des configurations , et accélérer de développement d'API .

View on GitHub

Documentation

Ce package contient plusieurs modules utiles pour accélérer et modulariser le dévéloppement avec FASTAPI. Voici un aperçu de leurs fonctionnalités.

1. Commandes

1.1. Commande de création du projet

Cette commande permet de générer un projet FASTAPI avec une archictecture définie

elrahapi startproject nomduprojet

architecture:

nomduprojet/
├── __init__.py
├── .gitignore
├── pytest.ini
├── tests/
├── alembic/
├── README.md
├── .env
├── .env.example
├── alembic.ini
├── requirements.txt
├── __main__.py
├── app/
│   ├── __init__.py
│   ├── main.py
│   ├── settings/

repertoire settings :

├── auth
│   ├── __init__.py
│   ├── cruds.py
│   ├── meta_models.py
│   ├── models.py
│   ├── routers.py
│   └── schemas.py
├── config
│   ├── __init__.py
│   ├── auth_config.py
│   ├── database_config.py
│   ├── env_config.py
│   └── seeders_logger_config.py
├── database
│   ├── seeders
│   │   ├── __init__.py
│   │   ├── privilege_seed.py
│   │   ├── role_privilege_seed.py
│   │   ├── role_seed.py
│   │   ├── seed_manager_seed.py
│   │   ├── user_privilege_seed.py
│   │   ├── user_role_seed.py
│   │   └── user_seed.py
│   ├── __init__.py
│   ├── base.py
│   └── models_metadata.py
├── logger
│   ├── __init__.py
│   ├── crud.py
│   ├── model.py
│   ├── router.py
│   └── schema.py
├── seeders
│   └── log
│       └── __init__.py
└── __init__.py

1.2. Commande de lancement de l'application

  elrahapi run

1.3. Commande de génération d'une application

Cette commande permet de créer une application dans le projet

  elrahapi startapp sqlapp

architecture:

sqlapp/
├── __init__.py
├── cruds.py
├── models.py
├── router.py
├── schemas.py
├── utils.py
├── meta_models.py

2. Modules

2.1. Module exception

Ce module contient des exceptions personnalisées utilisés dans cette bibliothèque

2.1.1. Sous module auth_exception

ce sous module dispose de quelques variables d’exceptions prédéfinies liés à l’authentification

2.1.2. Sous module exceptions_utils

ce sous module contient des fonction utilitaires pour les exceptions

2.1.3. Sous module custom_http_exception

2.2. Module utility

Ce module contient des utilitaires comme des fonctions , des variables , des classes ou des types.

2.2.1. Sous module utils

Ce sous module contient des quelques fonctions utiles .

Note : Si withscalar et with_scalars sont à False la méthode execute sera utilisée .

2.2.2. Sous module patterns

Ce sous module comporte quelques regex utilisables comme pattern dans les schemas de validations pydantic

2.2.3. Sous module types

Ce sous module comporte certaines types réutilisables .

2.2.3. Sous module schemas

Ce sous module comporte des schémas pydantic réutilisables .

2.2.4. Sous module models

- date_created :  **mapped_column(DateTime)**

- date_updated :  **mapped_column(DateTime)**

- is_deleted :  **mapped_column(Boolean)**

- date_deleted : **mapped_column(DateTime)**

2.3. Module authentication

Ce module contient des classes et des fonctions utilisées pour l’authentification.

2.3.1. Sous module token

Ce sous module définit des classes pydantics pour la gestions des tokens :

2.3.2 Sous module authentication_namespace

Ce sous module comporte des variables , constantes et éléments réutilisable dans l’authentifiation

2.3.3 Sous module authentication_manager

ce sous module définit les classes et fonctions utilisées pour l’authentification

Classe AuthenticationManager: classe principale pour gérer l’authentification

Attributs

2.3.4 Sous module authentication_router_provider

Ce sous module définit la classe AuthenticationRouterProvider pour gérer le routage de l’authentification

2.4 Sous module otp_setup

Ce module comporte des utilitaires pour OTP .

2.4.1 Sous module schemas

Ce sous module comporte des schemas pour OTP .

2.4.2 Sous module otp_auth

Ce sous module comporte les classes OTPAuthManager et OTPAuthRouterProvider

2.5. Module authorization

Ce module contient des classes et des fonctions utilisées pour l’autorisation.

2.4.1. Sous module base_meta_model

Ce sous module contient des models Meta pour définir les models liés à l’authorization et pour lire partiellement des données .

2.4.2. Sous module role

Ce sous module contient les models SQLAlchemy et classes pydantic pour l’entité Role .

2.4.2.1. Sous module models

2.4.2.2. Sous module schemas

2.4.2.3. Sous module meta_models

2.4.3. Sous module privilege

Ce sous module contient les models SQLAlchemy et classes pydantic pour l’entité Privilege .

2.4.3.1 Sous module models

2.4.3.2 Sous module schemas

2.4.3.3 Sous module meta_models

2.4.4. Sous module role_privilege

Ce sous module contient les models SQLAlchemy et classes pydantic pour l’entité RolePrivilege .

2.4.4.1. Sous module models

2.4.4.2. Sous module schemas

2.4.5. Sous module user_privilege

Ce sous module contient les models SQLAlchemy et classes pydantic pour l’entité UserPrivilege .

2.4.5.1 Sous module models

2.4.5.2 Sous module schemas

2.4.5.3. Sous module meta_models

2.4.6. Sous module user_role

Ce sous module contient les models SQLAlchemy et classes pydantic pour l’entité UserRole .

2.4.6.1 Sous module models

2.4.6.2 Sous module schemas

2.4.6.3. Sous module meta_models

2.5. Module middleware

Ce module regroupe toute la gestion des middelwares .

2.5.1. Sous module models

Ce sous module définit les modèles de Log : LogModel et LogReadModel pour la validation Pydantic

LogModel:

Attributs prédéfinis:

LogReadModel:

Attributs prédéfinis:

2.5.2 Sous module log_middleware

Ce sous module définit la classe LoggerMiddleware comme middleware de logs .

2.5.3. Sous module error_middleware

Ce sous module définit la classe ErrorMiddleware comme middleware de gestion d’erreur .

2.5.4. Sous module crud_middelware

ce sous module définit les methodes pour sauvegarder les logs .

2.6. Module user

Ce module comporte toute la gestion des utilisateurs

2.6.1. Sous module model

Ce sous module comporte le model User utilisé dans le système d’authentification.

UserModel

Attributs:

Methodes :

2.6.2. Sous module schemas

Ce sous module rassemble les classes pydantics liées à User pour la validation

Models pydantics pour la validations :

2.7. Module websocket

Ce module comporte certaines classes et methodes pour interagir avec des websockets

2.7.1. Sous module connectionManager

Contient la classe ConnectionManager pour gérer une connexion avec un websocket .

methodes:

2.8. Module crud

Ce module comporte des classes methodes et autres utilitaires pour automatiser la création des cruds.

2.8.1. Sous module crud_forgery

Ce sous module comporte la classe CrudForgery pour générer des cruds de base .

CrudForgery:

2.8.2 Sous module crud_models

Ce sous module definit CrudModels qui définit l’ensemble des classes et informations sur une entité

2.8.3. Sous module bulk_models

Ce sous module définit des classes pour les opérations en masse .

2.9. Module router

Ce module comporte des classes methodes et autres utilitaires pour automatiser la création des routeurs.

2.9.1. Sous module route_config

Ce sous module comporte la classe RouteConfig pour configurer un CustomRouterProvider et des classes utilitaires DEFAULT_ROUTE_CONFIG , ResponseModelConfig et AuthorizationConfig les configurations du routeur et des routes.

2.9.2 Sous module route_namespace

Ce sous module comporte des Constantes et classes réutilisables dans le contexte du routage .

2.9.3. Sous module router_default_routes_name

Ce sous module définit notament des classes contenant les définitions des noms des routes

2.9.4. Sous module router_provider

Ce sous module comporte la classe CustomRouterProvider pour configurer un routeur . CustomRouterProvider

2.9.5. Sous module router_crud

Ce sous module comporte certaines fonctions utilisées dans le cadre du routage .

2.9.6. Sous module relationship

Ce sous module définit Relationship une classe pour permettre de retourner des données en effectuant des jointures .

2.10. Module security

Ce module définit la gestion de la sécurité .

2.10.1 Sous module secret

Ce sous module définit des utilitaires pour la sécurité

2.10. Module session

Ce module définit des classes utilitaires pour la gestion des sessions

2.10.1 Sous module session_manager

Ce sous module définit la classe SessionManager pour gérer les sessions

2.11. Module elrahsettings

Un module qui definit une classe pour les variables d’environnements et autres configurations

2.11.1 Sous Module models

2.12. Module testclass

Un module qui definit une classe les tests

2.12.1 Sous Module elrahtest

Une classe avec des méthodes de classe pour les tests.

note : on parle des dates (date_created , date_update et date_deleted)

2.13. Module database

Ce module comporte des classes et utilitaire pour la gestion de base données et de sessions.

2.13.1 Sous Module database_constants

Ce sous module contient des constantes utilitaires .

2.13.2 Sous Module database_manager

La classe principale pour la gestion de la base de données DatabaseManager

2.13.3 Sous Module session_manager

Ce sous module comporte le gestionnaire de session

2.13.4 Sous Module seed_manager

Les classes pour la gestion des seeds

Seed

SeedManager Le gestionnaire de seed