@viridial/shared-custom-objects
v1.0.1
Published
Shared package for Custom Objects and Custom Fields management with database utilities, Redis client, logger, and error handling
Downloads
200
Maintainers
Readme
Shared Custom Objects Package
Package partagé pour la gestion des Custom Objects et Custom Fields, utilisable par api-usermng et api-properties.
📦 Installation
Installation locale (développement)
# Dans le projet partagé
cd shared-custom-objects
npm install
npm run build
# Dans api-usermng ou api-properties
cd ../api-usermng # ou api-properties
npm install ../shared-custom-objectsUtilisation avec npm link (développement)
# Dans shared-custom-objects
npm link
# Dans api-usermng ou api-properties
npm link @viridial/shared-custom-objects📁 Structure
shared-custom-objects/
├── src/
│ ├── types/
│ │ ├── customObject.types.ts
│ │ ├── customField.types.ts
│ │ └── index.ts
│ ├── models/
│ │ ├── CustomObject.model.ts
│ │ ├── CustomField.model.ts
│ │ └── index.ts
│ └── index.ts
├── migrations/
│ ├── create_custom_objects.js
│ ├── create_custom_fields.js
│ └── create_custom_object_data.js
├── package.json
├── tsconfig.json
└── README.md🚀 Utilisation
Importer les types
import {
CustomObject,
CreateCustomObjectDto,
CustomField,
CreateCustomFieldDto,
FieldType
} from '@viridial/shared-custom-objects';Importer les modèles
import {
CustomObjectModel,
CustomFieldModel
} from '@viridial/shared-custom-objects';
// Utilisation
const apiName = CustomObjectModel.generateApiName('Mandate');
const validation = CustomObjectModel.validate(data);Utiliser les migrations
Les migrations peuvent être copiées dans les projets qui utilisent ce package, ou référencées directement.
📝 Notes
- Les services (CustomObjectService, CustomFieldService) doivent être implémentés dans chaque API car ils dépendent de la configuration de base de données spécifique à chaque projet.
- Les types, modèles et utilitaires (
dbMapper,queryBuilderHelper) sont partagés pour garantir la cohérence. - Les migrations sont fournies comme référence et doivent être adaptées selon les besoins de chaque projet.
📚 Modules disponibles
Types
CustomObject,CreateCustomObjectDto,UpdateCustomObjectDtoCustomField,CreateCustomFieldDto,UpdateCustomFieldDto,FieldType
Modèles
CustomObjectModel- Validation, normalisation, génération d'API namesCustomFieldModel- Validation, normalisation, génération d'API names
Utilitaires (lib)
dbMapper- Conversion entre snake_case (DB) et camelCase (app)dbToApp<T>(row)- Convertir une ligne DB vers objet appappToDb<T>(obj)- Convertir un objet app vers format DBdbToAppArray<T>(rows)- Convertir un tableau de lignes DBappToDbArray<T>(objects)- Convertir un tableau d'objets app
queryBuilderHelper- Construction de requêtes SQL sécuriséesQueryBuilderHelper.buildWhereClause()- Construire une clause WHEREQueryBuilderHelper.buildSearchWhereConditions()- Construire des conditions de rechercheQueryBuilderHelper.buildSelectQuery()- Construire une requête SELECTQueryBuilderHelper.buildUpdateQuery()- Construire une requête UPDATEQueryBuilderHelper.buildDeleteQuery()- Construire une requête DELETE
Database- Classe pour gérer les connexions PostgreSQLnew Database(config?)- Créer une instance de base de donnéesconnect()- Se connecter à PostgreSQLquery()- Exécuter une requête SQLqueryCamel<T>()- Exécuter une requête et retourner les résultats en camelCasequeryOneCamel<T>()- Exécuter une requête et retourner le premier résultat en camelCase
RedisClient- Classe pour gérer les connexions Redisnew RedisClient(config?)- Créer une instance Redisconnect()- Se connecter à Redisget(),set(),del(),exists(), etc. - Opérations de cachecreateCache(redisClient)- Créer un objet cache pour compatibilité
createLogger(config)- Créer un logger Winston configurable- Retourne
{ logger, logRequest, logError, logAction, logSecurity, logPerformance }
- Retourne
Erreurs
AppError- Classe d'erreur de baseValidationError- Erreur de validation (400)AuthenticationError- Erreur d'authentification (401)AuthorizationError- Erreur d'autorisation (403)NotFoundError- Ressource non trouvée (404)ConflictError- Conflit (409)InternalServerError- Erreur serveur (500)