diff --git a/api/resolvers/item.js b/api/resolvers/item.js
index b79cd34a..19c44bc1 100644
--- a/api/resolvers/item.js
+++ b/api/resolvers/item.js
@@ -1,5 +1,21 @@
import { UserInputError, AuthenticationError } from 'apollo-server-micro'
+async function comments (models, id) {
+ const flat = await models.$queryRaw(`
+ WITH RECURSIVE base AS (
+ ${SELECT}, ARRAY[row_number() OVER (${ORDER_BY_SATS}, "Item".path)] AS sort_path
+ FROM "Item"
+ ${LEFT_JOIN_SATS}
+ WHERE "parentId" = ${id}
+ UNION ALL
+ ${SELECT}, p.sort_path || row_number() OVER (${ORDER_BY_SATS}, "Item".path)
+ FROM base p
+ JOIN "Item" ON ltree2text(subpath("Item"."path", 0, -1)) = p."path"
+ ${LEFT_JOIN_SATS})
+ SELECT * FROM base ORDER BY sort_path`)
+ return nestComments(flat, id)[0]
+}
+
export default {
Query: {
items: async (parent, args, { models }) => {
@@ -18,10 +34,13 @@ export default {
ORDER BY created_at DESC`)
},
item: async (parent, { id }, { models }) => {
- return (await models.$queryRaw(`
+ const item = (await models.$queryRaw(`
${SELECT}
FROM "Item"
WHERE id = ${id}`))[0]
+
+ item.comments = comments(models, id)
+ return item
},
userItems: async (parent, { userId }, { models }) => {
return await models.$queryRaw(`
@@ -126,22 +145,6 @@ export default {
WHERE path <@ text2ltree(${item.path}) AND id != ${item.id}`
return count
},
- comments: async (item, args, { models }) => {
- const flat = await models.$queryRaw(`
- WITH RECURSIVE base AS (
- ${SELECT}, ARRAY[row_number() OVER (${ORDER_BY_SATS}, "Item".path)] AS sort_path
- FROM "Item"
- ${LEFT_JOIN_SATS}
- WHERE "parentId" = ${item.id}
- UNION ALL
- ${SELECT}, p.sort_path || row_number() OVER (${ORDER_BY_SATS}, "Item".path)
- FROM base p
- JOIN "Item" ON ltree2text(subpath("Item"."path", 0, -1)) = p."path"
- ${LEFT_JOIN_SATS})
- SELECT * FROM base ORDER BY sort_path`)
- const comments = nestComments(flat, item.id)[0]
- return comments
- },
sats: async (item, args, { models }) => {
const { sum: { sats } } = await models.vote.aggregate({
sum: {
diff --git a/components/header.js b/components/header.js
index 8e0ee8f5..df00d546 100644
--- a/components/header.js
+++ b/components/header.js
@@ -22,7 +22,7 @@ export default function Header () {
profile
- logout
+ logout
)
} else {
@@ -34,7 +34,7 @@ export default function Header () {
<>
-