✨ Register: Show list of active products

🛠 Generate apollo client typescript helpers from graphql schema
This commit is contained in:
nikolark committed 2021-10-30 17:29:16 +02:00
1 parent fa89353525
commit f0656b34e9
13 files changed
+8165 -173

No files matched your search

+6 -1
View File
@@ -1,14 +1,19 @@
import {ApolloProvider} from "@apollo/client";
import React from 'react'
import logo from './assets/brick.svg';
import styles from './App.module.css'
import {Register} from "./features/Register";
import client from "./client";
function App() {
return (
<ApolloProvider client={client}>
<div className={styles.app}>
<img src={logo} className={styles.logo} alt="logo" />
<Register />
</div>
</ApolloProvider>
)
}
+8
View File
@@ -0,0 +1,8 @@
import {ApolloClient,InMemoryCache} from "@apollo/client";
const client = new ApolloClient({
uri: 'http://localhost:8000/graphql/', // FIXME: env
cache: new InMemoryCache()
});
export default client;
+17
View File
@@ -0,0 +1,17 @@
import React from "react";
import {Product, useAllProductsQuery} from '../types';
export const Register: React.FC = () => {
const { data, error, loading } = useAllProductsQuery({variables:{active: true}});
if(error) {
console.log('🔥', error)
return null;
}
if(loading) {
return <div>...</div>
}
return (<div>{data?.allProducts.map((product: Product) => {
return <div key={product.id}>{product.name}</div>
})} </div>)
};
@@ -0,0 +1,8 @@
query allProducts($active: Boolean!) {
allProducts(filters: {active: $active}) {
id
name
salePriceExt
salePriceInt
}
}
+85
View File
@@ -0,0 +1,85 @@
import { gql } from '@apollo/client';
import * as Apollo from '@apollo/client';
export type Maybe<T> = T | null;
export type Exact<T extends { [key: string]: unknown }> = { [K in keyof T]: T[K] };
export type MakeOptional<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]?: Maybe<T[SubKey]> };
export type MakeMaybe<T, K extends keyof T> = Omit<T, K> & { [SubKey in K]: Maybe<T[SubKey]> };
const defaultOptions = {}
/** All built-in and custom scalars, mapped to their actual values */
export type Scalars = {
ID: string;
String: string;
Boolean: boolean;
Int: number;
Float: number;
};
export type Product = {
__typename?: 'Product';
id: Scalars['ID'];
name: Scalars['String'];
salePriceExt: Scalars['Float'];
salePriceInt: Scalars['Float'];
};
export type ProductFilter = {
active?: Maybe<Scalars['Boolean']>;
id?: Maybe<Scalars['ID']>;
};
export type Query = {
__typename?: 'Query';
allProducts: Array<Product>;
};
export type QueryAllProductsArgs = {
filters?: Maybe<ProductFilter>;
};
export type AllProductsQueryVariables = Exact<{
active: Scalars['Boolean'];
}>;
export type AllProductsQuery = { __typename?: 'Query', allProducts: Array<{ __typename?: 'Product', id: string, name: string, salePriceExt: number, salePriceInt: number }> };
export const AllProductsDocument = gql`
query allProducts($active: Boolean!) {
allProducts(filters: {active: $active}) {
id
name
salePriceExt
salePriceInt
}
}
`;
/**
* __useAllProductsQuery__
*
* To run a query within a React component, call `useAllProductsQuery` and pass it any options that fit your needs.
* When your component renders, `useAllProductsQuery` returns an object from Apollo Client that contains loading, error, and data properties
* you can use to render your UI.
*
* @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;
*
* @example
* const { data, loading, error } = useAllProductsQuery({
* variables: {
* active: // value for 'active'
* },
* });
*/
export function useAllProductsQuery(baseOptions: Apollo.QueryHookOptions<AllProductsQuery, AllProductsQueryVariables>) {
const options = {...defaultOptions, ...baseOptions}
return Apollo.useQuery<AllProductsQuery, AllProductsQueryVariables>(AllProductsDocument, options);
}
export function useAllProductsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions<AllProductsQuery, AllProductsQueryVariables>) {
const options = {...defaultOptions, ...baseOptions}
return Apollo.useLazyQuery<AllProductsQuery, AllProductsQueryVariables>(AllProductsDocument, options);
}
export type AllProductsQueryHookResult = ReturnType<typeof useAllProductsQuery>;
export type AllProductsLazyQueryHookResult = ReturnType<typeof useAllProductsLazyQuery>;
export type AllProductsQueryResult = Apollo.QueryResult<AllProductsQuery, AllProductsQueryVariables>;