@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

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-objects

Utilisation 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, UpdateCustomObjectDto
  • CustomField, CreateCustomFieldDto, UpdateCustomFieldDto, FieldType

Modèles

  • CustomObjectModel - Validation, normalisation, génération d'API names
  • CustomFieldModel - 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 app
    • appToDb<T>(obj) - Convertir un objet app vers format DB
    • dbToAppArray<T>(rows) - Convertir un tableau de lignes DB
    • appToDbArray<T>(objects) - Convertir un tableau d'objets app
  • queryBuilderHelper - Construction de requêtes SQL sécurisées
    • QueryBuilderHelper.buildWhereClause() - Construire une clause WHERE
    • QueryBuilderHelper.buildSearchWhereConditions() - Construire des conditions de recherche
    • QueryBuilderHelper.buildSelectQuery() - Construire une requête SELECT
    • QueryBuilderHelper.buildUpdateQuery() - Construire une requête UPDATE
    • QueryBuilderHelper.buildDeleteQuery() - Construire une requête DELETE
  • Database - Classe pour gérer les connexions PostgreSQL
    • new Database(config?) - Créer une instance de base de données
    • connect() - Se connecter à PostgreSQL
    • query() - Exécuter une requête SQL
    • queryCamel<T>() - Exécuter une requête et retourner les résultats en camelCase
    • queryOneCamel<T>() - Exécuter une requête et retourner le premier résultat en camelCase
  • RedisClient - Classe pour gérer les connexions Redis
    • new RedisClient(config?) - Créer une instance Redis
    • connect() - Se connecter à Redis
    • get(), set(), del(), exists(), etc. - Opérations de cache
    • createCache(redisClient) - Créer un objet cache pour compatibilité
  • createLogger(config) - Créer un logger Winston configurable
    • Retourne { logger, logRequest, logError, logAction, logSecurity, logPerformance }

Erreurs

  • AppError - Classe d'erreur de base
  • ValidationError - 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)