aboutsummaryrefslogtreecommitdiffstats
path: root/src/types/graphql
diff options
context:
space:
mode:
authorArmand Philippot <git@armandphilippot.com>2023-11-24 20:00:08 +0100
committerArmand Philippot <git@armandphilippot.com>2023-11-27 14:47:51 +0100
commitf111685c5886f3e77edfd3621c98d8ac1b9bcce4 (patch)
tree62a541fe3afeb64bf745443706fbfb02e96c5230 /src/types/graphql
parentbee515641cb144be9a855ff2cac258d2fedab21d (diff)
refactor(services, types): reorganize GraphQL fetchers and data types
The Typescript mapped types was useful for autocompletion in fetchers but their are harder to maintain. I think it's better to keep each query close to its fetcher to have a better understanding of the fetched data. So I: * colocate queries with their own fetcher * colocate mutations with their own mutator * remove Typescript mapped types for queries and mutations * move data convertors inside graphql services * rename most of data types and fetchers
Diffstat (limited to 'src/types/graphql')
-rw-r--r--src/types/graphql/generics.ts25
-rw-r--r--src/types/graphql/index.ts3
-rw-r--r--src/types/graphql/mutations.ts60
-rw-r--r--src/types/graphql/queries.ts143
4 files changed, 0 insertions, 231 deletions
diff --git a/src/types/graphql/generics.ts b/src/types/graphql/generics.ts
deleted file mode 100644
index dec5f10..0000000
--- a/src/types/graphql/generics.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-export type GraphQLPageInfo = {
- endCursor: string;
- hasNextPage: boolean;
- total: number;
-};
-
-export type GraphQLEdges<T> = {
- cursor: string;
- node: T;
-};
-
-export type GraphQLEdgesInput = {
- after?: string;
- before?: string;
- first?: number;
- last?: number;
-};
-
-export type GraphQLNode<T> = {
- node: T;
-};
-
-export type GraphQLNodes<T> = {
- nodes: T[];
-};
diff --git a/src/types/graphql/index.ts b/src/types/graphql/index.ts
deleted file mode 100644
index 79eb05e..0000000
--- a/src/types/graphql/index.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export * from './generics';
-export * from './mutations';
-export * from './queries';
diff --git a/src/types/graphql/mutations.ts b/src/types/graphql/mutations.ts
deleted file mode 100644
index 6ff066c..0000000
--- a/src/types/graphql/mutations.ts
+++ /dev/null
@@ -1,60 +0,0 @@
-import { sendCommentMutation, sendMailMutation } from '../../services/graphql';
-
-//===========================================================================
-// Existing mutations list
-//===========================================================================
-
-export type Mutations = typeof sendMailMutation | typeof sendCommentMutation;
-
-//===========================================================================
-// Mutations response types
-//===========================================================================
-
-export type SendCommentResponse<T> = {
- createComment: T;
-};
-
-export type SendMailResponse<T> = {
- sendEmail: T;
-};
-
-export type MutationsResponseMap<T> = {
- [sendCommentMutation]: SendCommentResponse<T>;
- [sendMailMutation]: SendMailResponse<T>;
-};
-
-export type Approved = {
- approved: boolean;
-};
-
-export type SentComment = {
- clientMutationId: string;
- success: boolean;
- comment: Approved | null;
-};
-
-//===========================================================================
-// Mutations input types
-//===========================================================================
-
-export type SendCommentInput = {
- author: string;
- authorEmail: string;
- authorUrl: string;
- clientMutationId: string;
- commentOn: number;
- content: string;
- parent?: number;
-};
-
-export type SendMailInput = {
- body: string;
- clientMutationId: string;
- replyTo: string;
- subject: string;
-};
-
-export type MutationsInputMap = {
- [sendCommentMutation]: SendCommentInput;
- [sendMailMutation]: SendMailInput;
-};
diff --git a/src/types/graphql/queries.ts b/src/types/graphql/queries.ts
deleted file mode 100644
index 83e9c67..0000000
--- a/src/types/graphql/queries.ts
+++ /dev/null
@@ -1,143 +0,0 @@
-import {
- articleBySlugQuery,
- articlesCardQuery,
- articlesEndCursorQuery,
- articlesQuery,
- articlesSlugQuery,
- commentsQuery,
- thematicBySlugQuery,
- thematicsListQuery,
- thematicsSlugQuery,
- topicBySlugQuery,
- topicsListQuery,
- topicsSlugQuery,
- totalArticlesQuery,
- totalThematicsQuery,
- totalTopicsQuery,
-} from '../../services/graphql';
-import { Slug } from '../app';
-import { RawComment } from '../raw-data';
-import {
- GraphQLEdges,
- GraphQLEdgesInput,
- GraphQLNodes,
- GraphQLPageInfo,
-} from './generics';
-
-//===========================================================================
-// Existing queries list
-//===========================================================================
-
-export type Queries =
- | typeof articlesQuery
- | typeof articleBySlugQuery
- | typeof articlesCardQuery
- | typeof articlesEndCursorQuery
- | typeof articlesSlugQuery
- | typeof commentsQuery
- | typeof thematicBySlugQuery
- | typeof thematicsListQuery
- | typeof thematicsSlugQuery
- | typeof topicBySlugQuery
- | typeof topicsListQuery
- | typeof topicsSlugQuery
- | typeof totalArticlesQuery
- | typeof totalThematicsQuery
- | typeof totalTopicsQuery;
-
-//===========================================================================
-// Queries response types
-//===========================================================================
-
-export type ArticleResponse<T> = {
- post: T;
-};
-
-export type ArticlesResponse<T> = {
- posts: T;
-};
-
-export type CommentsResponse<T> = {
- comments: T;
-};
-
-export type ThematicResponse<T> = {
- thematic: T;
-};
-
-export type ThematicsResponse<T> = {
- thematics: T;
-};
-
-export type TopicResponse<T> = {
- topic: T;
-};
-
-export type TopicsResponse<T> = {
- topics: T;
-};
-
-export type EdgesResponse<T> = {
- edges: GraphQLEdges<T>[];
- pageInfo: GraphQLPageInfo;
-};
-
-export type EndCursorResponse = {
- pageInfo: Pick<GraphQLPageInfo, 'endCursor'>;
-};
-
-export type QueriesResponseMap<T> = {
- [articleBySlugQuery]: ArticleResponse<T>;
- [articlesCardQuery]: ArticlesResponse<GraphQLNodes<T>>;
- [articlesEndCursorQuery]: ArticlesResponse<EndCursorResponse>;
- [articlesQuery]: ArticlesResponse<EdgesResponse<T>>;
- [articlesSlugQuery]: ArticlesResponse<EdgesResponse<T>>;
- [commentsQuery]: CommentsResponse<EdgesResponse<T>>;
- [thematicBySlugQuery]: ThematicResponse<T>;
- [thematicsListQuery]: ThematicsResponse<EdgesResponse<T>>;
- [thematicsSlugQuery]: ThematicsResponse<EdgesResponse<T>>;
- [topicBySlugQuery]: TopicResponse<T>;
- [topicsListQuery]: TopicsResponse<EdgesResponse<T>>;
- [topicsSlugQuery]: TopicsResponse<EdgesResponse<T>>;
- [totalArticlesQuery]: ArticlesResponse<T>;
- [totalThematicsQuery]: ThematicsResponse<T>;
- [totalTopicsQuery]: TopicsResponse<T>;
-};
-
-//===========================================================================
-// Queries input types
-//===========================================================================
-
-export type QueryEdges = Pick<GraphQLEdgesInput, 'after' | 'first'>;
-
-export type ContentId = {
- contentId: number;
-};
-
-export type Search = {
- search?: string;
-};
-
-export type QueriesInputMap = {
- [articleBySlugQuery]: Slug;
- [articlesCardQuery]: QueryEdges & Search;
- [articlesEndCursorQuery]: QueryEdges & Search;
- [articlesQuery]: QueryEdges & Search;
- [articlesSlugQuery]: QueryEdges & Search;
- [commentsQuery]: ContentId & QueryEdges;
- [thematicBySlugQuery]: Slug;
- [thematicsListQuery]: QueryEdges & Search;
- [thematicsSlugQuery]: QueryEdges & Search;
- [topicBySlugQuery]: Slug;
- [topicsListQuery]: QueryEdges & Search;
- [topicsSlugQuery]: QueryEdges & Search;
- [totalArticlesQuery]: Search;
- [totalThematicsQuery]: null;
- [totalTopicsQuery]: null;
-};
-
-export type CommentPage = {
- comments: RawComment[];
- hasNextPage: boolean;
- endCursor: string;
-};