🗃 Improve usage queries
This commit is contained in:
@ -49,7 +49,7 @@ export const getResultsProcedure = authenticatedProcedure
|
||||
cursor: cursor ? { id: cursor } : undefined,
|
||||
where: {
|
||||
typebotId: typebot.id,
|
||||
answers: { some: {} },
|
||||
hasStarted: true,
|
||||
},
|
||||
orderBy: {
|
||||
createdAt: 'desc',
|
||||
|
@ -18,23 +18,27 @@ const handler = async (req: NextApiRequest, res: NextApiResponse) => {
|
||||
|
||||
if (!typebot) return res.status(404).send({ message: 'Typebot not found' })
|
||||
|
||||
const totalViews = await prisma.result.count({
|
||||
where: {
|
||||
typebotId: typebot.id,
|
||||
},
|
||||
})
|
||||
const totalStarts = await prisma.result.count({
|
||||
where: {
|
||||
typebotId: typebot.id,
|
||||
answers: { some: {} },
|
||||
},
|
||||
})
|
||||
const totalCompleted = await prisma.result.count({
|
||||
where: {
|
||||
typebotId: typebot.id,
|
||||
isCompleted: true,
|
||||
},
|
||||
})
|
||||
const [totalViews, totalStarts, totalCompleted] = await prisma.$transaction(
|
||||
[
|
||||
prisma.result.count({
|
||||
where: {
|
||||
typebotId: typebot.id,
|
||||
},
|
||||
}),
|
||||
prisma.result.count({
|
||||
where: {
|
||||
typebotId: typebot.id,
|
||||
hasStarted: true,
|
||||
},
|
||||
}),
|
||||
prisma.result.count({
|
||||
where: {
|
||||
typebotId: typebot.id,
|
||||
isCompleted: true,
|
||||
},
|
||||
}),
|
||||
]
|
||||
)
|
||||
|
||||
const stats: Stats = {
|
||||
totalViews,
|
||||
|
@ -15,7 +15,12 @@ const handler = async (req: NextApiRequest, res: NextApiResponse) => {
|
||||
now.getMonth() + 1,
|
||||
1
|
||||
)
|
||||
const totalChatsUsed = await prisma.$transaction(async (tx) => {
|
||||
const [
|
||||
totalChatsUsed,
|
||||
{
|
||||
_sum: { storageUsed: totalStorageUsed },
|
||||
},
|
||||
] = await prisma.$transaction(async (tx) => {
|
||||
const typebots = await tx.typebot.findMany({
|
||||
where: {
|
||||
workspace: {
|
||||
@ -24,33 +29,30 @@ const handler = async (req: NextApiRequest, res: NextApiResponse) => {
|
||||
},
|
||||
},
|
||||
})
|
||||
return tx.result.count({
|
||||
where: {
|
||||
typebotId: { in: typebots.map((typebot) => typebot.id) },
|
||||
hasStarted: true,
|
||||
createdAt: {
|
||||
gte: firstDayOfMonth,
|
||||
lt: firstDayOfNextMonth,
|
||||
},
|
||||
},
|
||||
})
|
||||
})
|
||||
const {
|
||||
_sum: { storageUsed: totalStorageUsed },
|
||||
} = await prisma.answer.aggregate({
|
||||
where: {
|
||||
storageUsed: { gt: 0 },
|
||||
result: {
|
||||
typebot: {
|
||||
workspace: {
|
||||
id: workspaceId,
|
||||
members: { some: { userId: user.id } },
|
||||
|
||||
return Promise.all([
|
||||
prisma.result.count({
|
||||
where: {
|
||||
typebotId: { in: typebots.map((typebot) => typebot.id) },
|
||||
hasStarted: true,
|
||||
createdAt: {
|
||||
gte: firstDayOfMonth,
|
||||
lt: firstDayOfNextMonth,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
_sum: { storageUsed: true },
|
||||
}),
|
||||
prisma.answer.aggregate({
|
||||
where: {
|
||||
storageUsed: { gt: 0 },
|
||||
result: {
|
||||
typebotId: { in: typebots.map((typebot) => typebot.id) },
|
||||
},
|
||||
},
|
||||
_sum: { storageUsed: true },
|
||||
}),
|
||||
])
|
||||
})
|
||||
|
||||
return res.send({
|
||||
totalChatsUsed,
|
||||
totalStorageUsed,
|
||||
|
Reference in New Issue
Block a user