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/raw-data.ts | 111 -------------------------------------------------- 1 file changed, 111 deletions(-) delete mode 100644 src/types/raw-data.ts (limited to 'src/types/raw-data.ts') diff --git a/src/types/raw-data.ts b/src/types/raw-data.ts deleted file mode 100644 index 022016e..0000000 --- a/src/types/raw-data.ts +++ /dev/null @@ -1,111 +0,0 @@ -/** - * Types for raw data coming from GraphQL API. - */ - -import { ContentKind } from './app'; -import { GraphQLNode, GraphQLPageInfo } from './graphql/generics'; - -export type ACFPosts = { - postsInThematic?: RawThematicPreview[]; - postsInTopic?: RawTopicPreview[]; -}; - -export type ACFThematics = { - postsInThematic: RawArticle[]; -}; - -export type ACFTopics = { - officialWebsite: string; - postsInTopic: RawArticle[]; -}; - -export type ContentParts = { - afterMore: string; - beforeMore: string; -}; - -export type Info = { - wordsCount: number; -}; - -export type RawAuthor = { - description?: T extends 'comment' ? never : string; - gravatarUrl?: string; - name: string; - url?: string; -}; - -export type RawComment = { - approved: boolean; - author: GraphQLNode>; - content: string; - databaseId: number; - date: string; - parentDatabaseId: number; -}; - -export type RawCommentsPage = { - comments: RawComment[]; - hasNextPage: boolean; - endCursor: string; -}; - -export type RawCover = { - altText: string; - mediaDetails: { - width: number; - height: number; - }; - sourceUrl: string; - title?: string; -}; - -export type RawArticle = RawPage & { - acfPosts: ACFPosts; - commentCount: number | null; -}; - -export type RawArticlePreview = Pick< - RawArticle, - 'databaseId' | 'date' | 'featuredImage' | 'slug' | 'title' ->; - -export type RawPage = { - author?: GraphQLNode>; - contentParts: ContentParts; - databaseId: number; - date: string; - featuredImage: GraphQLNode | null; - info: Info; - modified: string; - seo?: RawSEO; - slug: string; - title: string; -}; - -export type RawSEO = { - metaDesc: string; - title: string; -}; - -export type RawThematic = RawPage & { - acfThematics: ACFThematics; -}; - -export type RawThematicPreview = Pick< - RawThematic, - 'databaseId' | 'featuredImage' | 'slug' | 'title' ->; - -export type RawTopic = RawPage & { - acfTopics: ACFTopics; -}; - -export type RawTopicPreview = Pick< - RawTopic, - 'databaseId' | 'featuredImage' | 'slug' | 'title' ->; - -export type TotalItems = { - pageInfo: Pick; -}; -- cgit v1.2.3