stacker.news/fragments/items.js

269 lines
4.5 KiB
JavaScript

import { gql } from '@apollo/client'
import { COMMENTS } from './comments'
export const ITEM_FIELDS = gql`
fragment ItemFields on Item {
id
parentId
createdAt
deletedAt
title
url
user {
name
streak
id
}
position
sats
upvotes
boost
bounty
bountyPaidTo
path
meSats
meDontLike
outlawed
freebie
ncomments
commentSats
lastCommentAt
maxBid
isJob
company
location
remote
sub {
name
baseCost
}
pollCost
status
uploadId
mine
}`
export const ITEM_FULL_FIELDS = gql`
${ITEM_FIELDS}
fragment ItemFullFields on Item {
...ItemFields
text
fwdUser {
name
streak
id
}
root {
id
title
bounty
bountyPaidTo
sub {
name
}
user {
name
streak
id
}
}
}`
export const ITEM_OTS_FIELDS = gql`
fragment ItemOtsFields on Item {
id
title
text
url
parentOtsHash
otsHash
deletedAt
}`
export const ITEM_OTS = gql`
${ITEM_OTS_FIELDS}
query Item($id: ID!) {
item(id: $id) {
...ItemOtsFields
}
}`
export const ITEMS = gql`
${ITEM_FIELDS}
query items($sub: String, $sort: String, $type: String, $cursor: String, $name: String, $within: String) {
items(sub: $sub, sort: $sort, type: $type, cursor: $cursor, name: $name, within: $within) {
cursor
items {
...ItemFields
},
pins {
...ItemFields
}
}
}`
export const TOP_ITEMS = gql`
${ITEM_FIELDS}
query topItems($sort: String, $cursor: String, $when: String) {
topItems(sort: $sort, cursor: $cursor, when: $when) {
cursor
items {
...ItemFields
},
pins {
...ItemFields
}
}
}`
export const OUTLAWED_ITEMS = gql`
${ITEM_FULL_FIELDS}
query outlawedItems($cursor: String) {
outlawedItems(cursor: $cursor) {
cursor
items {
...ItemFullFields
}
}
}`
export const BORDERLAND_ITEMS = gql`
${ITEM_FULL_FIELDS}
query borderlandItems($cursor: String) {
borderlandItems(cursor: $cursor) {
cursor
items {
...ItemFullFields
}
}
}`
export const FREEBIE_ITEMS = gql`
${ITEM_FULL_FIELDS}
query freebieItems($cursor: String) {
freebieItems(cursor: $cursor) {
cursor
items {
...ItemFullFields
}
}
}`
export const POLL_FIELDS = gql`
fragment PollFields on Item {
poll {
meVoted
count
options {
id
option
count
meVoted
}
}
}`
export const ITEM = gql`
${ITEM_FULL_FIELDS}
${POLL_FIELDS}
query Item($id: ID!) {
item(id: $id) {
...ItemFullFields
...PollFields
}
}`
export const COMMENTS_QUERY = gql`
${COMMENTS}
query Comments($id: ID!, $sort: String) {
comments(id: $id, sort: $sort) {
...CommentsRecursive
}
}
`
export const ITEM_FULL = gql`
${ITEM_FULL_FIELDS}
${POLL_FIELDS}
${COMMENTS}
query Item($id: ID!) {
item(id: $id) {
...ItemFullFields
prior
...PollFields
comments {
...CommentsRecursive
}
}
}`
export const ITEM_WITH_COMMENTS = gql`
${ITEM_FULL_FIELDS}
${COMMENTS}
fragment ItemWithComments on Item {
...ItemFullFields
comments {
...CommentsRecursive
}
}`
export const BOUNTY_ITEMS_BY_USER_NAME = gql`
${ITEM_FIELDS}
query getBountiesByUserName($name: String!) {
getBountiesByUserName(name: $name) {
cursor
items {
...ItemFields
}
}
}`
export const ITEM_SEARCH = gql`
${ITEM_FULL_FIELDS}
query Search($q: String, $cursor: String, $sort: String, $what: String, $when: String) {
search(q: $q, cursor: $cursor, sort: $sort, what: $what, when: $when) {
cursor
items {
...ItemFullFields
searchTitle
searchText
}
}
}
`
export const RELATED_ITEMS = gql`
${ITEM_FIELDS}
query Related($title: String, $id: ID, $cursor: String, $limit: Int) {
related(title: $title, id: $id, cursor: $cursor, limit: $limit) {
cursor
items {
...ItemFields
}
}
}
`
export const RELATED_ITEMS_WITH_ITEM = gql`
${ITEM_FIELDS}
query Related($title: String, $id: ID, $cursor: String, $limit: Int) {
item(id: $id) {
...ItemFields
}
related(title: $title, id: $id, cursor: $cursor, limit: $limit) {
cursor
items {
...ItemFields
}
}
}
`