Fix reports crash on client churn risk query #50
@@ -279,6 +279,7 @@ reportsRouter.get("/clients", async (c) => {
|
|||||||
// Clients with no appointment in last 90 days (churn risk)
|
// Clients with no appointment in last 90 days (churn risk)
|
||||||
const ninetyDaysAgo = new Date();
|
const ninetyDaysAgo = new Date();
|
||||||
ninetyDaysAgo.setDate(ninetyDaysAgo.getDate() - 90);
|
ninetyDaysAgo.setDate(ninetyDaysAgo.getDate() - 90);
|
||||||
|
const ninetyDaysAgoISO = ninetyDaysAgo.toISOString();
|
||||||
|
|
||||||
const churnRisk = await db
|
const churnRisk = await db
|
||||||
.select({
|
.select({
|
||||||
@@ -290,7 +291,7 @@ reportsRouter.get("/clients", async (c) => {
|
|||||||
.leftJoin(appointments, eq(appointments.clientId, clients.id))
|
.leftJoin(appointments, eq(appointments.clientId, clients.id))
|
||||||
.groupBy(clients.id, clients.name)
|
.groupBy(clients.id, clients.name)
|
||||||
.having(
|
.having(
|
||||||
sql`MAX(${appointments.startTime}) < ${ninetyDaysAgo} OR MAX(${appointments.startTime}) IS NULL`
|
sql`MAX(${appointments.startTime}) < ${ninetyDaysAgoISO}::timestamptz OR MAX(${appointments.startTime}) IS NULL`
|
||||||
)
|
)
|
||||||
.orderBy(sql`MAX(${appointments.startTime}) ASC NULLS FIRST`);
|
.orderBy(sql`MAX(${appointments.startTime}) ASC NULLS FIRST`);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user