У меня есть сервис entity.service.ts, в котором лежат функции для отправления HTTP запросов на API.
Есть необходимость делать комбинированные запросы. То есть прежде, чем отправить какой-то POST запрос на создание сущности, мне для начала нужно отправить GET запрос, чтобы проверить, не существует ли уже подобной сущности.
Вот, например, функция:
createNewEntity(colleague: Colleague): void {
const entityData = this.formColleagueEntityData(colleague);
this.entityService.getEntity(colleague.uuid)
.pipe(
filter(entity => entity === null),
switchMap(() => this.entityService.createNewEntity(entityData)),
takeUntil(this.ngUnsubscribe)
)
.subscribe();
}
Эту функцию, которая вызывает две другие функции сервиса entity, мне нужно использовать во многих компонентах.
Где правильнее всего расположить эту и другие подобные "комбинированные" функции, чтобы не копипастить их в каждый компонент? То есть по факту это всё относится непосредственное к сервису entity, но при этом я не думаю, что будет уместно пихать эту функцию в этот сервис, так как в этом сервисе все функции возвращают Observable, в то время как эта "комбинированная" функция подписывается на эти Observable.