Skip to content

Commit c29c1cc

Browse files
committed
fixed excessive semicolon at end of query (breaking recent version of aw-server-rust)
1 parent 282f727 commit c29c1cc

1 file changed

Lines changed: 92 additions & 66 deletions

File tree

src/queries.js

Lines changed: 92 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
1-
import _ from 'lodash';
1+
import _ from "lodash";
22

33
// TODO: Sanitize string input of buckets
44

5+
function querystr_to_array(querystr) {
6+
return querystr
7+
.split(";")
8+
.filter(l => l)
9+
.map(l => l + ";");
10+
}
11+
512
export function summaryQuery(windowbucket, afkbucket, count) {
613
windowbucket = windowbucket.replace('"', '\\"');
714
afkbucket = afkbucket.replace('"', '\\"');
8-
let code = (
9-
`events = flood(query_bucket("${windowbucket}"));
15+
let code = `events = flood(query_bucket("${windowbucket}"));
1016
not_afk = flood(query_bucket("${afkbucket}"));
1117
not_afk = filter_keyvals(not_afk, "status", ["not-afk"]);
1218
events = filter_period_intersect(events, not_afk);
@@ -16,22 +22,24 @@ export function summaryQuery(windowbucket, afkbucket, count) {
1622
app_events = sort_by_duration(app_events);
1723
app_events = limit_events(app_events, ${count});
1824
title_events = limit_events(title_events, ${count});
19-
RETURN = {"app_events": app_events, "title_events": title_events};`
20-
);
21-
let lines = code.split(";");
22-
return _.map(lines, (l) => l + ";");
25+
RETURN = {"app_events": app_events, "title_events": title_events};`;
26+
return querystr_to_array(code);
2327
}
2428

25-
export function windowQuery(windowbucket, afkbucket, appcount, titlecount, filterAFK) {
29+
export function windowQuery(
30+
windowbucket,
31+
afkbucket,
32+
appcount,
33+
titlecount,
34+
filterAFK
35+
) {
2636
windowbucket = windowbucket.replace('"', '\\"');
2737
afkbucket = afkbucket.replace('"', '\\"');
28-
let code = (
38+
let code =
2939
`events = flood(query_bucket("${windowbucket}"));
3040
not_afk = flood(query_bucket("${afkbucket}"));
31-
not_afk = filter_keyvals(not_afk, "status", ["not-afk"]);`
32-
) + (
33-
filterAFK ? 'events = filter_period_intersect(events, not_afk);' : ''
34-
) + (
41+
not_afk = filter_keyvals(not_afk, "status", ["not-afk"]);` +
42+
(filterAFK ? "events = filter_period_intersect(events, not_afk);" : "") +
3543
`title_events = merge_events_by_keys(events, ["app", "title"]);
3644
title_events = sort_by_duration(title_events);
3745
app_events = merge_events_by_keys(title_events, ["app"]);
@@ -42,98 +50,116 @@ export function windowQuery(windowbucket, afkbucket, appcount, titlecount, filte
4250
app_events = limit_events(app_events, ${appcount});
4351
title_events = limit_events(title_events, ${titlecount});
4452
duration = sum_durations(events);
45-
RETURN = {"app_events": app_events, "title_events": title_events, "app_chunks": app_chunks, "duration": duration};`
46-
);
47-
let lines = code.split(";");
48-
return _.map(lines, (l) => l + ";");
53+
RETURN = {"app_events": app_events, "title_events": title_events, "app_chunks": app_chunks, "duration": duration};`;
54+
return querystr_to_array(code);
4955
}
5056

5157
export function appQuery(appbucket, limit) {
5258
appbucket = appbucket.replace('"', '\\"');
5359
limit = limit || 5;
54-
let code = (
55-
`events = query_bucket("${appbucket}");`
56-
) + (
60+
let code =
61+
`events = query_bucket("${appbucket}");` +
5762
`events = merge_events_by_keys(events, ["app"]);
5863
events = sort_by_duration(events);
5964
events = limit_events(events, ${limit});
6065
total_duration = sum_durations(events);
61-
RETURN = {"events": events, "total_duration": total_duration};`
62-
);
63-
let lines = code.split(";");
64-
return _.map(lines, (l) => l + ";");
66+
RETURN = {"events": events, "total_duration": total_duration};`;
67+
return querystr_to_array(code);
6568
}
6669

6770
const appnames = {
68-
"chrome": ["Google-chrome", "chrome.exe", "Chromium", "Google Chrome", "Chromium-browser", "Chromium-browser-chromium", "Google-chrome-beta", "Google-chrome-unstable"],
69-
"firefox": ["Firefox", "Firefox.exe", "firefox", "firefox.exe", "Firefox Developer Edition", "Firefox Beta", "Nightly"],
70-
"opera": ["opera.exe", "Opera"],
71-
"brave": ["brave.exe"],
71+
chrome: [
72+
"Google-chrome",
73+
"chrome.exe",
74+
"Chromium",
75+
"Google Chrome",
76+
"Chromium-browser",
77+
"Chromium-browser-chromium",
78+
"Google-chrome-beta",
79+
"Google-chrome-unstable"
80+
],
81+
firefox: [
82+
"Firefox",
83+
"Firefox.exe",
84+
"firefox",
85+
"firefox.exe",
86+
"Firefox Developer Edition",
87+
"Firefox Beta",
88+
"Nightly"
89+
],
90+
opera: ["opera.exe", "Opera"],
91+
brave: ["brave.exe"]
7292
};
7393

74-
export function browserSummaryQuery(browserbuckets, windowbucket, afkbucket, limit, filterAFK) {
94+
export function browserSummaryQuery(
95+
browserbuckets,
96+
windowbucket,
97+
afkbucket,
98+
limit,
99+
filterAFK
100+
) {
75101
// Escape `"`
76-
browserbuckets = _.map(browserbuckets, (b) => b.replace('"', '\\"'));
102+
browserbuckets = _.map(browserbuckets, b => b.replace('"', '\\"'));
77103
windowbucket = windowbucket.replace('"', '\\"');
78104
afkbucket = afkbucket.replace('"', '\\"');
79105
limit = limit || 5;
80106

81107
// If multiple browser buckets were found
82-
let code = (
108+
let code =
83109
`events = [];
84-
window = flood(query_bucket("${windowbucket}"));`
85-
) + (filterAFK ?
86-
`not_afk = flood(query_bucket("${afkbucket}"));
87-
not_afk = filter_keyvals(not_afk, "status", ["not-afk"]);` : ''
88-
);
110+
window = flood(query_bucket("${windowbucket}"));` +
111+
(filterAFK
112+
? `not_afk = flood(query_bucket("${afkbucket}"));
113+
not_afk = filter_keyvals(not_afk, "status", ["not-afk"]);`
114+
: "");
89115

90-
_.each(["chrome", "firefox", "opera", "brave"], (browserName) => {
91-
let bucketId = _.filter(browserbuckets, (buckets) => buckets.indexOf(browserName) !== -1)[0];
92-
if(bucketId === undefined) {
116+
_.each(["chrome", "firefox", "opera", "brave"], browserName => {
117+
let bucketId = _.filter(
118+
browserbuckets,
119+
buckets => buckets.indexOf(browserName) !== -1
120+
)[0];
121+
if (bucketId === undefined) {
93122
// Skip browser if specific bucket not available
94123
return;
95124
}
96125
let appnames_str = JSON.stringify(appnames[browserName]);
97-
code += (
126+
code +=
98127
`events_${browserName} = flood(query_bucket("${bucketId}"));
99-
window_${browserName} = filter_keyvals(window, "app", ${appnames_str});`
100-
) + (
101-
filterAFK ? `window_${browserName} = filter_period_intersect(window_${browserName}, not_afk);` : ''
102-
) + (
128+
window_${browserName} = filter_keyvals(window, "app", ${appnames_str});` +
129+
(filterAFK
130+
? `window_${browserName} = filter_period_intersect(window_${browserName}, not_afk);`
131+
: "") +
103132
`events_${browserName} = filter_period_intersect(events_${browserName}, window_${browserName});
104133
events_${browserName} = split_url_events(events_${browserName});
105-
events = sort_by_timestamp(concat(events, events_${browserName}));`
106-
);
107-
})
134+
events = sort_by_timestamp(concat(events, events_${browserName}));`;
135+
});
108136

109-
let lines = code.split(";");
110-
let query = _.map(lines, (l) => l + ";");
111-
return query.concat([
137+
return querystr_to_array(code).concat([
112138
'urls = merge_events_by_keys(events, ["url"]);',
113-
'urls = sort_by_duration(urls);',
114-
'urls = limit_events(urls, ' + limit + ');',
115-
'domains = split_url_events(events);',
139+
"urls = sort_by_duration(urls);",
140+
"urls = limit_events(urls, " + limit + ");",
141+
"domains = split_url_events(events);",
116142
'domains = merge_events_by_keys(domains, ["domain"]);',
117-
'domains = sort_by_duration(domains);',
118-
'domains = limit_events(domains, ' + limit + ');',
143+
"domains = sort_by_duration(domains);",
144+
"domains = limit_events(domains, " + limit + ");",
119145
'chunks = chunk_events_by_key(events, "domain");',
120-
'duration = sum_durations(events);',
121-
'RETURN = {"domains": domains, "urls": urls, "chunks": chunks, "duration": duration};',
146+
"duration = sum_durations(events);",
147+
'RETURN = {"domains": domains, "urls": urls, "chunks": chunks, "duration": duration};'
122148
]);
123149
}
124150

125151
export function editorActivityQuery(editorbucket, limit) {
126152
editorbucket = editorbucket.replace('"', '\\"');
127153
return [
128154
'editorbucket = "' + editorbucket + '";',
129-
'events = flood(query_bucket(editorbucket));',
155+
"events = flood(query_bucket(editorbucket));",
130156
'files = sort_by_duration(merge_events_by_keys(events, ["file", "language"]));',
131-
'files = limit_events(files, ' + limit + ');',
157+
"files = limit_events(files, " + limit + ");",
132158
'languages = sort_by_duration(merge_events_by_keys(events, ["language"]));',
133-
'languages = limit_events(languages, ' + limit + ');',
159+
"languages = limit_events(languages, " + limit + ");",
134160
'projects = sort_by_duration(merge_events_by_keys(events, ["project"]));',
135-
'projects = limit_events(projects, ' + limit + ');',
136-
'duration = sum_durations(events);',
161+
"projects = limit_events(projects, " + limit + ");",
162+
"duration = sum_durations(events);",
137163
'RETURN = {"files": files, "languages": languages, "projects": projects, "duration": duration};'
138164
];
139165
}
@@ -142,17 +168,17 @@ export function dailyActivityQuery(afkbucket) {
142168
afkbucket = afkbucket.replace('"', '\\"');
143169
return [
144170
'afkbucket = "' + afkbucket + '";',
145-
'not_afk = flood(query_bucket(afkbucket));',
171+
"not_afk = flood(query_bucket(afkbucket));",
146172
'not_afk = merge_events_by_keys(not_afk, ["status"]);',
147-
'RETURN = not_afk;'
173+
"RETURN = not_afk;"
148174
];
149175
}
150176

151177
export function dailyActivityQueryAndroid(androidbucket) {
152178
androidbucket = androidbucket.replace('"', '\\"');
153179
return [
154180
`events = query_bucket("${androidbucket}");`,
155-
'RETURN = sum_durations(events);'
181+
"RETURN = sum_durations(events);"
156182
];
157183
}
158184

@@ -163,5 +189,5 @@ export default {
163189
appQuery,
164190
dailyActivityQuery,
165191
dailyActivityQueryAndroid,
166-
editorActivityQuery,
192+
editorActivityQuery
167193
};

0 commit comments

Comments
 (0)