all repos — stealth-developers @ b0c3bb235f1bd9ba73d93518d8d8a56f21dfd289

scripts/stats.ts (view raw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
import { and, asc, isNotNull, isNull, ne, or, sql } from "drizzle-orm";
import { db, tickets } from "../src/database";

const fastestClosures = await db
	.select()
	.from(tickets)
	.where(
		and(
			isNotNull(tickets.closedAt),
			or(ne(tickets.closedBy, "reporter"), isNull(tickets.closedBy)),
		),
	)
	.orderBy(asc(sql`${tickets.closedAt} - ${tickets.createdAt}`))
	.limit(25);

const tableData = fastestClosures.map((ticket, index) => {
	const durationMs =
		// biome-ignore lint/style/noNonNullAssertion:
		new Date(ticket.closedAt!).getTime() - new Date(ticket.createdAt).getTime();

	return {
		ticket: `#${ticket.id}`,
		"closed by": ticket.closedBy,
		duration: durationMs / 1000,
	};
});

console.table(tableData);