🗃️ Optimize usage queries
This commit is contained in:
@ -3,7 +3,6 @@ import { canReadTypebot } from '@/utils/api/dbRules'
|
||||
import { authenticatedProcedure } from '@/utils/server/trpc'
|
||||
import { TRPCError } from '@trpc/server'
|
||||
import { ResultWithAnswers, resultWithAnswersSchema } from 'models'
|
||||
import { isDefined } from 'utils'
|
||||
import { z } from 'zod'
|
||||
|
||||
const maxLimit = 200
|
||||
@ -44,7 +43,7 @@ export const getResultsProcedure = authenticatedProcedure
|
||||
cursor: cursor ? { id: cursor } : undefined,
|
||||
where: {
|
||||
typebot: canReadTypebot(input.typebotId, user),
|
||||
answers: { some: {} },
|
||||
hasStarted: true,
|
||||
},
|
||||
orderBy: {
|
||||
createdAt: 'desc',
|
||||
|
@ -12,26 +12,27 @@ const handler = async (req: NextApiRequest, res: NextApiResponse) => {
|
||||
if (req.method === 'GET') {
|
||||
const typebotId = req.query.typebotId as string
|
||||
|
||||
const totalViews = await prisma.result.count({
|
||||
where: {
|
||||
typebotId,
|
||||
typebot: canReadTypebot(typebotId, user),
|
||||
},
|
||||
})
|
||||
const totalStarts = await prisma.result.count({
|
||||
where: {
|
||||
typebotId,
|
||||
typebot: canReadTypebot(typebotId, user),
|
||||
answers: { some: {} },
|
||||
},
|
||||
})
|
||||
const totalCompleted = await prisma.result.count({
|
||||
where: {
|
||||
typebotId,
|
||||
typebot: canReadTypebot(typebotId, user),
|
||||
isCompleted: true,
|
||||
},
|
||||
})
|
||||
const [totalViews, totalStarts, totalCompleted] = await prisma.$transaction(
|
||||
[
|
||||
prisma.result.count({
|
||||
where: {
|
||||
typebot: canReadTypebot(typebotId, user),
|
||||
},
|
||||
}),
|
||||
prisma.result.count({
|
||||
where: {
|
||||
typebot: canReadTypebot(typebotId, user),
|
||||
hasStarted: true,
|
||||
},
|
||||
}),
|
||||
prisma.result.count({
|
||||
where: {
|
||||
typebot: canReadTypebot(typebotId, user),
|
||||
isCompleted: true,
|
||||
},
|
||||
}),
|
||||
]
|
||||
)
|
||||
const stats: Stats = {
|
||||
totalViews,
|
||||
totalStarts,
|
||||
|
Reference in New Issue
Block a user