aboutsummaryrefslogtreecommitdiffstats
path: root/src/services/graphql/api.ts
diff options
context:
space:
mode:
authorArmand Philippot <git@armandphilippot.com>2021-12-20 00:15:20 +0100
committerArmand Philippot <git@armandphilippot.com>2021-12-20 00:15:20 +0100
commitfa6adedc42e9c6ec39cc30df16b54900c220b094 (patch)
tree6bb498beadaa382245cecb86ce56931580313c6f /src/services/graphql/api.ts
parent2ff898626c5c0abc6b8195224067b992403e313b (diff)
refactor: rewrite types and services
I was repeating myself a lot in services. So I rewrited the different functions to improve readability and I extracted some formatting functions to put them in utils. I also rewrited/reorganized some types to keep consistent names.
Diffstat (limited to 'src/services/graphql/api.ts')
-rw-r--r--src/services/graphql/api.ts27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/services/graphql/api.ts b/src/services/graphql/api.ts
new file mode 100644
index 0000000..de8024f
--- /dev/null
+++ b/src/services/graphql/api.ts
@@ -0,0 +1,27 @@
+import { RequestType, VariablesType } from '@ts/types/app';
+import { GraphQLClient } from 'graphql-request';
+
+export const getGraphQLClient = (): GraphQLClient => {
+ const apiUrl: string = process.env.NEXT_PUBLIC_GRAPHQL_API || '';
+
+ if (!apiUrl) throw new Error('API URL not defined.');
+
+ const graphQLClient = new GraphQLClient(apiUrl);
+
+ return graphQLClient;
+};
+
+export const fetchApi = async <T extends RequestType>(
+ query: string,
+ variables: VariablesType<T>
+): Promise<T> => {
+ const client = getGraphQLClient();
+
+ try {
+ const response = await client.request(query, variables);
+ return response;
+ } catch (error) {
+ console.error(error, undefined, 2);
+ process.exit(1);
+ }
+};