queries.pyā¢5.92 kB
"""
GraphQL Queries for Product Hunt API
Contains all GraphQL queries used by the Product Hunt MCP server.
"""
# Post queries
POST_QUERY = """
query Post($id: ID, $slug: String) {
  post(id: $id, slug: $slug) {
    id
    name
    slug
    tagline
    description
    url
    votesCount
    commentsCount
    createdAt
    featuredAt
    website
    thumbnail {
      url
      videoUrl
    }
    user {
      id
      name
      username
      headline
      profileImage
      url
      twitterUsername
    }
    topics {
      edges {
        node {
          id
          name
          slug
        }
      }
    }
    media {
      url
      videoUrl
      type
    }
    makers {
      id
      name
      username
      profileImage
      url
    }
  }
}
"""
POSTS_QUERY = """
query Posts($first: Int, $after: String, $order: PostsOrder, $topic: String, $featured: Boolean, $url: String, $twitterUrl: String, $postedBefore: DateTime, $postedAfter: DateTime) {
  posts(first: $first, after: $after, order: $order, topic: $topic, featured: $featured, url: $url, twitterUrl: $twitterUrl, postedBefore: $postedBefore, postedAfter: $postedAfter) {
    edges {
      node {
        id
        name
        slug
        tagline
        description
        url
        votesCount
        commentsCount
        createdAt
        featuredAt
        website
        thumbnail {
          url
          videoUrl
        }
        user {
          id
          name
          username
          headline
          profileImage
          url
          twitterUsername
        }
        topics {
          edges {
            node {
              id
              name
              slug
            }
          }
        }
        makers {
          id
          name
          username
          profileImage
          url
        }
      }
    }
    pageInfo {
      endCursor
      hasNextPage
    }
  }
}
"""
# Comment queries
COMMENT_QUERY = """
query Comment($id: ID!) {
  comment(id: $id) {
    id
    body
    createdAt
    votesCount
    user {
      id
      name
      username
      headline
      profileImage
    }
  }
}
"""
COMMENTS_QUERY = """
query PostComments($id: ID, $slug: String, $first: Int, $after: String, $order: CommentsOrder) {
  post(id: $id, slug: $slug) {
    id
    name
    comments(first: $first, after: $after, order: $order) {
      edges {
        node {
          id
          body
          createdAt
          votesCount
          user {
            id
            name
            username
            headline
            profileImage
          }
        }
      }
      pageInfo {
        endCursor
        hasNextPage
      }
    }
  }
}
"""
# Collection queries
COLLECTION_QUERY = """
query Collection($id: ID, $slug: String) {
  collection(id: $id, slug: $slug) {
    id
    name
    description
    tagline
    posts {
      edges {
        node {
          id
          name
          slug
          tagline
          votesCount
          commentsCount
        }
      }
    }
  }
}
"""
COLLECTIONS_QUERY = """
query Collections($first: Int, $after: String, $order: CollectionsOrder, $featured: Boolean, $userId: ID, $postId: ID) {
  collections(first: $first, after: $after, order: $order, featured: $featured, userId: $userId, postId: $postId) {
    edges {
      node {
        id
        name
        description
        tagline
        followersCount
        user {
          id
          name
          username
          headline
          profileImage
        }
      }
    }
    pageInfo {
      endCursor
      hasNextPage
    }
  }
}
"""
# Topic queries
TOPIC_QUERY = """
query Topic($id: ID, $slug: String) {
  topic(id: $id, slug: $slug) {
    id
    name
    slug
    description
    followersCount
    postsCount
    image
  }
}
"""
TOPICS_QUERY = """
query Topics($first: Int, $after: String, $order: TopicsOrder, $query: String, $followedByUserid: ID) {
  topics(first: $first, after: $after, order: $order, query: $query, followedByUserid: $followedByUserid) {
    edges {
      node {
        id
        name
        slug
        description
        followersCount
        postsCount
        image
      }
    }
    pageInfo {
      endCursor
      hasNextPage
    }
  }
}
"""
# User queries
USER_QUERY = """
query User($id: ID, $username: String) {
  user(id: $id, username: $username) {
    id
    name
    username
    headline
    createdAt
    twitterUsername
    websiteUrl
    profileImage
    coverImage
    isMaker
    isFollowing
    url
  }
}
"""
USER_POSTS_QUERY = """
query UserPosts($id: ID, $username: String, $first: Int, $after: String) {
  user(id: $id, username: $username) {
    id
    madePosts(first: $first, after: $after) {
      edges {
        node {
          id
          name
          slug
          tagline
          votesCount
          commentsCount
          createdAt
          featuredAt
          thumbnail {
            url
          }
        }
      }
      pageInfo {
        endCursor
        hasNextPage
      }
    }
  }
}
"""
USER_VOTED_POSTS_QUERY = """
query UserVotedPosts($id: ID, $username: String, $first: Int, $after: String) {
  user(id: $id, username: $username) {
    id
    votedPosts(first: $first, after: $after) {
      edges {
        node {
          id
          name
          slug
          tagline
          votesCount
          commentsCount
          createdAt
          featuredAt
          thumbnail {
            url
          }
        }
      }
      pageInfo {
        endCursor
        hasNextPage
      }
    }
  }
}
"""
VIEWER_QUERY = """
query {
  viewer {
    user {
      id
      name
      username
      headline
      coverImage
      createdAt
      isFollowing
      isMaker
      isViewer
      madePosts {
        totalCount
      }
      profileImage
      twitterUsername
      url
      websiteUrl
      votedPosts {
        totalCount
      }
    }
  }
}
"""