0.1.10 • Published 4 months ago

data-management v0.1.10

Weekly downloads
-
License
-
Repository
-
Last release
4 months ago

DataManagement

Permet la création de services configurables afin d'automatiser la création de service de manière plus rapide.

Importer la librairie

Pour importer la librairie il suffit d'exécuter dans le fichier src de votre projet npm i data-management

Utiliser la librairie

Etape 1 : Configurer la librairie

Tout d'abord il faut ajouter du code à votre app.module.ts

imports : [
	DataManagementModule.forRoot({
	    Stock: {
	        urlConfig: new Map(
	          Object.entries({
	            getOne: '${baseUrl}/${T}/${id}',
	            getList: '${baseUrl}',
	            post: '${baseUrl}bundle',
	            put: '${baseUrl}bundle',
	            delete: '${baseUrl}bundle/${id}',
	          })
	        ),
	        baseUrl: environment.stockUrlTest,
	      },
	})
]

Dans le forRoot on va placer un objet qui est une liste des différents objets d'une api qu'on va utiliser. Ici on en utilisera une seule qui gère l'objet Stock. Si on avait voulu gérer un second objet Produit le code ressemblerait à

DataManagementModule.forRoot({
    Stock: {
        urlConfig: new Map(
          Object.entries({
            getOne: '${baseUrl}/${T}/${id}',
            getList: '${baseUrl}',
            post: '${baseUrl}bundle',
            put: '${baseUrl}bundle',
            delete: '${baseUrl}bundle/${id}',
          })
        ),
        baseUrl: environment.stockUrlTest,
    },
    Produit: {...}
}),

L'url config permet de définir des urls spécifiques si la convention par défaut ci-dessous ne correspond pas à l'api que vous utilisez. Actuellement il faut définir chaque type (getOne, getList, etc) utilisée, même si l'une d'elle correspond à la valeur par défaut. Quelques détails :

-${baseUrl} est l'url définie dans la configuration Stock: {..., baseUrl: "http://localhost:8080/", } - ${T} est le nom de l'objet, dans l'exemple précédent ${T} sera remplacé par Stock lors de l'appel à l'api - ${id} correspond au paramètre id de l'objet. Le nom id peut être replacé en renseignant le paramètre keyOfComparison dans la configuration. Par exemple si l'id de mon Stock ne se nomme pas id mais idOfStock je rajoute le paramètre keyOfComparison dans ma config

Stock: {..., 
	baseUrl: "http://localhost:8080/",
	keyOfComparison: "idOfStock"
	}

Etape 2 : Injecter le service

Une fois la configuration en place on ajoute une injection dans le constructor du component où on veut appeler l'api ou accéder aux données.

constructor(
	@Inject(DataRegisterService) private dataRegisterService: DataRegisterService
) { }

Cette instruction permet d'accéder à tous les objets qu'on a préalablement définit dans la config.

Etape 3 : Utiliser le service voulu

getAllDatas() {
	this.dataRegisterService.get('Stock').getList().subscribe((value) => {
		//Faire ici ce qu'on veut avec la valeur 
	})
}

Par défaut si des données sont stockées les méthodes getList() et getOne() retourneront celle stockée en localStorage. Si vous voulez forcer la requête, il suffit de mettre le paramètre force à true dans options comme ci-dessous.

getAllDatas() {
	this.dataRegisterService.get('Stock').getList(undefined, {force: true}).subscribe((value) => {
		//Faire ici ce qu'on veut avec la valeur 
	})
}

Si vous voulez requêter les valeurs déjà chargées vous pouvez utiliser la fonction getDatas().

const datas: T[] = this.dataRegisterService.get('Stock').getDatas();

Convention par défaut

Cette convention est celle utilisée par défaut si vous ne fournissez pas d'url à la méthode appelée et que vous avez fourni une baseUrl.

getOne objet T => GET {baseUrl}/T/{id} getList objet T => GET {baseUrl}/T post object T => POST {baseUrl}/T put object T => PUT {baseUrl}/T delete object T => DELETE {baseUrl}/T/{id}

Lorsque vous utilisez une url spécifique pour une méthode, celle-ci est sauvegardé de telle sorte que si vous réutilisez la même méthode de nouveau, l'url par défaut configurée est celle que vous avez utilisé la seconde fois. Par exemple: -> J'utilise getList en passant l'url https://monserveur.com/api/1 dans les paramètres de la méthode -> J'utilise une seconde fois getList, je n'ai plus besoin de passer l'url en paramètre

Autre cas: -> J'utilise getList en passant l'url https://monserveur.com/api/1 dans les paramètres de la méthode -> Je sélectionne l'option refreshAfterDelete et appelle la méthode delete, l'url utilisée pour le refresh sera https://monserveur.com/api/1

Paramètres

notLazy par défaut à False permet de ne pas requêter si la donnée existe déjà. A true on requête en toute circonstance. TODO faire un tableau avec toutes les configs

This library was generated with Angular CLI version 10.1.6.

Code scaffolding

Run ng generate component component-name --project dataManagement to generate a new component. You can also use ng generate directive|pipe|service|class|guard|interface|enum|module --project dataManagement.

Note: Don't forget to add --project dataManagement or else it will be added to the default project in your angular.json file.

Build

Run ng build dataManagement to build the project. The build artifacts will be stored in the dist/ directory.

Publishing

After building your library with ng build dataManagement, go to the dist folder cd dist/data-management and run npm publish.

Running unit tests

Run ng test dataManagement to execute the unit tests via Karma.

Further help

To get more help on the Angular CLI use ng help or go check out the Angular CLI README.

Evolutions à venir

-> Si un type n'est pas renseigné dans l'urlConfig on prend celle par défaut. On ne fait plus de remplacement complet du map mais un remplacement membre par membre

0.1.10

4 months ago

0.1.8

4 months ago

0.1.9

4 months ago

0.1.0

2 years ago

0.1.2

2 years ago

0.1.1

2 years ago

0.1.7

2 years ago

0.1.4

2 years ago

0.1.3

2 years ago

0.1.6

2 years ago

0.1.5

2 years ago

0.0.17

2 years ago

0.0.16

2 years ago

0.0.15

2 years ago

0.0.14

2 years ago

0.0.13

2 years ago

0.0.12

2 years ago

0.0.11

2 years ago

0.0.10

2 years ago

0.0.9

2 years ago

0.0.8

2 years ago

0.0.7

2 years ago

0.0.5

2 years ago

0.0.4

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago