Определите тип arg, используя только typename в typegraphql - PullRequest
0 голосов
/ 22 января 2020

У нас есть фабрика, которая создает типы с использованием обобщенных c типов:

export function GenericResolverFactory(props: FactoryProps) {
  @GqlType(`${props.model.name}Response`)
  class ModelPaginatedResponse extends ResponseFactory(props.modelClass) {
    // you can add more fields here if you need
  }

  @GqlInputType(`${props.model.name}CreateInput`)
  class CreateInput extends CreateInputFactory(props.createInput) { }

  @Resolver(_of => props.modelClass, { isAbstract: true })
  abstract class GenericResolver {
    @Mutation(_returns => props.modelClass, { name: `create${startCaseName}` })
    create(@Arg('data') data: CreateInput, @Ctx() _context: UserContext) {
      return this.__getService().create(data);
    }
  }

  return ModelResolverClass;
}

На данный момент мы должны объявить входные аргументы как: Arg('input') input: UpdateInput

Поскольку мои типы сгенерированные с использованием фабрики классы не будут доступны (не во время выполнения?). Есть ли способ обратиться к этим динамически генерируемым входам? Есть ли способ сделать что-то вроде: Arg('input') input: resolveType('ProductCreateInput')

1 Ответ

1 голос
/ 22 января 2020

Предполагая, что resolveType возвращает класс, украшенный @InputType и @Field s:

@Arg('input', type => resolveType('ProductCreateInput')) input: ICreateInput`

Вам просто нужно указать значение времени выполнения в качестве второго параметра @Arg decorator

...