data-management
v0.1.10
Published
Permet la création de services configurables afin d'automatiser la création de service de manière plus rapide.
Downloads
30
Readme
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 yourangular.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