|
36 | 36 | //! ``` |
37 | 37 |
|
38 | 38 | use crate::classes::{CategoryId, CategorySpec}; |
39 | | -use crate::AwClient; |
40 | 39 | use serde::{Deserialize, Serialize}; |
41 | 40 |
|
42 | 41 | /// Browser application names mapped by browser type |
@@ -286,169 +285,26 @@ browser_events = sort_by_timestamp(browser_events)", |
286 | 285 |
|
287 | 286 | /// Build a full desktop query using default localhost:5600 configuration |
288 | 287 | pub fn full_desktop_query(params: &DesktopQueryParams) -> String { |
289 | | - let mut query = QueryParams::Desktop(params.clone()).canonical_events_with_classes(); |
| 288 | + let mut query = QueryParams::Desktop(params.clone()).canonical_events(); |
290 | 289 |
|
291 | 290 | // Add basic event aggregations |
292 | | - query.push_str(&format!( |
293 | | - " |
294 | | - title_events = sort_by_duration(merge_events_by_keys(events, [\"app\", \"title\"])); |
295 | | - app_events = sort_by_duration(merge_events_by_keys(title_events, [\"app\"])); |
296 | | - cat_events = sort_by_duration(merge_events_by_keys(events, [\"$category\"])); |
297 | | - duration = sum_durations(events); |
298 | | - ", |
299 | | - )); |
300 | | - |
301 | | - // Add browser-specific query parts if browser buckets exist |
302 | | - if !params.base.bid_browsers.is_empty() { |
303 | | - query.push_str(&format!( |
304 | | - " |
305 | | - browser_events = split_url_events(browser_events); |
306 | | - browser_urls = merge_events_by_keys(browser_events, [\"url\"]); |
307 | | - browser_urls = sort_by_duration(browser_urls); |
308 | | - browser_domains = merge_events_by_keys(browser_events, [\"$domain\"]); |
309 | | - browser_domains = sort_by_duration(browser_domains); |
310 | | - browser_duration = sum_durations(browser_events); |
311 | | - ", |
312 | | - )); |
313 | | - } else { |
314 | | - query.push_str( |
315 | | - " |
316 | | - browser_events = []; |
317 | | - browser_urls = []; |
318 | | - browser_domains = []; |
319 | | - browser_duration = 0; |
320 | | - ", |
321 | | - ); |
322 | | - } |
323 | | - |
324 | | - // Add return statement |
325 | | - query.push_str( |
326 | | - " |
327 | | - RETURN = { |
328 | | - \"events\": events, |
329 | | - \"window\": { |
330 | | - \"app_events\": app_events, |
331 | | - \"title_events\": title_events, |
332 | | - \"cat_events\": cat_events, |
333 | | - \"active_events\": not_afk, |
334 | | - \"duration\": duration |
335 | | - }, |
336 | | - \"browser\": { |
337 | | - \"domains\": browser_domains, |
338 | | - \"urls\": browser_urls, |
339 | | - \"duration\": browser_duration |
340 | | - } |
341 | | - }; |
342 | | - ", |
343 | | - ); |
344 | | - |
345 | | - query |
346 | | -} |
347 | | - |
348 | | -/// Build a full desktop query using client configuration |
349 | | -pub fn full_desktop_query_from_client( |
350 | | - params: &DesktopQueryParams, |
351 | | - client: &crate::AwClient, |
352 | | -) -> String { |
353 | | - let mut query = |
354 | | - QueryParams::Desktop(params.clone()).canonical_events_with_classes_from_client(client); |
355 | | - |
356 | | - // Add basic event aggregations |
357 | | - query.push_str(&format!( |
358 | | - " |
359 | | - title_events = sort_by_duration(merge_events_by_keys(events, [\"app\", \"title\"])); |
360 | | - app_events = sort_by_duration(merge_events_by_keys(title_events, [\"app\"])); |
361 | | - cat_events = sort_by_duration(merge_events_by_keys(events, [\"$category\"])); |
362 | | - app_events = limit_events(app_events, {}); |
363 | | - title_events = limit_events(title_events, {}); |
364 | | - duration = sum_durations(events); |
365 | | - ", |
366 | | - DEFAULT_LIMIT, DEFAULT_LIMIT |
367 | | - )); |
368 | | - |
369 | | - // Add browser-specific query parts if browser buckets exist |
370 | | - if !params.base.bid_browsers.is_empty() { |
371 | | - query.push_str(&format!( |
372 | | - " |
373 | | - browser_events = split_url_events(browser_events); |
374 | | - browser_urls = merge_events_by_keys(browser_events, [\"url\"]); |
375 | | - browser_urls = sort_by_duration(browser_urls); |
376 | | - browser_domains = merge_events_by_keys(browser_events, [\"$domain\"]); |
377 | | - browser_domains = sort_by_duration(browser_domains); |
378 | | - browser_duration = sum_durations(browser_events); |
379 | | - " |
380 | | - )); |
381 | | - } else { |
382 | | - query.push_str( |
383 | | - " |
384 | | - browser_events = []; |
385 | | - browser_urls = []; |
386 | | - browser_domains = []; |
387 | | - browser_duration = 0; |
388 | | - ", |
389 | | - ); |
390 | | - } |
391 | | - |
392 | | - // Add return statement |
393 | | - query.push_str( |
394 | | - " |
395 | | - RETURN = { |
396 | | - \"events\": events, |
397 | | - \"window\": { |
398 | | - \"app_events\": app_events, |
399 | | - \"title_events\": title_events, |
400 | | - \"cat_events\": cat_events, |
401 | | - \"active_events\": not_afk, |
402 | | - \"duration\": duration |
403 | | - }, |
404 | | - \"browser\": { |
405 | | - \"domains\": browser_domains, |
406 | | - \"urls\": browser_urls, |
407 | | - \"duration\": browser_duration |
408 | | - } |
409 | | - }; |
410 | | - ", |
411 | | - ); |
412 | | - |
413 | | - query |
414 | | -} |
415 | | - |
416 | | -/// Build a full desktop query using blocking client configuration |
417 | | -pub fn full_desktop_query_from_blocking_client( |
418 | | - params: &DesktopQueryParams, |
419 | | - client: &crate::blocking::AwClient, |
420 | | -) -> String { |
421 | | - let mut query = QueryParams::Desktop(params.clone()) |
422 | | - .canonical_events_with_classes_from_blocking_client(client); |
423 | | - |
424 | | - // Add basic event aggregations |
425 | | - query.push_str(&format!( |
426 | | - " |
| 291 | + query.push_str(&" |
427 | 292 | title_events = sort_by_duration(merge_events_by_keys(events, [\"app\", \"title\"])); |
428 | 293 | app_events = sort_by_duration(merge_events_by_keys(title_events, [\"app\"])); |
429 | 294 | cat_events = sort_by_duration(merge_events_by_keys(events, [\"$category\"])); |
430 | | - app_events = limit_events(app_events, {}); |
431 | | - title_events = limit_events(title_events, {}); |
432 | 295 | duration = sum_durations(events); |
433 | | - ", |
434 | | - DEFAULT_LIMIT, DEFAULT_LIMIT |
435 | | - )); |
| 296 | + ".to_string()); |
436 | 297 |
|
437 | 298 | // Add browser-specific query parts if browser buckets exist |
438 | 299 | if !params.base.bid_browsers.is_empty() { |
439 | | - query.push_str(&format!( |
440 | | - " |
| 300 | + query.push_str(&" |
441 | 301 | browser_events = split_url_events(browser_events); |
442 | 302 | browser_urls = merge_events_by_keys(browser_events, [\"url\"]); |
443 | 303 | browser_urls = sort_by_duration(browser_urls); |
444 | | - browser_urls = limit_events(browser_urls, {}); |
445 | 304 | browser_domains = merge_events_by_keys(browser_events, [\"$domain\"]); |
446 | 305 | browser_domains = sort_by_duration(browser_domains); |
447 | | - browser_domains = limit_events(browser_domains, {}); |
448 | 306 | browser_duration = sum_durations(browser_events); |
449 | | - ", |
450 | | - DEFAULT_LIMIT, DEFAULT_LIMIT |
451 | | - )); |
| 307 | + ".to_string()); |
452 | 308 | } else { |
453 | 309 | query.push_str( |
454 | 310 | " |
|
0 commit comments