From f111685c5886f3e77edfd3621c98d8ac1b9bcce4 Mon Sep 17 00:00:00 2001 From: Armand Philippot Date: Fri, 24 Nov 2023 20:00:08 +0100 Subject: 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 --- src/types/graphql/queries.ts | 143 ------------------------------------------- 1 file changed, 143 deletions(-) delete mode 100644 src/types/graphql/queries.ts (limited to 'src/types/graphql/queries.ts') 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 = { - post: T; -}; - -export type ArticlesResponse = { - posts: T; -}; - -export type CommentsResponse = { - comments: T; -}; - -export type ThematicResponse = { - thematic: T; -}; - -export type ThematicsResponse = { - thematics: T; -}; - -export type TopicResponse = { - topic: T; -}; - -export type TopicsResponse = { - topics: T; -}; - -export type EdgesResponse = { - edges: GraphQLEdges[]; - pageInfo: GraphQLPageInfo; -}; - -export type EndCursorResponse = { - pageInfo: Pick; -}; - -export type QueriesResponseMap = { - [articleBySlugQuery]: ArticleResponse; - [articlesCardQuery]: ArticlesResponse>; - [articlesEndCursorQuery]: ArticlesResponse; - [articlesQuery]: ArticlesResponse>; - [articlesSlugQuery]: ArticlesResponse>; - [commentsQuery]: CommentsResponse>; - [thematicBySlugQuery]: ThematicResponse; - [thematicsListQuery]: ThematicsResponse>; - [thematicsSlugQuery]: ThematicsResponse>; - [topicBySlugQuery]: TopicResponse; - [topicsListQuery]: TopicsResponse>; - [topicsSlugQuery]: TopicsResponse>; - [totalArticlesQuery]: ArticlesResponse; - [totalThematicsQuery]: ThematicsResponse; - [totalTopicsQuery]: TopicsResponse; -}; - -//=========================================================================== -// Queries input types -//=========================================================================== - -export type QueryEdges = Pick; - -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; -}; -- cgit v1.2.3