@@ -248,44 +248,56 @@ def fullDesktopQuery(
248248 params .bid_afk = escape_doublequote (params .bid_afk )
249249 params .bid_browsers = [escape_doublequote (bucket ) for bucket in params .bid_browsers ]
250250
251- return (
252- f"""
253- { canonicalEvents (params )}
254- title_events = sort_by_duration(merge_events_by_keys(events, ["app", "title"]));
255- app_events = sort_by_duration(merge_events_by_keys(title_events, ["app"]));
256- cat_events = sort_by_duration(merge_events_by_keys(events, ["$category"]));
257- app_events = limit_events(app_events, { default_limit } );
258- title_events = limit_events(title_events, { default_limit } );
259- duration = sum_durations(events);
260- """ # Browser events are retrieved in canonicalQuery
261- + f"""
262- browser_events = split_url_events(browser_events);
263- browser_urls = merge_events_by_keys(browser_events, ["url"]);
264- browser_urls = sort_by_duration(browser_urls);
265- browser_urls = limit_events(browser_urls, { default_limit } );
266- browser_domains = merge_events_by_keys(browser_events, ["$domain"]);
267- browser_domains = sort_by_duration(browser_domains);
268- browser_domains = limit_events(browser_domains, { default_limit } );
269- browser_duration = sum_durations(browser_events);
270- """
271- + """
272- RETURN = {
273- "events": events,
274- "window": {
275- "app_events": app_events,
276- "title_events": title_events,
277- "cat_events": cat_events,
278- "active_events": not_afk,
279- "duration": duration
280- },
281- "browser": {
282- "domains": browser_domains,
283- "urls": browser_urls,
284- "duration": browser_duration
285- }
286- };
287- """
288- )
251+ # Build the base query
252+ query = f"""
253+ { canonicalEvents (params )}
254+ title_events = sort_by_duration(merge_events_by_keys(events, ["app", "title"]));
255+ app_events = sort_by_duration(merge_events_by_keys(title_events, ["app"]));
256+ cat_events = sort_by_duration(merge_events_by_keys(events, ["$category"]));
257+ app_events = limit_events(app_events, { default_limit } );
258+ title_events = limit_events(title_events, { default_limit } );
259+ duration = sum_durations(events);
260+ """
261+
262+ # Add browser-related query parts if browser buckets exist
263+ if params .bid_browsers :
264+ query += """
265+ browser_events = split_url_events(browser_events);
266+ browser_urls = merge_events_by_keys(browser_events, ["url"]);
267+ browser_urls = sort_by_duration(browser_urls);
268+ browser_urls = limit_events(browser_urls, {default_limit});
269+ browser_domains = merge_events_by_keys(browser_events, ["$domain"]);
270+ browser_domains = sort_by_duration(browser_domains);
271+ browser_domains = limit_events(browser_domains, {default_limit});
272+ browser_duration = sum_durations(browser_events);
273+ """
274+ else :
275+ query += """
276+ browser_events = [];
277+ browser_urls = [];
278+ browser_domains = [];
279+ browser_duration = 0;
280+ """
281+
282+ # Add the return statement
283+ query += """
284+ RETURN = {
285+ "events": events,
286+ "window": {
287+ "app_events": app_events,
288+ "title_events": title_events,
289+ "cat_events": cat_events,
290+ "active_events": not_afk,
291+ "duration": duration
292+ },
293+ "browser": {
294+ "domains": browser_domains,
295+ "urls": browser_urls,
296+ "duration": browser_duration
297+ }
298+ };
299+ """
300+ return query
289301
290302
291303def test_fullDesktopQuery ():
0 commit comments