@powerhousedao/analytics-engine-knex 0.6.1 → 0.6.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@powerhousedao/analytics-engine-knex",
3
- "version": "0.6.1",
3
+ "version": "0.6.3",
4
4
  "license": "AGPL-3.0-only",
5
5
  "repository": {
6
6
  "type": "git",
@@ -9,18 +9,22 @@
9
9
  "publishConfig": {
10
10
  "access": "public"
11
11
  },
12
- "exports": "./dist/src/index.js",
13
- "types": "./dist/src/index.d.ts",
14
12
  "type": "module",
13
+ "exports": {
14
+ ".": {
15
+ "types": "./dist/src/index.d.ts",
16
+ "default": "./dist/src/index.js"
17
+ }
18
+ },
15
19
  "files": [
16
- "dist"
20
+ "dist/src"
17
21
  ],
18
22
  "dependencies": {
19
23
  "date-fns": "4.1.0",
20
24
  "knex": "3.1.0",
21
25
  "luxon": "3.7.2",
22
26
  "pg": "8.18.0",
23
- "@powerhousedao/analytics-engine-core": "0.6.1"
27
+ "@powerhousedao/analytics-engine-core": "0.6.3"
24
28
  },
25
29
  "devDependencies": {
26
30
  "@types/pg": "8.16.0",
@@ -29,6 +33,7 @@
29
33
  },
30
34
  "scripts": {
31
35
  "dev": "pnpm tsc -b -w",
36
+ "bundle": "bun run ./bundle.ts",
32
37
  "test": "vitest --run ./**/*.test.ts"
33
38
  }
34
39
  }
