Skip to content

Commit 714a593

Browse files
committed
feat(graphql): enchance codegen (presets)
https://github.com/martis-git/learn-frontend/issues/279
1 parent 30fb2b4 commit 714a593

File tree

6 files changed

+599
-6
lines changed

6 files changed

+599
-6
lines changed

examples/graphql/codegen.yml

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
1+
# FIXME: don't work globlally
12
overwrite: true
23
schema: https://graphqlzero.almansi.me/api
34
documents: src/**/*.gql
45
generates:
5-
src/gen/graphql.tsx:
6+
src/types.ts:
7+
- typescript
8+
src/:
9+
preset: near-operation-file
10+
presetConfig:
11+
extension: .gen.ts
12+
baseTypesPath: types.ts
613
config:
7-
# FIXME: SPECIFY (noNamespaces: false)
8-
# TODO: avoidTypeName
914
skipTypename: true
1015
withHooks: true
1116
immutableTypes: true
@@ -14,6 +19,5 @@ generates:
1419
preResolveTypes: true
1520
# onlyOperationTypes: true
1621
plugins:
17-
- typescript
1822
- typescript-operations
1923
- typescript-react-apollo

examples/graphql/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
},
5151
"devDependencies": {
5252
"@graphql-codegen/cli": "^1.17.10",
53+
"@graphql-codegen/near-operation-file-preset": "^1.17.11",
5354
"@graphql-codegen/typescript": "^1.17.10",
5455
"@graphql-codegen/typescript-operations": "^1.17.8",
5556
"@graphql-codegen/typescript-react-apollo": "^2.0.7",

examples/graphql/src/pages/tasks-list/index.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ import React, { useEffect } from 'react'
22
import { Spin, Alert } from "antd";
33
import { useFetch } from "shared/hooks";
44
import { TaskItem } from "shared/components";
5-
import { useGetTodosListQuery } from "gen/graphql";
5+
import { useGetTodosListQuery } from "./query.gen";
6+
7+
type Foo = import("types").Album;
68

79
const TasksList = () => {
810
const { data, error, loading } = useFetch<Task[]>("todos");
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import * as Types from '../../types';
2+
3+
import { gql } from '@apollo/client';
4+
import * as Apollo from '@apollo/client';
5+
export type GetTodosListQueryVariables = Types.Exact<{ [key: string]: never; }>;
6+
7+
8+
export type GetTodosListQuery = { readonly todos: Types.Maybe<{ readonly data: Types.Maybe<ReadonlyArray<Types.Maybe<{ readonly id: Types.Maybe<string>, readonly title: Types.Maybe<string>, readonly user: Types.Maybe<{ readonly name: Types.Maybe<string> }> }>>> }> };
9+
10+
11+
export const GetTodosListDocument = gql`
12+
query getTodosList {
13+
todos {
14+
data {
15+
id
16+
title
17+
user {
18+
name
19+
}
20+
}
21+
}
22+
}
23+
`;
24+
25+
/**
26+
* __useGetTodosListQuery__
27+
*
28+
* To run a query within a React component, call `useGetTodosListQuery` and pass it any options that fit your needs.
29+
* When your component renders, `useGetTodosListQuery` returns an object from Apollo Client that contains loading, error, and data properties
30+
* you can use to render your UI.
31+
*
32+
* @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;
33+
*
34+
* @example
35+
* const { data, loading, error } = useGetTodosListQuery({
36+
* variables: {
37+
* },
38+
* });
39+
*/
40+
export function useGetTodosListQuery(baseOptions?: Apollo.QueryHookOptions<GetTodosListQuery, GetTodosListQueryVariables>) {
41+
return Apollo.useQuery<GetTodosListQuery, GetTodosListQueryVariables>(GetTodosListDocument, baseOptions);
42+
}
43+
export function useGetTodosListLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<GetTodosListQuery, GetTodosListQueryVariables>) {
44+
return Apollo.useLazyQuery<GetTodosListQuery, GetTodosListQueryVariables>(GetTodosListDocument, baseOptions);
45+
}
46+
export type GetTodosListQueryHookResult = ReturnType<typeof useGetTodosListQuery>;
47+
export type GetTodosListLazyQueryHookResult = ReturnType<typeof useGetTodosListLazyQuery>;
48+
export type GetTodosListQueryResult = Apollo.QueryResult<GetTodosListQuery, GetTodosListQueryVariables>;

0 commit comments

Comments
 (0)