MCPcopy
hub / github.com/msgbyte/tianji / getTelemetrySessionMetrics

Function getTelemetrySessionMetrics

src/server/model/telemetry.ts:265–297  ·  view source on GitHub ↗
(
  telemetryId: string,
  column: string,
  filters: BaseQueryFilters
)

Source from the content-addressed store, hash-verified

263}
264
265export async function getTelemetrySessionMetrics(
266 telemetryId: string,
267 column: string,
268 filters: BaseQueryFilters
269): Promise<{ x: string; y: number }[]> {
270 const { filterQuery, joinSession, params } = await parseTelemetryFilters(
271 telemetryId,
272 {
273 ...filters,
274 },
275 {
276 joinSession: SESSION_COLUMNS.includes(column),
277 }
278 );
279 const includeCountry = column === 'city' || column === 'subdivision1';
280
281 return prisma.$queryRaw`select
282 ${Prisma.sql([`"${column}"`])} x,
283 count(distinct "TelemetryEvent"."sessionId") y
284 ${includeCountry ? Prisma.sql([', country']) : Prisma.empty}
285 from "TelemetryEvent"
286 ${joinSession}
287 where "TelemetryEvent"."telemetryId" = ${telemetryId}
288 and "TelemetryEvent"."createdAt"
289 between ${params.startDate}::timestamptz and ${
290 params.endDate
291 }::timestamptz
292 ${filterQuery}
293 group by 1
294 ${includeCountry ? Prisma.sql([', 3']) : Prisma.empty}
295 order by 2 desc
296 limit 100`;
297}
298
299export async function getTelemetryPageviewMetrics(
300 telemetryId: string,

Callers 1

telemetry.tsFile · 0.85

Calls 1

parseTelemetryFiltersFunction · 0.85

Tested by

no test coverage detected