From 64d3a597221622bf288726895202e947b4d2f4e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carl-Gerhard=20Lindesva=CC=88rd?= Date: Mon, 12 Aug 2024 22:34:44 +0200 Subject: [PATCH] improve event list a bit --- packages/db/src/services/event.service.ts | 18 ++++++++++++++++-- packages/db/src/services/profile.service.ts | 3 ++- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/packages/db/src/services/event.service.ts b/packages/db/src/services/event.service.ts index 326fad5a..47141757 100644 --- a/packages/db/src/services/event.service.ts +++ b/packages/db/src/services/event.service.ts @@ -343,12 +343,25 @@ export async function getEventList({ sb.offset = Math.max(0, (cursor ?? 0) * take); sb.where.projectId = `project_id = ${escape(projectId)}`; + // sb.select.id = 'id'; + // sb.select.name = 'name'; + // sb.select.deviceId = 'device_id'; + // sb.select.profileId = 'profile_id'; + // sb.select.projectId = 'project_id'; + // sb.select.createdAt = 'created_at'; + // sb.select.path = 'path'; + // sb.select.duration = 'duration'; + // sb.select.city = 'city'; + // sb.select.country = 'country'; + // sb.select.os = 'os'; + // sb.select.browser = 'browser'; + if (profileId) { sb.where.deviceId = `device_id IN (SELECT device_id as did FROM ${TABLE_NAMES.events} WHERE profile_id = ${escape(profileId)} group by did)`; } if (startDate && endDate) { - sb.where.created_at = `created_at BETWEEN '${formatClickhouseDate(startDate)}' AND '${formatClickhouseDate(endDate)}'`; + sb.where.created_at = `toDate(created_at) BETWEEN '${formatClickhouseDate(startDate)}' AND '${formatClickhouseDate(endDate)}'`; } if (events && events.length > 0) { @@ -369,7 +382,8 @@ export async function getEventList({ // sb.where.cursor = `created_at <= '${formatClickhouseDate(cursor)}'`; // } - sb.orderBy.created_at = 'created_at DESC'; + sb.orderBy.created_at = + 'toDate(created_at) DESC, created_at DESC, profile_id DESC, name DESC'; return getEvents(getSql(), { profile, meta }); } diff --git a/packages/db/src/services/profile.service.ts b/packages/db/src/services/profile.service.ts index 9cbfd5f8..9caddc04 100644 --- a/packages/db/src/services/profile.service.ts +++ b/packages/db/src/services/profile.service.ts @@ -1,3 +1,4 @@ +import { uniq } from 'ramda'; import { escape } from 'sqlstring'; import { toObject } from '@openpanel/common'; @@ -66,7 +67,7 @@ interface GetProfileListOptions { } export async function getProfiles(ids: string[]) { - const filteredIds = ids.filter((id) => id !== ''); + const filteredIds = uniq(ids.filter((id) => id !== '')); if (filteredIds.length === 0) { return [];