La méthode delete
La méthode delete permet de supprimer une entité spécifique d'un tableau d'entité.
Attention, cette méthode ne supprime pas l'entité en base de données. Il est nécessaire de faire appelle à la méthode save depuis l'entité project pour enregistrer les modifications en base de données.
import { Entities } from '@fasstech/oip-core';
// récupération d'une entité project
let project = await Entities('Project').get({ id: 'my-project-id' });
// récupération de l'entité company à supprimer
const company = await Entities('Company').get(project, 'my-company-id');
// suppression en mémoire de l'entité du tableau companies
project = await Entities('Company').delete(project, company);
// enregistrement en base de données
const updatedProject = await Entities('Project').save(project);delete prend en premier paramètre l'entité parent puis en second paramètre l'entité à supprimer.
La méthode delete sur l'entité Project est disponible à partir de la version 2.6.0
La méthode delete sur l'entité Project agit directement en base de données. Il est possible de réaliser un « soft delete » ou un « hard delete ». En mode soft delete, le status du projet est mise à jour sur la valeur DELETE sans autre modification sur le document en base de données. En mode hard delete, seul l'id et le statut du projet sont conservés et toutes les sous-entités sont supprimées sans exceptions.
import { Entities } from '@fasstech/oip-core';
// mode soft delete (mode par défaut)
const project = await Entities('Project').delete({ id: projectId });
// mode hard delete
const project = await Entities('Project').delete({ id: projectId, hardDelete: true });Il est possible de supprimer intégralement une entité Project en base de données à partir de la version 2.8.0
Pour supprimer de manière intégrale une entité Project en base de données il est nécessaire de passer en paramètre { hardDelete: true, full: true } à la méthode delete :
import { Entities } from '@fasstech/oip-core';
// mode full delete (>= 2.8.0)
const result = await Entities('Project').delete({ id: projectId, hardDelete: true, full: true });L'objet retourné par un appel à delete en mode « full » contient :
// result
{
id: 'requested-project-id',
isDeleted: true
}