chore: minor changes

This commit is contained in:
Ephraim Atta-Duncan
2025-02-19 01:08:56 +00:00
parent 11528090a5
commit aedf101965

View File

@ -2,11 +2,12 @@ import { kyselyPrisma, sql } from '@documenso/prisma';
import { DocumentStatus, SubscriptionStatus } from '@documenso/prisma/client'; import { DocumentStatus, SubscriptionStatus } from '@documenso/prisma/client';
export type SigningVolume = { export type SigningVolume = {
id: number; id: string;
name: string; name: string;
signingVolume: number; signingVolume: number;
createdAt: Date; createdAt: Date;
planId: string; planId: string;
customerId: string;
}; };
export type GetSigningVolumeOptions = { export type GetSigningVolumeOptions = {
@ -30,18 +31,16 @@ export async function getSigningVolume({
.selectFrom('Subscription as s') .selectFrom('Subscription as s')
.leftJoin('User as u', 's.userId', 'u.id') .leftJoin('User as u', 's.userId', 'u.id')
.leftJoin('Team as t', 's.teamId', 't.id') .leftJoin('Team as t', 's.teamId', 't.id')
.leftJoin('Document as ud', (join) => .leftJoin('Document as d', (join) =>
join join
.onRef('u.id', '=', 'ud.userId') .on((eb) =>
.on('ud.status', '=', sql.lit(DocumentStatus.COMPLETED)) eb.or([
.on('ud.deletedAt', 'is', null) eb.and([eb('d.userId', '=', eb.ref('u.id')), eb('d.teamId', 'is', null)]),
.on('ud.teamId', 'is', null), eb('d.teamId', '=', eb.ref('t.id')),
) ]),
.leftJoin('Document as td', (join) => )
join .on('d.status', '=', sql.lit(DocumentStatus.COMPLETED))
.onRef('t.id', '=', 'td.teamId') .on('d.deletedAt', 'is', null),
.on('td.status', '=', sql.lit(DocumentStatus.COMPLETED))
.on('td.deletedAt', 'is', null),
) )
// @ts-expect-error - Raw SQL enum casting not properly typed by Kysely // @ts-expect-error - Raw SQL enum casting not properly typed by Kysely
.where(sql`s.status = ${SubscriptionStatus.ACTIVE}::"SubscriptionStatus"`) .where(sql`s.status = ${SubscriptionStatus.ACTIVE}::"SubscriptionStatus"`)
@ -53,13 +52,21 @@ export async function getSigningVolume({
]), ]),
) )
.select([ .select([
's.id as id',
's.createdAt as createdAt',
's.planId as planId', 's.planId as planId',
's.createdAt as createdAt',
sql<string>`COALESCE(u.customerId, t.customerId)`.as('customerId'),
sql<string>`COALESCE(u.name, t.name, u.email, 'Unknown')`.as('name'), sql<string>`COALESCE(u.name, t.name, u.email, 'Unknown')`.as('name'),
sql<number>`COUNT(DISTINCT ud.id) + COUNT(DISTINCT td.id)`.as('signingVolume'), sql<number>`COUNT(DISTINCT d.id)`.as('signingVolume'),
]) ])
.groupBy(['s.id', 'u.name', 't.name', 'u.email']); .groupBy([
's.planId',
's.createdAt',
'u.customerId',
't.customerId',
'u.name',
't.name',
'u.email',
]);
switch (sortBy) { switch (sortBy) {
case 'name': case 'name':