Skip to content

Installing Zeus with React Query: Missing reactQuery.ts and Type Safety #384

@mrigankdoshy

Description

@mrigankdoshy

Hello :)

I'm running into two issues when trying to use Zeus with React Query and TypeScript in a React Native mobile app

Problem 1

When running zeus schema.graphql ./ --reactQuery (from the directory where the schema.graphql exists) , according to the documentation, it should generate a reactQuery.ts file from which we can import useTypedQuery. However, when I run that command, it does not seem to generate that file

image

I have "graphql-zeus": "^5.3.2", as a dependency in my package.json file

Am I missing something?

Problem 2

With the generated files (index.ts and const.ts), I'm unable to receive strong type safety.

For example, here's a simple schema (schema.graphql):

type Todo {
    id: ID!
    text: String!
    completed: Boolean!
}

type Query {
    todos: [Todo!]!
    todo(id: ID!): Todo
    getTodo(id: ID!): Todo
}

type Mutation {
    addTodo(text: String!): Todo
    updateTodo(id: ID!, text: String, completed: Boolean): Todo
    deleteTodo(id: ID!): Boolean
}

Using useQuery from react-query, this works well:

    const chain = Chain(
        'https://api.example.com',
        {
            headers: {
                'x-api-key': 'key-here',
            },
        }
    );

    const { data } = useQuery('todos-data', {
        queryFn: () =>
            chain('query')({
                todos: {
                    id: true,
                    text: true,
                    completed: true,
                },
            }),
    });

However, with the below, I don't get type safety (i.e. it does not complain that thisIsAnInvalidProp is not a valid parameter for the query)

image

Is there a way to enable strong type safety?


Note: This is a quick code sample and is not the actual schema I'm working with. Truly appreciate any help here, happy to answer any questions :)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions