improve(dashboard): better event selector and other improvements

This commit is contained in:
Carl-Gerhard Lindesvärd
2025-06-05 11:28:06 +02:00
parent cd5dce02b8
commit f59bcfba3c
17 changed files with 470 additions and 145 deletions

View File

@@ -12,6 +12,7 @@ import {
createSqlBuilder,
db,
funnelService,
getEventMetasCached,
getSelectPropertyKey,
getSettingsForProject,
toDate,
@@ -61,15 +62,24 @@ export const chartRouter = createTRPCRouter({
}),
)
.query(async ({ input: { projectId } }) => {
const events = await chQuery<{ name: string }>(
`SELECT DISTINCT name FROM ${TABLE_NAMES.event_names_mv} WHERE project_id = ${escape(projectId)}`,
);
const [events, meta] = await Promise.all([
chQuery<{ name: string; count: number }>(
`SELECT name, count(name) as count FROM ${TABLE_NAMES.event_names_mv} WHERE project_id = ${escape(projectId)} GROUP BY name ORDER BY count DESC, name ASC`,
),
getEventMetasCached(projectId),
]);
return [
{
name: '*',
count: events.reduce((acc, event) => acc + event.count, 0),
meta: undefined,
},
...events,
...events.map((event) => ({
name: event.name,
count: event.count,
meta: meta.find((m) => m.name === event.name),
})),
];
}),

View File

@@ -10,7 +10,9 @@ import {
db,
eventService,
formatClickhouseDate,
getConversionEventNames,
getEventList,
getEventMetasCached,
getEvents,
getSettingsForProject,
overviewService,
@@ -41,6 +43,7 @@ export const eventRouter = createTRPCRouter({
)
.mutation(
async ({ input: { projectId, name, icon, color, conversion } }) => {
await getEventMetasCached.clear(projectId);
return db.eventMeta.upsert({
where: {
name_projectId: {
@@ -173,12 +176,7 @@ export const eventRouter = createTRPCRouter({
}),
)
.query(async ({ input: { projectId, cursor } }) => {
const conversions = await db.eventMeta.findMany({
where: {
projectId,
conversion: true,
},
});
const conversions = await getConversionEventNames(projectId);
if (conversions.length === 0) {
return {