Update
Entités autres que Project
La méthode save rattache une entité enfant à son entité parente et enregistre son état en mémoire. Elle renvoie l'entité parente mise à jour avec la nouvelle version de l'entité enfant.
Signature : <S,T>(parentEntity: S, entity: T) => S
// Crée une entité Project
let project = await Entities('Project').create();
// Crée une entité Company
const company = await Entities('Company').create();
// Rattache l'entité Company à l'entité Project
project = await Entities('Company').save(project, company);Path
La fonction Entities accepte en paramÚtre un path pour sauvegarder facilement une ou plusieurs entités imbriquées.
Le path est divisé en segments dont chacun représente une entité.
Le path doit respecter les rĂšgles :
- Les segments sont séparés par le caractÚre ..
- La résolution d'un segment doit correspondre à exactement une entité. La seule exception est le dernier segment.
- Le critĂšre pour sĂ©lectionner une entitĂ© parmi plusieurs est spĂ©cifiĂ© entre crochets, et doit respecter la syntaxe: [PROPERTY_NAME=VALUE], oĂč PROPERTY_NAME est le nom d'une des propriĂ©tĂ©s de l'entitĂ©.
La signature de la fonction save est alors : <S>(parentEntity: S, entity: object[]) => S.
Chaque entitĂ© Ă sauvegarder est successivement associĂ©e Ă un segment du path. Cette correspondance est rĂ©alisĂ©e en partant du dernier segment. Le nombre des entitĂ©s Ă sauvegarder doit donc ĂȘtre infĂ©rieur ou Ă©gal au nombre de segments du path.
Exemples :
- Sauvegarde d'une entité e1 sur le path A.B.C : l'entité e1 correspond au segment C.
- Sauvegarde des entités e1 et e2 sur le path A.B.C : l'entité e2 correspond au segment C, et l'entité e1 correspond au segment B.
// Exemple
// A partir de l'entité `project`
// sauvegarde d'une entité `Aml`
// qui est rattaché à une entité `Contact`
// dont la propriété `companyName` est `company1`
await Entities('Contact[companyName=company1].Aml').save(project, [aml]);Le path donnĂ© Ă la fonction Entities doit ĂȘtre relatif Ă l'entitĂ© passĂ©e Ă la fonction save.
Entité Project
La méthode save enregistre en base de données l'arbre des entités. Elle renvoie la nouvelle version de l'entité Project, avec le statut et l'historique mis à jour.
La valeur null est retournée si l'entité Project n'existe pas en base de données.
Signature : <T>(projectEntity: T) => Promise<T | null>
// Crée une entité Project
let project = await Entities('Project').create();
// Crée une entité Company
const company = await Entities('Company').create();
// Rattache l'entité Company à l'entité Project
project = await Entities('Company').save(project, company);
// Sauvegarde en base de données les entités Project et Company
project = await Entities('Project').save(project);La persistance en base de données n'est réalisée qu'à l'appel de la fonction save sur l'entité Project. Avant l'appel à cette fonction de sauvegarde toutes les données sont traitées en mémoire.