Разрешить подписке возвращать начальные данные объекта - PullRequest
0 голосов
/ 27 сентября 2019

Мне нужна подписка для возврата начального состояния запрошенного типа.

У меня есть система задач в моем приложении, задача может иметь несколько состояний: 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 для обновлений в моем случае не вариант из-за ограничений внешнего интерфейса.

...