2.0.0
All checks were successful
Docker Deploy / build-and-push (push) Successful in 3m49s

This commit is contained in:
2026-01-18 14:27:47 -07:00
parent ce47de9e56
commit 5e70dd6bb8
8 changed files with 217 additions and 163 deletions

View File

@@ -41,52 +41,48 @@ if (currentOrg) {
const weekAgo = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1000);
const monthAgo = new Date(now.getTime() - 30 * 24 * 60 * 60 * 1000);
const weekEntries = await db.select()
const weekStats = await db.select({
totalDuration: sql<number>`sum(${timeEntries.endTime} - ${timeEntries.startTime})`
})
.from(timeEntries)
.where(and(
eq(timeEntries.organizationId, currentOrg.organizationId),
gte(timeEntries.startTime, weekAgo)
gte(timeEntries.startTime, weekAgo),
sql`${timeEntries.endTime} IS NOT NULL`
))
.all();
.get();
stats.totalTimeThisWeek = weekEntries.reduce((sum, e) => {
if (e.endTime) {
return sum + (e.endTime.getTime() - e.startTime.getTime());
}
return sum;
}, 0);
stats.totalTimeThisWeek = weekStats?.totalDuration || 0;
const monthEntries = await db.select()
const monthStats = await db.select({
totalDuration: sql<number>`sum(${timeEntries.endTime} - ${timeEntries.startTime})`
})
.from(timeEntries)
.where(and(
eq(timeEntries.organizationId, currentOrg.organizationId),
gte(timeEntries.startTime, monthAgo)
gte(timeEntries.startTime, monthAgo),
sql`${timeEntries.endTime} IS NOT NULL`
))
.all();
.get();
stats.totalTimeThisMonth = monthEntries.reduce((sum, e) => {
if (e.endTime) {
return sum + (e.endTime.getTime() - e.startTime.getTime());
}
return sum;
}, 0);
stats.totalTimeThisMonth = monthStats?.totalDuration || 0;
const activeCount = await db.select()
const activeCount = await db.select({ count: sql<number>`count(*)` })
.from(timeEntries)
.where(and(
eq(timeEntries.organizationId, currentOrg.organizationId),
isNull(timeEntries.endTime)
))
.all();
.get();
stats.activeTimers = activeCount.length;
stats.activeTimers = activeCount?.count || 0;
const clientCount = await db.select()
const clientCount = await db.select({ count: sql<number>`count(*)` })
.from(clients)
.where(eq(clients.organizationId, currentOrg.organizationId))
.all();
.get();
stats.totalClients = clientCount.length;
stats.totalClients = clientCount?.count || 0;
stats.recentEntries = await db.select({
entry: timeEntries,