Мне нужна подписка для возврата начального состояния запрошенного типа.
У меня есть система задач в моем приложении, задача может иметь несколько состояний: CREATED
, QUEUED
, RUNNING
, COMPLETED
, CANCELLED
, CANCELLING
и т. Д. Когда задачасозданный, он имеет состояние CREATED
и затем проходит через несколько состояний в зависимости от его типа, пока не станет COMPLETED
.
Существует подписка taskUpdated(id: ID!): Task
, которая делает то, что говорит.Это преобразователь подписки:
taskUpdated: {
subscribe: async (...args) => {
try {
// get initial task state
const initialTaskData = await resolveTask(args[1].input);
const cb = withFilter(
(_, { input }) => {
const iterator = tasksPubsub.asyncIterator(TASK_UPDATED);
// Set initial task state in the iterator?
return iterator;
},
(payload, variables) => {
return payload.id === variables.input.id;
},
);
return cb.apply(null, args);
} catch (e) {
// handle error
debugger;
}
},
},
Как установить исходное состояние задачи в итераторе?Кто-то предложил создать обертку вокруг итератора, которая бы сработала, но у меня нет идей, с чего начать, и это кажется излишним.Есть ли простые решения для этой проблемы?
PS.Выполнить query
для чтения, а затем subscription
для обновлений в моем случае не вариант из-за ограничений внешнего интерфейса.