@@ -1,256 +0,0 @@
1
- import { DateTime } from "luxon";
2
- import { AnalyticsPath, AnalyticsSubscriptionManager, } from "@powerhousedao/analytics-engine-core";
3
- import { toPascalCase } from "./util.js";
4
- export class KnexAnalyticsStore {
5
- _executor;
6
- _knex;
7
- _subscriptionManager = new AnalyticsSubscriptionManager();
8
- constructor({ executor, knex }) {
9
- this._executor = executor;
10
- this._knex = knex;
11
- }
12
- destroy() {
13
- this._knex.destroy();
14
- }
15
- async clearSeriesBySource(source, cleanUpDimensions = false) {
16
- const query = this._knex("AnalyticsSeries")
17
- .whereLike("source", source.toString("/%"))
18
- .delete();
19
- let result = await this._executor.execute(query);
20
- if (cleanUpDimensions) {
21
- result += await this.clearEmptyAnalyticsDimensions();
22
- }
23
- this._subscriptionManager.notifySubscribers([source]);
24
- return result;
25
- }
26
- async clearEmptyAnalyticsDimensions() {
27
- const query = this._knex("AnalyticsDimension AS AD")
28
- .whereNotExists((q) => q
29
- .select("*")
30
- .from("AnalyticsSeries_AnalyticsDimension AS ASAD")
31
- .where("ASAD.dimensionId", this._knex.ref("AD.id")))
32
- .delete();
33
- return await this._executor.execute(query);
34
- }
35
- async getMatchingSeries(query) {
36
- const units = query.currency ? query.currency.firstSegment().filters : null;
37
- const analyticsView = this._buildViewQuery("AV", Object.keys(query.select), query.metrics.map((m) => m), units, query.end);
38
- const baseQuery = this._knex(this._knex.raw(analyticsView)).select("AV.*");
39
- // Add dimension filter(s)
40
- for (const [dimension, paths] of Object.entries(query.select)) {
41
- baseQuery.leftJoin(`AnalyticsDimension as ${dimension}`, (q) => {
42
- q.on(`${dimension}.path`, `dim_${dimension}`);
43
- });
44
- baseQuery.select(`${dimension}.icon as dim_icon`);
45
- baseQuery.select(`${dimension}.description as dim_description`);
46
- baseQuery.select(`${dimension}.label as dim_label`);
47
- if (paths.length == 1) {
48
- baseQuery.andWhereLike(`dim_${dimension}`, paths[0].toString("/%"));
49
- }
50
- else if (paths.length > 1) {
51
- baseQuery.andWhere((q) => {
52
- paths.forEach((p) => q.orWhereLike(`dim_${dimension}`, p.toString("/%")));
53
- return q;
54
- });
55
- }
56
- }
57
- baseQuery.orderBy("start");
58
- const results = await this._executor.execute(baseQuery);
59
- return this._formatQueryRecords(results, Object.keys(query.select));
60
- }
61
- async addSeriesValue(input) {
62
- return this.addSeriesValues([input]);
63
- }
64
- async addSeriesValues(inputs) {
65
- const dimensionsMap = {};
66
- for (let i = 0; i < inputs.length; i++) {
67
- const input = inputs[i];
68
- const query = this._knex("AnalyticsSeries").insert({
69
- start: input.start.toJSDate(),
70
- end: input.end ? input.end.toJSDate() : null,
71
- source: input.source.toString("/"),
72
- metric: toPascalCase(input.metric),
73
- value: input.value,
74
- unit: input.unit || null,
75
- fn: input.fn || "Single",
76
- params: input.params || null,
77
- }, "id");
78
- const record = await this._executor.execute(query);
79
- for (const [dim, path] of Object.entries(inputs[i].dimensions || {})) {
80
- if (!dimensionsMap[dim]) {
81
- dimensionsMap[dim] = {};
82
- }
83
- const pKey = path.toString("/");
84
- if (!dimensionsMap[dim][pKey]) {
85
- dimensionsMap[dim][pKey] = [];
86
- }
87
- dimensionsMap[dim][pKey].push(record[0].id);
88
- }
89
- }
90
- for (const [dim, pathMap] of Object.entries(dimensionsMap)) {
91
- await this._linkDimensions(dim, pathMap);
92
- }
93
- // Adding dimension metadata
94
- for (let i = 0; i < inputs.length; i++) {
95
- const metaDimension = inputs[i].dimensionMetadata;
96
- if (!metaDimension) {
97
- continue;
98
- }
99
- await this.addDimensionMetadata(metaDimension.path, metaDimension.icon, metaDimension.label, metaDimension.description);
100
- }
101
- // notify subscribers about updates
102
- const sourcePaths = inputs.map((input) => input.source);
103
- this._subscriptionManager.notifySubscribers(sourcePaths);
104
- }
105
- _formatQueryRecords(records, dimensions) {
106
- const formatted = records.map((r) => {
107
- const result = {
108
- id: r.id,
109
- source: AnalyticsPath.fromString(r.source.slice(0, -1)),
110
- start: DateTime.fromJSDate(r.start),
111
- end: r.end ? DateTime.fromJSDate(r.end) : null,
112
- metric: r.metric,
113
- value: r.value,
114
- unit: r.unit,
115
- fn: r.fn,
116
- params: r.params,
117
- dimensions: {},
118
- };
119
- dimensions.forEach((d) => (result.dimensions[d] = {
120
- path: AnalyticsPath.fromString(r[`dim_${d}`] ? r[`dim_${d}`].slice(0, -1) : "?"),
121
- icon: r[`dim_icon`] ? r[`dim_icon`] : "",
122
- label: r[`dim_label`] ? r[`dim_label`] : "",
123
- description: r[`dim_description`] ? r[`dim_description`] : "",
124
- }));
125
- return result;
126
- });
127
- // sort by id
128
- return formatted.sort((a, b) => a.id - b.id);
129
- }
130
- _buildViewQuery(name, dimensions, metrics, units, until) {
131
- const baseQuery = this._knex("AnalyticsSeries as AS_inner")
132
- .select("*")
133
- .whereIn("metric", metrics);
134
- for (const dimension of dimensions) {
135
- baseQuery.select(this._buildDimensionQuery(dimension));
136
- }
137
- if (units && units.length > 0 && units[0] !== "") {
138
- baseQuery.whereIn("unit", units);
139
- }
140
- if (until) {
141
- baseQuery.where("start", "<", until.toISO());
142
- }
143
- return `(${baseQuery.toString()}) AS "${name}"`;
144
- }
145
- _buildDimensionQuery(dimension) {
146
- const seriesIdRef = this._knex.ref("AS_inner.id");
147
- return this._knex("AnalyticsSeries_AnalyticsDimension as ASAD")
148
- .leftJoin("AnalyticsDimension as AD", "AD.id", "ASAD.dimensionId")
149
- .where("ASAD.seriesId", seriesIdRef)
150
- .where("AD.dimension", dimension)
151
- .select("path")
152
- .as(`dim_${dimension}`);
153
- }
154
- async _linkDimensions(dimension, pathMap) {
155
- const query = this._knex("AnalyticsDimension")
156
- .select("path", "id")
157
- .where("dimension", dimension)
158
- .whereIn("path", Object.keys(pathMap));
159
- const dimensionIds = await this._executor.execute(query);
160
- for (const [path, ids] of Object.entries(pathMap)) {
161
- const i = dimensionIds.findIndex((record) => record.path == path);
162
- const dimensionId = i < 0
163
- ? await this._createDimensionPath(dimension, path)
164
- : dimensionIds[i].id;
165
- for (let j = 0; j < ids.length; j++) {
166
- const query = this._knex("AnalyticsSeries_AnalyticsDimension").insert({
167
- seriesId: ids[j],
168
- dimensionId,
169
- });
170
- await this._executor.execute(query);
171
- }
172
- }
173
- }
174
- async _createDimensionPath(dimension, path) {
175
- const query = this._knex("AnalyticsDimension").insert({ dimension, path }, "id");
176
- const result = await this._executor.execute(query);
177
- return result[0].id;
178
- }
179
- async addDimensionMetadata(path, icon, label, description) {
180
- if (!icon && !label && !description) {
181
- return;
182
- }
183
- const query = this._knex("AnalyticsDimension")
184
- .where("path", `${path.toString()}/`)
185
- .update({
186
- icon: icon ? icon : "",
187
- label: label ? label : "",
188
- description: description ? description : "",
189
- });
190
- await this._executor.execute(query);
191
- }
192
- async getDimensions() {
193
- // Fetch all rows from the database
194
- const query = this._knex
195
- .select("dimension", "path", "icon", "label", "description")
196
- .from("AnalyticsDimension")
197
- .whereNotNull("path")
198
- .whereNot("path", "")
199
- .whereNot("path", "/");
200
- const rows = await this._executor.execute(query);
201
- // Process the rows to group them by dimension and format them
202
- const grouped = rows.reduce((acc, row) => {
203
- // If the dimension is not yet in the accumulator, add it
204
- if (!acc[row.dimension]) {
205
- acc[row.dimension] = {
206
- name: row.dimension,
207
- values: [],
208
- };
209
- }
210
- // Add the path, icon, label, and description to the dimension's values
211
- acc[row.dimension].values.push({
212
- path: row.path,
213
- icon: row.icon,
214
- label: row.label,
215
- description: row.description,
216
- });
217
- return acc;
218
- }, {});
219
- // Convert the grouped object to an array
220
- const dimensionPaths = Object.values(grouped);
221
- return dimensionPaths;
222
- }
223
- async getMetrics() {
224
- const query = this._knex("AnalyticsSeries")
225
- .select("metric")
226
- .distinct()
227
- .whereNotNull("metric");
228
- const list = await this._executor.execute(query);
229
- const filtered = list.map((l) => l.metric);
230
- const metrics = [
231
- "Budget",
232
- "Forecast",
233
- "Actuals",
234
- "PaymentsOnChain",
235
- "PaymentsOffChainIncluded",
236
- ];
237
- metrics.forEach((metric) => {
238
- if (!filtered.includes(metric)) {
239
- filtered.push(metric);
240
- }
241
- });
242
- return filtered;
243
- }
244
- async getCurrencies() {
245
- const query = this._knex("AnalyticsSeries")
246
- .select("unit")
247
- .distinct()
248
- .whereNotNull("unit");
249
- const currencies = await this._executor.execute(query);
250
- return currencies.map((c) => c.unit);
251
- }
252
- subscribeToSource(path, callback) {
253
- return this._subscriptionManager.subscribeToPath(path, callback);
254
- }
255
- }
256
- //# sourceMappingURL=KnexAnalyticsStore.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"KnexAnalyticsStore.js","sourceRoot":"","sources":["../../src/KnexAnalyticsStore.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EACL,aAAa,EAOb,4BAA4B,GAC7B,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAmCzC,MAAM,OAAO,kBAAkB;IACV,SAAS,CAAqB;IAC9B,KAAK,CAAO;IACd,oBAAoB,GACnC,IAAI,4BAA4B,EAAE,CAAC;IAErC,YAAmB,EAAE,QAAQ,EAAE,IAAI,EAA6B;QAC9D,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC;IAEM,KAAK,CAAC,mBAAmB,CAC9B,MAAqB,EACrB,oBAA6B,KAAK;QAElC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;aACxC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;aAC1C,MAAM,EAAE,CAAC;QAEZ,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEjD,IAAI,iBAAiB,EAAE,CAAC;YACtB,MAAM,IAAI,MAAM,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACvD,CAAC;QAED,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAEtD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,KAAK,CAAC,6BAA6B;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,0BAA0B,CAAC;aACjD,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CACpB,CAAC;aACE,MAAM,CAAC,GAAG,CAAC;aACX,IAAI,CAAC,4CAA4C,CAAC;aAClD,KAAK,CAAC,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CACtD;aACA,MAAM,EAAE,CAAC;QAEZ,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAEM,KAAK,CAAC,iBAAiB,CAC5B,KAA2B;QAE3B,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;QAC5E,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CACxC,IAAI,EACJ,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EACzB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAC3B,KAAK,EACL,KAAK,CAAC,GAAG,CACV,CAAC;QAEF,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAC9B,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEjB,0BAA0B;QAC1B,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9D,SAAS,CAAC,QAAQ,CAAC,yBAAyB,SAAS,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE;gBAC7D,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,OAAO,EAAE,OAAO,SAAS,EAAE,CAAC,CAAC;YAChD,CAAC,CAAC,CAAC;YACH,SAAS,CAAC,MAAM,CAAC,GAAG,SAAS,mBAAmB,CAAC,CAAC;YAClD,SAAS,CAAC,MAAM,CAAC,GAAG,SAAS,iCAAiC,CAAC,CAAC;YAChE,SAAS,CAAC,MAAM,CAAC,GAAG,SAAS,qBAAqB,CAAC,CAAC;YACpD,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACtB,SAAS,CAAC,YAAY,CAAC,OAAO,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;YACtE,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE;oBACvB,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAClB,CAAC,CAAC,WAAW,CAAC,OAAO,SAAS,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CACpD,CAAC;oBACF,OAAO,CAAC,CAAC;gBACX,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAE3B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACtE,CAAC;IAEM,KAAK,CAAC,cAAc,CAAC,KAA2B;QACrD,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACvC,CAAC;IAEM,KAAK,CAAC,eAAe,CAAC,MAA8B;QACzD,MAAM,aAAa,GAAkB,EAAE,CAAC;QAExC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;YACxB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAwB,iBAAiB,CAAC,CAAC,MAAM,CACvE;gBACE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE;gBAC7B,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI;gBAC5C,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAClC,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC;gBAClC,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,IAAI;gBACxB,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,QAAQ;gBACxB,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,IAAI;aAC7B,EACD,IAAI,CACL,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACnD,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC;gBACrE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;oBACxB,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;gBAC1B,CAAC;gBAED,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAChC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC9B,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBAChC,CAAC;gBAED,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC9C,CAAC;QACH,CAAC;QAED,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;YAC3D,MAAM,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC3C,CAAC;QAED,4BAA4B;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,aAAa,GAAQ,MAAM,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC;YACvD,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,SAAS;YACX,CAAC;YACD,MAAM,IAAI,CAAC,oBAAoB,CAC7B,aAAa,CAAC,IAAI,EAClB,aAAa,CAAC,IAAI,EAClB,aAAa,CAAC,KAAK,EACnB,aAAa,CAAC,WAAW,CAC1B,CAAC;QACJ,CAAC;QAED,mCAAmC;QACnC,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;IAC3D,CAAC;IAEO,mBAAmB,CACzB,OAAgC,EAChC,UAAoB;QAEpB,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAwB,EAAE,EAAE;YACzD,MAAM,MAAM,GAAG;gBACb,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACvD,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC;gBACnC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC9C,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,UAAU,EAAE,EAA8C;aAC3D,CAAC;YAEF,UAAU,CAAC,OAAO,CAChB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG;gBACtB,IAAI,EAAE,aAAa,CAAC,UAAU,CAC5B,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CACjD;gBACD,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE;gBACxC,KAAK,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC3C,WAAW,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE;aAC9D,CAAC,CACL,CAAC;YACF,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC;QAEH,aAAa;QACb,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC;IAEO,eAAe,CACrB,IAAY,EACZ,UAAoB,EACpB,OAAiB,EACjB,KAAsB,EACtB,KAAsB;QAEtB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC;aACxD,MAAM,CAAC,GAAG,CAAC;aACX,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAE9B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;YACjD,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACnC,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,IAAI,SAAS,CAAC,QAAQ,EAAE,SAAS,IAAI,GAAG,CAAC;IAClD,CAAC;IAEO,oBAAoB,CAAC,SAAiB;QAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;QAElD,OAAO,IAAI,CAAC,KAAK,CAAC,4CAA4C,CAAC;aAC5D,QAAQ,CAAC,0BAA0B,EAAE,OAAO,EAAE,kBAAkB,CAAC;aACjE,KAAK,CAAC,eAAe,EAAE,WAAW,CAAC;aACnC,KAAK,CAAC,cAAc,EAAE,SAAS,CAAC;aAChC,MAAM,CAAC,MAAM,CAAC;aACd,EAAE,CAAC,OAAO,SAAS,EAAE,CAAC,CAAC;IAC5B,CAAC;IAEO,KAAK,CAAC,eAAe,CAC3B,SAAiB,EACjB,OAAiC;QAEjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC;aAC3C,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;aACpB,KAAK,CAAC,WAAW,EAAE,SAAS,CAAC;aAC7B,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAEzC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEzD,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YAClD,MAAM,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;YAEvE,MAAM,WAAW,GACf,CAAC,GAAG,CAAC;gBACH,CAAC,CAAC,MAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,IAAI,CAAC;gBAClD,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAEzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACpC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC,MAAM,CAAC;oBACpE,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;oBAChB,WAAW;iBACZ,CAAC,CAAC;gBAEH,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAAC,SAAiB,EAAE,IAAY;QAChE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,MAAM,CACnD,EAAE,SAAS,EAAE,IAAI,EAAE,EACnB,IAAI,CACL,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtB,CAAC;IAEO,KAAK,CAAC,oBAAoB,CAChC,IAAY,EACZ,IAA+B,EAC/B,KAAgC,EAChC,WAAsC;QAEtC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;YACpC,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC;aAC3C,KAAK,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC;aACpC,MAAM,CAAC;YACN,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YACtB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;YACzB,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;SAC5C,CAAC,CAAC;QAEL,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAEM,KAAK,CAAC,aAAa;QACxB,mCAAmC;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;aACrB,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC;aAC3D,IAAI,CAAC,oBAAoB,CAAC;aAC1B,YAAY,CAAC,MAAM,CAAC;aACpB,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;aACpB,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAEzB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEjD,8DAA8D;QAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAQ,EAAE,GAAQ,EAAE,EAAE;YACjD,yDAAyD;YACzD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;gBACxB,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG;oBACnB,IAAI,EAAE,GAAG,CAAC,SAAS;oBACnB,MAAM,EAAE,EAAE;iBACX,CAAC;YACJ,CAAC;YAED,uEAAuE;YACvE,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;gBAC7B,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,WAAW,EAAE,GAAG,CAAC,WAAW;aAC7B,CAAC,CAAC;YAEH,OAAO,GAAG,CAAC;QACb,CAAC,EAAE,EAAE,CAAC,CAAC;QAEP,yCAAyC;QACzC,MAAM,cAAc,GAAQ,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACnD,OAAO,cAAc,CAAC;IACxB,CAAC;IAEM,KAAK,CAAC,UAAU;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;aACxC,MAAM,CAAC,QAAQ,CAAC;aAChB,QAAQ,EAAE;aACV,YAAY,CAAC,QAAQ,CAAC,CAAC;QAE1B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG;YACd,QAAQ;YACR,UAAU;YACV,SAAS;YACT,iBAAiB;YACjB,0BAA0B;SAC3B,CAAC;QACF,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YACzB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC/B,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACxB,CAAC;QACH,CAAC,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEM,KAAK,CAAC,aAAa;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;aACxC,MAAM,CAAC,MAAM,CAAC;aACd,QAAQ,EAAE;aACV,YAAY,CAAC,MAAM,CAAC,CAAC;QAExB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACvD,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAEM,iBAAiB,CACtB,IAAmB,EACnB,QAAiC;QAEjC,OAAO,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACnE,CAAC;CACF"}
@@ -1,35 +0,0 @@
1
- import {} from "@powerhousedao/analytics-engine-core";
2
- import {} from "./KnexAnalyticsStore.js";
3
- export class KnexQueryExecutor {
4
- _queryLogger;
5
- _resultsLogger;
6
- _profiler;
7
- _index = 0;
8
- constructor(_queryLogger, _resultsLogger, _profiler) {
9
- this._queryLogger = _queryLogger;
10
- this._resultsLogger = _resultsLogger;
11
- this._profiler = _profiler;
12
- if (this._profiler) {
13
- this._profiler.push("Knex");
14
- }
15
- }
16
- async execute(query) {
17
- const index = this._index++;
18
- if (this._queryLogger) {
19
- this._queryLogger(index, query.toString());
20
- }
21
- let results;
22
- if (this._profiler) {
23
- // profile the query
24
- results = await this._profiler.record("Query", async () => await query);
25
- }
26
- else {
27
- results = await query;
28
- }
29
- if (this._resultsLogger) {
30
- this._resultsLogger(index, results);
31
- }
32
- return results;
33
- }
34
- }
35
- //# sourceMappingURL=KnexQueryExecutor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"KnexQueryExecutor.js","sourceRoot":"","sources":["../../src/KnexQueryExecutor.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,MAAM,sCAAsC,CAAC;AAE/E,OAAO,EAA2B,MAAM,yBAAyB,CAAC;AAElE,MAAM,OAAO,iBAAiB;IAIT;IACA;IACA;IALX,MAAM,GAAW,CAAC,CAAC;IAE3B,YACmB,YAAqD,EACrD,cAAsD,EACtD,SAA8B;QAF9B,iBAAY,GAAZ,YAAY,CAAyC;QACrD,mBAAc,GAAd,cAAc,CAAwC;QACtD,cAAS,GAAT,SAAS,CAAqB;QAE/C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAO,CAAkB,KAA8B;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAE5B,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7C,CAAC;QAED,IAAI,OAAO,CAAC;QACZ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,oBAAoB;YACpB,OAAO,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;QAC1E,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,MAAM,KAAK,CAAC;QACxB,CAAC;QAED,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACtC,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAM3D,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC"}
package/dist/src/util.js DELETED
@@ -1,19 +0,0 @@
1
- export const defaultQueryLogger = (tag) => (index, query) => {
2
- console.log(`[${tag}][Q:${index}]: ${query}\n`);
3
- };
4
- export const defaultResultsLogger = (tag) => (index, results) => {
5
- if (Array.isArray(results)) {
6
- console.log(`[${tag}][R:${index}]: ${results.length} results\n`);
7
- }
8
- else {
9
- console.log(`[${tag}][R:${index}]: Received ${typeof results}.\n`);
10
- }
11
- };
12
- export function toPascalCase(str) {
13
- return str
14
- .replace(/\w+/g, function (word) {
15
- return word[0].toUpperCase() + word.slice(1);
16
- })
17
- .replace(/\s+/g, "");
18
- }
19
- //# sourceMappingURL=util.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/util.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,kBAAkB,GAC7B,CAAC,GAAW,EAAkB,EAAE,CAChC,CAAC,KAAa,EAAE,KAAa,EAAE,EAAE;IAC/B,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,OAAO,KAAK,MAAM,KAAK,IAAI,CAAC,CAAC;AAClD,CAAC,CAAC;AAEJ,MAAM,CAAC,MAAM,oBAAoB,GAC/B,CAAC,GAAW,EAAoB,EAAE,CAClC,CAAC,KAAa,EAAE,OAAY,EAAE,EAAE;IAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,OAAO,KAAK,MAAM,OAAO,CAAC,MAAM,YAAY,CAAC,CAAC;IACnE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,OAAO,KAAK,eAAe,OAAO,OAAO,KAAK,CAAC,CAAC;IACrE,CAAC;AACH,CAAC,CAAC;AAEJ,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,OAAO,GAAG;SACP,OAAO,CAAC,MAAM,EAAE,UAAU,IAAI;QAC7B,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC;SACD,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACzB,CAAC"}