remove extra queries
This commit is contained in:
parent
3a9994a9a6
commit
36ddb25b46
|
@ -12,7 +12,7 @@ import { msatsToSats } from '../../lib/format'
|
|||
import { parse } from 'tldts'
|
||||
import uu from 'url-unshort'
|
||||
|
||||
async function comments (me, models, id, sort) {
|
||||
async function comments (me, models, id, sort, root) {
|
||||
let orderBy
|
||||
switch (sort) {
|
||||
case 'top':
|
||||
|
@ -39,7 +39,7 @@ async function comments (me, models, id, sort) {
|
|||
WHERE true
|
||||
${await filterClause(me, models)})
|
||||
SELECT * FROM base ORDER BY sort_path`, Number(id))
|
||||
return nestComments(flat, id)[0]
|
||||
return nestComments(flat, id, root)[0]
|
||||
}
|
||||
|
||||
export async function getItem (parent, { id }, { me, models }) {
|
||||
|
@ -871,7 +871,7 @@ export default {
|
|||
if (item.comments) {
|
||||
return item.comments
|
||||
}
|
||||
return comments(me, models, item.id, 'hot')
|
||||
return comments(me, models, item.id, 'hot', item)
|
||||
},
|
||||
upvotes: async (item, args, { models }) => {
|
||||
const [{ count }] = await models.$queryRaw(`
|
||||
|
@ -946,6 +946,9 @@ export default {
|
|||
if (!item.rootId) {
|
||||
return null
|
||||
}
|
||||
if (item.root) {
|
||||
return item.root
|
||||
}
|
||||
return await models.item.findUnique({ where: { id: item.rootId } })
|
||||
},
|
||||
parent: async (item, args, { models }) => {
|
||||
|
@ -1082,10 +1085,11 @@ const createItem = async (parent, { title, url, text, boost, forward, bounty, pa
|
|||
return item
|
||||
}
|
||||
|
||||
function nestComments (flat, parentId) {
|
||||
function nestComments (flat, parentId, root) {
|
||||
const result = []
|
||||
let added = 0
|
||||
for (let i = 0; i < flat.length;) {
|
||||
flat[i].root = root
|
||||
if (!flat[i].comments) flat[i].comments = []
|
||||
if (Number(flat[i].parentId) === Number(parentId)) {
|
||||
result.push(flat[i])
|
||||
|
@ -1093,7 +1097,7 @@ function nestComments (flat, parentId) {
|
|||
i++
|
||||
} else if (result.length > 0) {
|
||||
const item = result[result.length - 1]
|
||||
const [nested, newAdded] = nestComments(flat.slice(i), item.id)
|
||||
const [nested, newAdded] = nestComments(flat.slice(i), item.id, root)
|
||||
if (newAdded === 0) {
|
||||
break
|
||||
}
|
||||
|
|
|
@ -14,11 +14,7 @@ export const ITEM_FIELDS = gql`
|
|||
streak
|
||||
id
|
||||
}
|
||||
fwdUser {
|
||||
name
|
||||
streak
|
||||
id
|
||||
}
|
||||
position
|
||||
sats
|
||||
upvotes
|
||||
boost
|
||||
|
@ -45,9 +41,23 @@ export const ITEM_FIELDS = gql`
|
|||
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
|
||||
}
|
||||
|
@ -87,11 +97,9 @@ export const ITEMS = gql`
|
|||
cursor
|
||||
items {
|
||||
...ItemFields
|
||||
position
|
||||
},
|
||||
pins {
|
||||
...ItemFields
|
||||
position
|
||||
}
|
||||
}
|
||||
}`
|
||||
|
@ -104,50 +112,45 @@ export const TOP_ITEMS = gql`
|
|||
cursor
|
||||
items {
|
||||
...ItemFields
|
||||
position
|
||||
},
|
||||
pins {
|
||||
...ItemFields
|
||||
position
|
||||
}
|
||||
}
|
||||
}`
|
||||
|
||||
export const OUTLAWED_ITEMS = gql`
|
||||
${ITEM_FIELDS}
|
||||
${ITEM_FULL_FIELDS}
|
||||
|
||||
query outlawedItems($cursor: String) {
|
||||
outlawedItems(cursor: $cursor) {
|
||||
cursor
|
||||
items {
|
||||
...ItemFields
|
||||
text
|
||||
...ItemFullFields
|
||||
}
|
||||
}
|
||||
}`
|
||||
|
||||
export const BORDERLAND_ITEMS = gql`
|
||||
${ITEM_FIELDS}
|
||||
${ITEM_FULL_FIELDS}
|
||||
|
||||
query borderlandItems($cursor: String) {
|
||||
borderlandItems(cursor: $cursor) {
|
||||
cursor
|
||||
items {
|
||||
...ItemFields
|
||||
text
|
||||
...ItemFullFields
|
||||
}
|
||||
}
|
||||
}`
|
||||
|
||||
export const FREEBIE_ITEMS = gql`
|
||||
${ITEM_FIELDS}
|
||||
${ITEM_FULL_FIELDS}
|
||||
|
||||
query freebieItems($cursor: String) {
|
||||
freebieItems(cursor: $cursor) {
|
||||
cursor
|
||||
items {
|
||||
...ItemFields
|
||||
text
|
||||
...ItemFullFields
|
||||
}
|
||||
}
|
||||
}`
|
||||
|
@ -167,14 +170,13 @@ export const POLL_FIELDS = gql`
|
|||
}`
|
||||
|
||||
export const ITEM = gql`
|
||||
${ITEM_FIELDS}
|
||||
${ITEM_FULL_FIELDS}
|
||||
${POLL_FIELDS}
|
||||
|
||||
query Item($id: ID!) {
|
||||
item(id: $id) {
|
||||
...ItemFields
|
||||
...ItemFullFields
|
||||
...PollFields
|
||||
text
|
||||
}
|
||||
}`
|
||||
|
||||
|
@ -189,15 +191,13 @@ export const COMMENTS_QUERY = gql`
|
|||
`
|
||||
|
||||
export const ITEM_FULL = gql`
|
||||
${ITEM_FIELDS}
|
||||
${ITEM_FULL_FIELDS}
|
||||
${POLL_FIELDS}
|
||||
${COMMENTS}
|
||||
query Item($id: ID!) {
|
||||
item(id: $id) {
|
||||
...ItemFields
|
||||
...ItemFullFields
|
||||
prior
|
||||
position
|
||||
text
|
||||
...PollFields
|
||||
comments {
|
||||
...CommentsRecursive
|
||||
|
@ -206,11 +206,10 @@ export const ITEM_FULL = gql`
|
|||
}`
|
||||
|
||||
export const ITEM_WITH_COMMENTS = gql`
|
||||
${ITEM_FIELDS}
|
||||
${ITEM_FULL_FIELDS}
|
||||
${COMMENTS}
|
||||
fragment ItemWithComments on Item {
|
||||
...ItemFields
|
||||
text
|
||||
...ItemFullFields
|
||||
comments {
|
||||
...CommentsRecursive
|
||||
}
|
||||
|
@ -228,13 +227,12 @@ export const BOUNTY_ITEMS_BY_USER_NAME = gql`
|
|||
}`
|
||||
|
||||
export const ITEM_SEARCH = gql`
|
||||
${ITEM_FIELDS}
|
||||
${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 {
|
||||
...ItemFields
|
||||
text
|
||||
...ItemFullFields
|
||||
searchTitle
|
||||
searchText
|
||||
}
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
import { gql } from '@apollo/client'
|
||||
import { ITEM_FIELDS } from './items'
|
||||
import { ITEM_FULL_FIELDS } from './items'
|
||||
import { INVITE_FIELDS } from './invites'
|
||||
|
||||
export const NOTIFICATIONS = gql`
|
||||
${ITEM_FIELDS}
|
||||
${ITEM_FULL_FIELDS}
|
||||
${INVITE_FIELDS}
|
||||
|
||||
query Notifications($cursor: String, $inc: String) {
|
||||
|
@ -16,7 +16,7 @@ export const NOTIFICATIONS = gql`
|
|||
sortTime
|
||||
mention
|
||||
item {
|
||||
...ItemFields
|
||||
...ItemFullFields
|
||||
text
|
||||
}
|
||||
}
|
||||
|
@ -24,7 +24,7 @@ export const NOTIFICATIONS = gql`
|
|||
sortTime
|
||||
earnedSats
|
||||
item {
|
||||
...ItemFields
|
||||
...ItemFullFields
|
||||
text
|
||||
}
|
||||
}
|
||||
|
@ -48,7 +48,7 @@ export const NOTIFICATIONS = gql`
|
|||
... on Reply {
|
||||
sortTime
|
||||
item {
|
||||
...ItemFields
|
||||
...ItemFullFields
|
||||
text
|
||||
}
|
||||
}
|
||||
|
|
|
@ -189,11 +189,9 @@ export const USER_WITH_POSTS = gql`
|
|||
cursor
|
||||
items {
|
||||
...ItemFields
|
||||
position
|
||||
}
|
||||
pins {
|
||||
...ItemFields
|
||||
position
|
||||
}
|
||||
}
|
||||
}`
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import { gql } from '@apollo/client'
|
||||
import { ITEM_FIELDS } from './items'
|
||||
import { ITEM_FULL_FIELDS } from './items'
|
||||
import { USER_FIELDS } from './users'
|
||||
|
||||
export const INVOICE = gql`
|
||||
|
@ -27,7 +27,7 @@ export const WITHDRAWL = gql`
|
|||
}`
|
||||
|
||||
export const WALLET_HISTORY = gql`
|
||||
${ITEM_FIELDS}
|
||||
${ITEM_FULL_FIELDS}
|
||||
${USER_FIELDS}
|
||||
|
||||
query WalletHistory($cursor: String, $inc: String) {
|
||||
|
@ -46,8 +46,7 @@ export const WALLET_HISTORY = gql`
|
|||
type
|
||||
description
|
||||
item {
|
||||
...ItemFields
|
||||
text
|
||||
...ItemFullFields
|
||||
}
|
||||
}
|
||||
cursor
|
||||
|
|
Loading…
Reference in New Issue