summaryrefslogtreecommitdiffstats
path: root/src/services/graphql/post.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/services/graphql/post.ts')
-rw-r--r--src/services/graphql/post.ts150
1 files changed, 0 insertions, 150 deletions
diff --git a/src/services/graphql/post.ts b/src/services/graphql/post.ts
deleted file mode 100644
index 08411bf..0000000
--- a/src/services/graphql/post.ts
+++ /dev/null
@@ -1,150 +0,0 @@
-import {
- Article,
- FetchPostByReturn,
- GetPostByReturn,
- PostByResponse,
-} from '@ts/types/articles';
-import { gql } from 'graphql-request';
-import { getGraphQLClient } from './client';
-
-const fetchPostBySlug: FetchPostByReturn = async (slug: string) => {
- const client = getGraphQLClient();
- const query = gql`
- query PostBySlug($slug: String!) {
- postBy(slug: $slug) {
- acfPosts {
- postsInSubject {
- ... on Subject {
- id
- featuredImage {
- node {
- altText
- sourceUrl
- title
- }
- }
- slug
- title
- }
- }
- postsInThematic {
- ... on Thematic {
- id
- slug
- title
- }
- }
- }
- author {
- node {
- firstName
- lastName
- name
- }
- }
- commentCount
- comments {
- nodes {
- approved
- author {
- node {
- gravatarUrl
- name
- url
- }
- }
- commentId
- content
- date
- id
- parentDatabaseId
- parentId
- }
- }
- contentParts {
- afterMore
- beforeMore
- }
- databaseId
- date
- featuredImage {
- node {
- altText
- sourceUrl
- title
- }
- }
- modified
- seo {
- title
- metaDesc
- opengraphAuthor
- opengraphDescription
- opengraphImage {
- altText
- sourceUrl
- srcSet
- }
- opengraphModifiedTime
- opengraphPublishedTime
- opengraphPublisher
- opengraphSiteName
- opengraphTitle
- opengraphType
- opengraphUrl
- readingTime
- }
- title
- }
- }
- `;
-
- const variables = { slug };
-
- try {
- const response: PostByResponse = await client.request(query, variables);
- return response;
- } catch (error) {
- console.error(JSON.stringify(error, undefined, 2));
- process.exit(1);
- }
-};
-
-export const getPostBySlug: GetPostByReturn = async (slug: string) => {
- const rawPost = await fetchPostBySlug(slug);
-
- const author = rawPost.postBy.author.node;
- const comments = rawPost.postBy.comments.nodes.reverse().map((comment) => {
- const author = comment.author.node;
- return { ...comment, author: author, replies: [] };
- });
- const content = rawPost.postBy.contentParts.afterMore;
- const featuredImage = rawPost.postBy.featuredImage
- ? rawPost.postBy.featuredImage.node
- : null;
- const date = {
- publication: rawPost.postBy.date,
- update: rawPost.postBy.modified,
- };
- const intro = rawPost.postBy.contentParts.beforeMore;
- const subjects = rawPost.postBy.acfPosts.postsInSubject
- ? rawPost.postBy.acfPosts.postsInSubject
- : [];
- const thematics = rawPost.postBy.acfPosts.postsInThematic
- ? rawPost.postBy.acfPosts.postsInThematic
- : [];
-
- const formattedPost: Article = {
- ...rawPost.postBy,
- author,
- comments,
- content,
- featuredImage,
- date,
- intro,
- subjects,
- thematics,
- };
-
- return formattedPost;
-};