Skip to content

Federation with custom mappers #5646

Open
@ftognetto

Description

@ftognetto

Is your feature request related to a problem? Please describe.

Hello, i'm using codegen in a federated project with custom mappers.
On db side my "id" field is _id (i'm using mongo) so i set up the db instance like this

export interface UserDb {
    _id: ObjectId;
    name: string;
    email?: string;
}

In schema:

type User @key(fields: "id") {
  id: ID!
  name: String!
  email: String
}

And in codegen i added this class as a mapper

overwrite: true
schema: "src/schema/schema.ts"
documents: null
generates:
  src/generated/graphql.ts:
    plugins:
      - typescript
      - typescript-resolvers
    config:
      federation: true
      contextType: ../context#MyCtx
      maybeValue: T | undefined
      mappers:
        User: ../db/user_db#UserDb
  ./graphql.schema.json:
    plugins:
      - "introspection"

But this is generating for user resolver

export type UserResolvers<ContextType = MyCtx, ParentType extends ResolversParentTypes['User'] = ResolversParentTypes['User']> = {
  __resolveReference?: ReferenceResolver<Maybe<ResolversTypes['User']>, { __typename: 'User' } & GraphQLRecursivePick<ParentType, {"id":true}>, ContextType>;
  id?: Resolver<ResolversTypes['ID'], ParentType, ContextType>;
  name?: Resolver<ResolversTypes['String'], ParentType, ContextType>;
  email?: Resolver<Maybe<ResolversTypes['String']>, ParentType, ContextType>;
  __isTypeOf?: IsTypeOfResolverFn<ParentType, ContextType>;
};

So in this line
__resolveReference?: ReferenceResolver<Maybe<ResolversTypes['User']>, { __typename: 'User' } & GraphQLRecursivePick<ParentType, {"id":true}>, ContextType>; is searching "id" inside UserDb interface which is not present because in my interface is called "_id"

Is this customizable? Thank you!

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions