Créer un service
4 min
Service signature
Chaque fonction exposée par une feature doit suivre ce contrat :
type FeatureService = (
projectEntity: Object,
args?: unknown,
taskState?: TaskState
) => Promise<{
projectEntity: Object;
metadata?: unknown;
}>;Runtime call shape
Dans les exemples fournis, les services sont appelés avec un objet contenant :
{
projectEntity,
args,
taskState
}On garde donc cette forme comme convention d’usage.
Example
export const $upload =
({ updateTaskState, sendMessage, options }) =>
async ({ projectEntity, args, taskState }) => {
// 1. upload file to file_storage
// 2. get the file_storage uploadId
// 3. create a Document entity
// 4. save it to Project entity
// 5. return updated projectEntity and metadata
};Service responsibilities
Un service doit idéalement :
- lire les données de args
- appeler le service externe si nécessaire
- mettre à jour projectEntity
- remonter l’état de task si applicable
- retourner { projectEntity, metadata? }