add referrer stats to top
This commit is contained in:
parent
41226245c5
commit
ee17518abf
@ -135,6 +135,18 @@ export default {
|
|||||||
ORDER BY ncomments DESC NULLS LAST, users.created_at DESC
|
ORDER BY ncomments DESC NULLS LAST, users.created_at DESC
|
||||||
OFFSET $2
|
OFFSET $2
|
||||||
LIMIT ${LIMIT}`, decodedCursor.time, decodedCursor.offset)
|
LIMIT ${LIMIT}`, decodedCursor.time, decodedCursor.offset)
|
||||||
|
} else if (sort === 'referrals') {
|
||||||
|
users = await models.$queryRaw(`
|
||||||
|
SELECT users.*, count(*) as referrals
|
||||||
|
FROM users
|
||||||
|
JOIN "users" referree on users.id = referree."referrerId"
|
||||||
|
WHERE referree.created_at <= $1
|
||||||
|
AND NOT users."hideFromTopUsers"
|
||||||
|
${within('referree', when)}
|
||||||
|
GROUP BY users.id
|
||||||
|
ORDER BY referrals DESC NULLS LAST, users.created_at DESC
|
||||||
|
OFFSET $2
|
||||||
|
LIMIT ${LIMIT}`, decodedCursor.time, decodedCursor.offset)
|
||||||
} else {
|
} else {
|
||||||
users = await models.$queryRaw(`
|
users = await models.$queryRaw(`
|
||||||
SELECT u.id, u.name, u."photoId", floor(sum(amount)/1000) as stacked
|
SELECT u.id, u.name, u."photoId", floor(sum(amount)/1000) as stacked
|
||||||
@ -151,6 +163,12 @@ export default {
|
|||||||
FROM "Earn"
|
FROM "Earn"
|
||||||
JOIN users on users.id = "Earn"."userId"
|
JOIN users on users.id = "Earn"."userId"
|
||||||
WHERE "Earn".msats > 0 ${within('Earn', when)}
|
WHERE "Earn".msats > 0 ${within('Earn', when)}
|
||||||
|
AND NOT users."hideFromTopUsers")
|
||||||
|
UNION ALL
|
||||||
|
(SELECT users.*, "ReferralAct".msats as amount
|
||||||
|
FROM "ReferralAct"
|
||||||
|
JOIN users on users.id = "ReferralAct"."referrerId"
|
||||||
|
WHERE "ReferralAct".msats > 0 ${within('ReferralAct', when)}
|
||||||
AND NOT users."hideFromTopUsers")) u
|
AND NOT users."hideFromTopUsers")) u
|
||||||
GROUP BY u.id, u.name, u.created_at, u."photoId"
|
GROUP BY u.id, u.name, u.created_at, u."photoId"
|
||||||
ORDER BY stacked DESC NULLS LAST, created_at DESC
|
ORDER BY stacked DESC NULLS LAST, created_at DESC
|
||||||
@ -453,13 +471,18 @@ export default {
|
|||||||
const [{ stacked }] = await models.$queryRaw(`
|
const [{ stacked }] = await models.$queryRaw(`
|
||||||
SELECT sum(amount) as stacked
|
SELECT sum(amount) as stacked
|
||||||
FROM
|
FROM
|
||||||
((SELECT sum("ItemAct".msats) as amount
|
((SELECT coalesce(sum("ItemAct".msats),0) as amount
|
||||||
FROM "ItemAct"
|
FROM "ItemAct"
|
||||||
JOIN "Item" on "ItemAct"."itemId" = "Item".id
|
JOIN "Item" on "ItemAct"."itemId" = "Item".id
|
||||||
WHERE act <> 'BOOST' AND "ItemAct"."userId" <> $2 AND "Item"."userId" = $2
|
WHERE act <> 'BOOST' AND "ItemAct"."userId" <> $2 AND "Item"."userId" = $2
|
||||||
AND "ItemAct".created_at >= $1)
|
AND "ItemAct".created_at >= $1)
|
||||||
UNION ALL
|
UNION ALL
|
||||||
(SELECT sum("Earn".msats) as amount
|
(SELECT coalesce(sum("ReferralAct".msats),0) as amount
|
||||||
|
FROM "ReferralAct"
|
||||||
|
WHERE "ReferralAct".msats > 0 AND "ReferralAct"."referrerId" = $2
|
||||||
|
AND "ReferralAct".created_at >= $1)
|
||||||
|
UNION ALL
|
||||||
|
(SELECT coalesce(sum("Earn".msats), 0) as amount
|
||||||
FROM "Earn"
|
FROM "Earn"
|
||||||
WHERE "Earn".msats > 0 AND "Earn"."userId" = $2
|
WHERE "Earn".msats > 0 AND "Earn"."userId" = $2
|
||||||
AND "Earn".created_at >= $1)) u`, withinDate(when), Number(user.id))
|
AND "Earn".created_at >= $1)) u`, withinDate(when), Number(user.id))
|
||||||
@ -485,6 +508,16 @@ export default {
|
|||||||
|
|
||||||
return (msats && msatsToSats(msats)) || 0
|
return (msats && msatsToSats(msats)) || 0
|
||||||
},
|
},
|
||||||
|
referrals: async (user, { when }, { models }) => {
|
||||||
|
return await models.user.count({
|
||||||
|
where: {
|
||||||
|
referrerId: user.id,
|
||||||
|
createdAt: {
|
||||||
|
gte: withinDate(when)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
sats: async (user, args, { models, me }) => {
|
sats: async (user, args, { models, me }) => {
|
||||||
if (me?.id !== user.id) {
|
if (me?.id !== user.id) {
|
||||||
return 0
|
return 0
|
||||||
|
@ -45,6 +45,7 @@ export default gql`
|
|||||||
ncomments(when: String): Int!
|
ncomments(when: String): Int!
|
||||||
stacked(when: String): Int!
|
stacked(when: String): Int!
|
||||||
spent(when: String): Int!
|
spent(when: String): Int!
|
||||||
|
referrals(when: String): Int!
|
||||||
freePosts: Int!
|
freePosts: Int!
|
||||||
freeComments: Int!
|
freeComments: Int!
|
||||||
hasInvites: Boolean!
|
hasInvites: Boolean!
|
||||||
|
@ -41,7 +41,7 @@ export default function TopHeader ({ cat }) {
|
|||||||
onChange={(formik, e) => top({ ...formik?.values, sort: e.target.value })}
|
onChange={(formik, e) => top({ ...formik?.values, sort: e.target.value })}
|
||||||
name='sort'
|
name='sort'
|
||||||
size='sm'
|
size='sm'
|
||||||
items={cat === 'users' ? ['stacked', 'spent', 'comments', 'posts'] : ['votes', 'comments', 'sats']}
|
items={cat === 'users' ? ['stacked', 'spent', 'comments', 'posts', 'referrals'] : ['votes', 'comments', 'sats']}
|
||||||
/>
|
/>
|
||||||
for
|
for
|
||||||
<Select
|
<Select
|
||||||
|
@ -38,6 +38,7 @@ export default function UserList ({ users }) {
|
|||||||
{abbrNum(user.ncomments)} comments
|
{abbrNum(user.ncomments)} comments
|
||||||
</a>
|
</a>
|
||||||
</Link>
|
</Link>
|
||||||
|
{user.referrals > 0 && <span> \ {abbrNum(user.referrals)} referrals</span>}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -135,6 +135,7 @@ export const TOP_USERS = gql`
|
|||||||
spent(when: $when)
|
spent(when: $when)
|
||||||
ncomments(when: $when)
|
ncomments(when: $when)
|
||||||
nitems(when: $when)
|
nitems(when: $when)
|
||||||
|
referrals(when: $when)
|
||||||
}
|
}
|
||||||
cursor
|
cursor
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user