Skip to content

Commit 00d15d5

Browse files
committed
cleanup: basket input
1 parent 334d044 commit 00d15d5

File tree

3 files changed

+130
-110
lines changed

3 files changed

+130
-110
lines changed

.vscode/settings.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"typescript.tsdk": "node_modules\\typescript\\lib"
3+
}

apps/api/src/query/builders/performance.ts

Lines changed: 81 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -1,187 +1,167 @@
1-
import type { SimpleQueryConfig } from "../types";
21
import { Analytics } from "../../types/tables";
2+
import type { SimpleQueryConfig } from "../types";
33

4-
export const PerformanceBuilders: Record<string, SimpleQueryConfig<typeof Analytics.events>> = {
4+
export const PerformanceBuilders: Record<string, SimpleQueryConfig> = {
55
performance_metrics: {
6-
table: Analytics.events,
6+
table: Analytics.web_vitals,
77
fields: [
8-
'AVG(CASE WHEN load_time > 0 THEN load_time ELSE NULL END) as avg_load_time',
9-
'AVG(CASE WHEN dom_ready_time > 0 THEN dom_ready_time ELSE NULL END) as avg_dom_ready_time',
10-
'AVG(CASE WHEN ttfb > 0 THEN ttfb ELSE NULL END) as avg_ttfb',
11-
'AVG(CASE WHEN render_time > 0 THEN render_time ELSE NULL END) as avg_render_time',
12-
'AVG(CASE WHEN fcp > 0 THEN fcp ELSE NULL END) as avg_fcp',
13-
'AVG(CASE WHEN lcp > 0 THEN lcp ELSE NULL END) as avg_lcp',
14-
'AVG(CASE WHEN cls >= 0 THEN cls ELSE NULL END) as avg_cls',
8+
'AVG(fcp) as avg_fcp',
9+
'AVG(lcp) as avg_lcp',
10+
'AVG(cls) as avg_cls',
11+
'AVG(fid) as avg_fid',
12+
'AVG(inp) as avg_inp',
1513
'COUNT(*) as total_events'
1614
],
17-
where: ['event_name = \'screen_view\''],
18-
timeField: 'time',
19-
allowedFilters: ['path', 'device_type', 'browser_name', 'country'],
15+
where: [],
16+
timeField: 'timestamp',
17+
allowedFilters: ['path', 'device_type', 'browser_name', 'country', 'region', 'os_name'],
2018
customizable: true
2119
},
2220

2321
slow_pages: {
24-
table: Analytics.events,
22+
table: Analytics.web_vitals,
2523
fields: [
26-
'path(path) as name',
24+
'path as name',
2725
'COUNT(DISTINCT anonymous_id) as visitors',
28-
'AVG(CASE WHEN load_time > 0 THEN load_time ELSE NULL END) as avg_load_time',
29-
'AVG(CASE WHEN ttfb > 0 THEN ttfb ELSE NULL END) as avg_ttfb',
30-
'AVG(CASE WHEN dom_ready_time > 0 THEN dom_ready_time ELSE NULL END) as avg_dom_ready_time',
31-
'AVG(CASE WHEN render_time > 0 THEN render_time ELSE NULL END) as avg_render_time',
32-
'AVG(CASE WHEN fcp > 0 THEN fcp ELSE NULL END) as avg_fcp',
33-
'AVG(CASE WHEN lcp > 0 THEN lcp ELSE NULL END) as avg_lcp',
34-
'AVG(CASE WHEN cls >= 0 THEN cls ELSE NULL END) as avg_cls',
26+
'AVG(fcp) as avg_fcp',
27+
'AVG(lcp) as avg_lcp',
28+
'AVG(cls) as avg_cls',
29+
'AVG(fid) as avg_fid',
30+
'AVG(inp) as avg_inp',
3531
'COUNT(*) as pageviews'
3632
],
37-
where: ['event_name = \'screen_view\'', 'path != \'\'', 'load_time > 0'],
38-
groupBy: ['path(path)'],
39-
orderBy: 'avg_load_time DESC',
33+
where: ["path != ''"],
34+
groupBy: ['path'],
35+
orderBy: 'avg_lcp DESC',
4036
limit: 100,
41-
timeField: 'time',
37+
timeField: 'timestamp',
4238
allowedFilters: ['path', 'device_type', 'browser_name'],
4339
customizable: true
4440
},
4541

4642
performance_by_device: {
47-
table: Analytics.events,
43+
table: Analytics.web_vitals,
4844
fields: [
4945
'device_type as name',
5046
'COUNT(DISTINCT anonymous_id) as visitors',
51-
'AVG(CASE WHEN load_time > 0 THEN load_time ELSE NULL END) as avg_load_time',
52-
'AVG(CASE WHEN ttfb > 0 THEN ttfb ELSE NULL END) as avg_ttfb',
53-
'AVG(CASE WHEN dom_ready_time > 0 THEN dom_ready_time ELSE NULL END) as avg_dom_ready_time',
54-
'AVG(CASE WHEN render_time > 0 THEN render_time ELSE NULL END) as avg_render_time',
55-
'AVG(CASE WHEN fcp > 0 THEN fcp ELSE NULL END) as avg_fcp',
56-
'AVG(CASE WHEN lcp > 0 THEN lcp ELSE NULL END) as avg_lcp',
57-
'AVG(CASE WHEN cls >= 0 THEN cls ELSE NULL END) as avg_cls',
47+
'AVG(fcp) as avg_fcp',
48+
'AVG(lcp) as avg_lcp',
49+
'AVG(cls) as avg_cls',
50+
'AVG(fid) as avg_fid',
51+
'AVG(inp) as avg_inp',
5852
'COUNT(*) as pageviews'
5953
],
60-
where: ['event_name = \'screen_view\'', 'device_type != \'\'', 'load_time > 0'],
54+
where: ["device_type != ''"],
6155
groupBy: ['device_type'],
62-
orderBy: 'avg_load_time DESC',
56+
orderBy: 'avg_lcp DESC',
6357
limit: 100,
64-
timeField: 'time',
58+
timeField: 'timestamp',
6559
allowedFilters: ['path', 'device_type', 'browser_name'],
6660
customizable: true
6761
},
6862

6963
performance_by_browser: {
70-
table: Analytics.events,
64+
table: Analytics.web_vitals,
7165
fields: [
72-
'CONCAT(browser_name, \' \', browser_version) as name',
66+
"CONCAT(browser_name, ' ', browser_version) as name",
7367
'COUNT(DISTINCT anonymous_id) as visitors',
74-
'AVG(CASE WHEN load_time > 0 THEN load_time ELSE NULL END) as avg_load_time',
75-
'AVG(CASE WHEN ttfb > 0 THEN ttfb ELSE NULL END) as avg_ttfb',
76-
'AVG(CASE WHEN dom_ready_time > 0 THEN dom_ready_time ELSE NULL END) as avg_dom_ready_time',
77-
'AVG(CASE WHEN render_time > 0 THEN render_time ELSE NULL END) as avg_render_time',
78-
'AVG(CASE WHEN fcp > 0 THEN fcp ELSE NULL END) as avg_fcp',
79-
'AVG(CASE WHEN lcp > 0 THEN lcp ELSE NULL END) as avg_lcp',
80-
'AVG(CASE WHEN cls >= 0 THEN cls ELSE NULL END) as avg_cls',
68+
'AVG(fcp) as avg_fcp',
69+
'AVG(lcp) as avg_lcp',
70+
'AVG(cls) as avg_cls',
71+
'AVG(fid) as avg_fid',
72+
'AVG(inp) as avg_inp',
8173
'COUNT(*) as pageviews'
8274
],
8375
where: [
84-
'event_name = \'screen_view\'',
85-
'browser_name != \'\'',
86-
'browser_version != \'\'',
87-
'browser_version IS NOT NULL',
88-
'load_time > 0'
76+
"browser_name != ''",
77+
"browser_version != ''",
78+
'browser_version IS NOT NULL'
8979
],
9080
groupBy: ['browser_name', 'browser_version'],
91-
orderBy: 'avg_load_time DESC',
81+
orderBy: 'avg_lcp DESC',
9282
limit: 100,
93-
timeField: 'time',
83+
timeField: 'timestamp',
9484
allowedFilters: ['path', 'device_type', 'browser_name'],
9585
customizable: true
9686
},
9787

9888
performance_by_country: {
99-
table: Analytics.events,
89+
table: Analytics.web_vitals,
10090
fields: [
10191
'country as name',
10292
'COUNT(DISTINCT anonymous_id) as visitors',
103-
'AVG(CASE WHEN load_time > 0 THEN load_time ELSE NULL END) as avg_load_time',
104-
'AVG(CASE WHEN ttfb > 0 THEN ttfb ELSE NULL END) as avg_ttfb',
105-
'AVG(CASE WHEN dom_ready_time > 0 THEN dom_ready_time ELSE NULL END) as avg_dom_ready_time',
106-
'AVG(CASE WHEN render_time > 0 THEN render_time ELSE NULL END) as avg_render_time',
107-
'AVG(CASE WHEN fcp > 0 THEN fcp ELSE NULL END) as avg_fcp',
108-
'AVG(CASE WHEN lcp > 0 THEN lcp ELSE NULL END) as avg_lcp',
109-
'AVG(CASE WHEN cls >= 0 THEN cls ELSE NULL END) as avg_cls',
93+
'AVG(fcp) as avg_fcp',
94+
'AVG(lcp) as avg_lcp',
95+
'AVG(cls) as avg_cls',
96+
'AVG(fid) as avg_fid',
97+
'AVG(inp) as avg_inp',
11098
'COUNT(*) as pageviews'
11199
],
112-
where: ['event_name = \'screen_view\'', 'country != \'\'', 'load_time > 0'],
100+
where: ["country != ''"],
113101
groupBy: ['country'],
114-
orderBy: 'avg_load_time DESC',
102+
orderBy: 'avg_lcp DESC',
115103
limit: 100,
116-
timeField: 'time',
104+
timeField: 'timestamp',
117105
allowedFilters: ['path', 'device_type', 'browser_name'],
118-
customizable: true,
119-
plugins: { normalizeGeo: true, deduplicateGeo: true }
106+
customizable: true
120107
},
121108

122109
performance_by_os: {
123-
table: Analytics.events,
110+
table: Analytics.web_vitals,
124111
fields: [
125112
'os_name as name',
126113
'COUNT(DISTINCT anonymous_id) as visitors',
127-
'AVG(CASE WHEN load_time > 0 THEN load_time ELSE NULL END) as avg_load_time',
128-
'AVG(CASE WHEN ttfb > 0 THEN ttfb ELSE NULL END) as avg_ttfb',
129-
'AVG(CASE WHEN dom_ready_time > 0 THEN dom_ready_time ELSE NULL END) as avg_dom_ready_time',
130-
'AVG(CASE WHEN render_time > 0 THEN render_time ELSE NULL END) as avg_render_time',
131-
'AVG(CASE WHEN fcp > 0 THEN fcp ELSE NULL END) as avg_fcp',
132-
'AVG(CASE WHEN lcp > 0 THEN lcp ELSE NULL END) as avg_lcp',
133-
'AVG(CASE WHEN cls >= 0 THEN cls ELSE NULL END) as avg_cls',
114+
'AVG(fcp) as avg_fcp',
115+
'AVG(lcp) as avg_lcp',
116+
'AVG(cls) as avg_cls',
117+
'AVG(fid) as avg_fid',
118+
'AVG(inp) as avg_inp',
134119
'COUNT(*) as pageviews'
135120
],
136-
where: ['event_name = \'screen_view\'', 'os_name != \'\'', 'load_time > 0'],
121+
where: ["os_name != ''"],
137122
groupBy: ['os_name'],
138-
orderBy: 'avg_load_time DESC',
123+
orderBy: 'avg_lcp DESC',
139124
limit: 100,
140-
timeField: 'time',
125+
timeField: 'timestamp',
141126
allowedFilters: ['path', 'device_type', 'browser_name'],
142127
customizable: true
143128
},
144129

145130
performance_by_region: {
146-
table: Analytics.events,
131+
table: Analytics.web_vitals,
147132
fields: [
148-
'CONCAT(region, \', \', country) as name',
133+
"CONCAT(region, ', ', country) as name",
149134
'COUNT(DISTINCT anonymous_id) as visitors',
150-
'AVG(CASE WHEN load_time > 0 THEN load_time ELSE NULL END) as avg_load_time',
151-
'AVG(CASE WHEN ttfb > 0 THEN ttfb ELSE NULL END) as avg_ttfb',
152-
'AVG(CASE WHEN dom_ready_time > 0 THEN dom_ready_time ELSE NULL END) as avg_dom_ready_time',
153-
'AVG(CASE WHEN render_time > 0 THEN render_time ELSE NULL END) as avg_render_time',
154-
'AVG(CASE WHEN fcp > 0 THEN fcp ELSE NULL END) as avg_fcp',
155-
'AVG(CASE WHEN lcp > 0 THEN lcp ELSE NULL END) as avg_lcp',
156-
'AVG(CASE WHEN cls >= 0 THEN cls ELSE NULL END) as avg_cls',
135+
'AVG(fcp) as avg_fcp',
136+
'AVG(lcp) as avg_lcp',
137+
'AVG(cls) as avg_cls',
138+
'AVG(fid) as avg_fid',
139+
'AVG(inp) as avg_inp',
157140
'COUNT(*) as pageviews'
158141
],
159-
where: ['event_name = \'screen_view\'', 'region != \'\'', 'load_time > 0'],
142+
where: ["region != ''"],
160143
groupBy: ['region', 'country'],
161-
orderBy: 'avg_load_time DESC',
144+
orderBy: 'avg_lcp DESC',
162145
limit: 100,
163-
timeField: 'time',
146+
timeField: 'timestamp',
164147
allowedFilters: ['path', 'device_type', 'browser_name'],
165148
customizable: true
166149
},
167150

168151
performance_time_series: {
169-
table: Analytics.events,
152+
table: Analytics.web_vitals,
170153
fields: [
171-
'toDate(time) as date',
172-
'AVG(CASE WHEN load_time > 0 THEN load_time ELSE NULL END) as avg_load_time',
173-
'AVG(CASE WHEN ttfb > 0 THEN ttfb ELSE NULL END) as avg_ttfb',
174-
'AVG(CASE WHEN dom_ready_time > 0 THEN dom_ready_time ELSE NULL END) as avg_dom_ready_time',
175-
'AVG(CASE WHEN render_time > 0 THEN render_time ELSE NULL END) as avg_render_time',
176-
'AVG(CASE WHEN fcp > 0 THEN fcp ELSE NULL END) as avg_fcp',
177-
'AVG(CASE WHEN lcp > 0 THEN lcp ELSE NULL END) as avg_lcp',
178-
'AVG(CASE WHEN cls >= 0 THEN cls ELSE NULL END) as avg_cls',
154+
'toDate(timestamp) as date',
155+
'AVG(fcp) as avg_fcp',
156+
'AVG(lcp) as avg_lcp',
157+
'AVG(cls) as avg_cls',
158+
'AVG(fid) as avg_fid',
159+
'AVG(inp) as avg_inp',
179160
'COUNT(*) as pageviews'
180161
],
181-
where: ['event_name = \'screen_view\''],
182-
groupBy: ['toDate(time)'],
162+
groupBy: ['toDate(timestamp)'],
183163
orderBy: 'date ASC',
184-
timeField: 'time',
164+
timeField: 'timestamp',
185165
allowedFilters: ['path', 'device_type', 'browser_name'],
186166
customizable: true
187167
}

0 commit comments

Comments
 (0)