Comment étendre les entités de l'OIP ?
Cette page explique comment ajouter des propriétés personnalisées aux entités dans l'OIP. Il fournit des exemples de code pour ajouter des propriétés lors de l'appel à OIP.config et étendre les entités existantes avec des propriétés supplémentaires. Il mentionne également que des accesseurs par défaut sont automatiquement générés pour ces propriétés personnalisées, mais les utilisateurs peuvent utiliser leurs propres accesseurs en définissant l'option generateAccessors sur false.
Comment ajouter des propriétés personnalisées ?
Il est possible de rajouter des propriétés personnalisées aux entités natives de l'OIP.
Pour cela, il faut ajouter les éléments suivants dans le fichier de configuration de l'OIP :
export default {
database: {
url: process.env.OIP_MONGO_DB_URL
},
views: {
config: 'viewsConfig',
viewIds,
actionIds
},
entities: {
oipEntity: {
properties: {
customProperty1: {
type: String,
validator:{ length:10, rule: $/\^ }
}
}
}
};Dans l'exemple ci-dessus, oipEntity correspond au nom de l'entité que l'on veut étendre.
Exemple d'ajout d'une propriété personnalisée complement à l'entité native address :
export default {
...
entities: {
address: {
properties: {
complement: { type: String }
}
}
}
}Les accesseurs pour ces propriétés personnalisées sont automatiquement générés par défaut. Si vous souhaitez utiliser vos propres accesseurs, il faut ajouter dans l'entité l'option generateAccessors en mettant sa valeur à false.
Comment importer les accesseurs de propriétés personnalisées
Dans le cas par défaut où les accesseurs sont automatiquement générés :
// fichier oip.config.mjs
export default {
database: {
url: process.env.OIP_MONGO_DB_URL
},
views: {
config: 'viewsConfig',
viewIds,
actionIds
},
entities: {
customer: {
properties: {
isSmoker: { type: Boolean },
magicProperty: { type: String }
}
}
}
};
// import des getters et setters
import { CustomProperties } from '@fasstech/oip-core/Entities';
const {
getCustomerIsSmoker,
getCustomerMagicProperty,
setCustomerIsSmoker,
setCustomerMagicProperty,
} = CustomProperties;Dans le cas où les accesseurs ne sont pas générés automatiquement, avec l'option generateAccessors à false dans le fichier de configuration :
// fichier oip.config.mjs
export default {
database: {
url: process.env.OIP_MONGO_DB_URL
},
views: {
config: 'viewsConfig',
viewIds,
actionIds
},
entities: {
customer: {
properties: {
isSmoker: { type: Boolean },
magicProperty: { type: String }
},
generateAccessors: false
}
}
};