@powersync/service-module-postgres-storage 0.0.0-dev-20250729154612 → 0.0.0-dev-20250730064253
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.
|
@@ -88,72 +88,100 @@ export class PostgresReportStorageFactory {
|
|
|
88
88
|
}
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
|
-
listConnectionsDateRangeQuery(data) {
|
|
91
|
+
async listConnectionsDateRangeQuery(data) {
|
|
92
92
|
const { range } = data;
|
|
93
93
|
if (!range) {
|
|
94
|
-
|
|
95
|
-
WITH
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
94
|
+
return this.db.sql `
|
|
95
|
+
WITH
|
|
96
|
+
filtered AS (
|
|
97
|
+
SELECT
|
|
98
|
+
*
|
|
99
|
+
FROM
|
|
100
|
+
sdk_report_events
|
|
101
|
+
WHERE
|
|
102
|
+
disconnect_at IS NULL
|
|
99
103
|
AND jwt_exp > NOW()
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
104
|
+
),
|
|
105
|
+
unique_users AS (
|
|
106
|
+
SELECT
|
|
107
|
+
COUNT(DISTINCT user_id) AS count
|
|
108
|
+
FROM
|
|
109
|
+
filtered
|
|
110
|
+
),
|
|
111
|
+
sdk_versions_array AS (
|
|
112
|
+
SELECT
|
|
113
|
+
sdk,
|
|
107
114
|
COUNT(*) AS total,
|
|
108
115
|
COUNT(DISTINCT client_id) AS clients,
|
|
109
116
|
COUNT(DISTINCT user_id) AS users
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
117
|
+
FROM
|
|
118
|
+
filtered
|
|
119
|
+
GROUP BY
|
|
120
|
+
sdk
|
|
121
|
+
)
|
|
113
122
|
SELECT
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
123
|
+
(
|
|
124
|
+
SELECT
|
|
125
|
+
COALESCE(count, 0)
|
|
126
|
+
FROM
|
|
127
|
+
unique_users
|
|
128
|
+
) AS users,
|
|
129
|
+
(
|
|
130
|
+
SELECT
|
|
131
|
+
JSON_AGG(ROW_TO_JSON(s))
|
|
132
|
+
FROM
|
|
133
|
+
sdk_versions_array s
|
|
134
|
+
) AS sdks;
|
|
135
|
+
`.first();
|
|
120
136
|
}
|
|
121
137
|
const endDate = data.range?.end_date ? new Date(data.range.end_date) : new Date();
|
|
122
138
|
const startDate = new Date(range.start_date);
|
|
123
|
-
const query = `
|
|
124
|
-
WITH filtered AS (
|
|
125
|
-
SELECT *
|
|
126
|
-
FROM sdk_report_events
|
|
127
|
-
WHERE disconnect_at IS NULL
|
|
128
|
-
AND jwt_exp > NOW()
|
|
129
|
-
AND connect_at > CAST($1 AS TIMESTAMP WITH TIME ZONE)
|
|
130
|
-
AND connect_at <= CAST($2 AS TIMESTAMP WITH TIME ZONE)
|
|
131
|
-
),
|
|
132
|
-
unique_users AS (
|
|
133
|
-
SELECT COUNT(DISTINCT user_id) AS count
|
|
134
|
-
FROM filtered
|
|
135
|
-
),
|
|
136
|
-
sdk_versions_array AS (
|
|
137
|
-
SELECT sdk,
|
|
138
|
-
COUNT(*) AS total,
|
|
139
|
-
COUNT(DISTINCT client_id) AS clients,
|
|
140
|
-
COUNT(DISTINCT user_id) AS users
|
|
141
|
-
FROM filtered
|
|
142
|
-
GROUP BY sdk
|
|
143
|
-
)
|
|
144
|
-
SELECT
|
|
145
|
-
(SELECT COALESCE(count, 0) FROM unique_users) AS users,
|
|
146
|
-
(SELECT JSON_AGG(ROW_TO_JSON(s)) FROM sdk_versions_array s) AS sdks;
|
|
147
|
-
`;
|
|
148
139
|
const lt = endDate.toISOString();
|
|
149
140
|
const gt = startDate.toISOString();
|
|
150
|
-
return
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
141
|
+
return await this.db.sql `
|
|
142
|
+
WITH
|
|
143
|
+
filtered AS (
|
|
144
|
+
SELECT
|
|
145
|
+
*
|
|
146
|
+
FROM
|
|
147
|
+
sdk_report_events
|
|
148
|
+
WHERE
|
|
149
|
+
disconnect_at IS NULL
|
|
150
|
+
AND jwt_exp > NOW()
|
|
151
|
+
AND connect_at > ${{ type: 1184, value: gt }}
|
|
152
|
+
AND connect_at <= ${{ type: 1184, value: lt }}
|
|
153
|
+
),
|
|
154
|
+
unique_users AS (
|
|
155
|
+
SELECT
|
|
156
|
+
COUNT(DISTINCT user_id) AS count
|
|
157
|
+
FROM
|
|
158
|
+
filtered
|
|
159
|
+
),
|
|
160
|
+
sdk_versions_array AS (
|
|
161
|
+
SELECT
|
|
162
|
+
sdk,
|
|
163
|
+
COUNT(*) AS total,
|
|
164
|
+
COUNT(DISTINCT client_id) AS clients,
|
|
165
|
+
COUNT(DISTINCT user_id) AS users
|
|
166
|
+
FROM
|
|
167
|
+
filtered
|
|
168
|
+
GROUP BY
|
|
169
|
+
sdk
|
|
170
|
+
)
|
|
171
|
+
SELECT
|
|
172
|
+
(
|
|
173
|
+
SELECT
|
|
174
|
+
COALESCE(count, 0)
|
|
175
|
+
FROM
|
|
176
|
+
unique_users
|
|
177
|
+
) AS users,
|
|
178
|
+
(
|
|
179
|
+
SELECT
|
|
180
|
+
JSON_AGG(ROW_TO_JSON(s))
|
|
181
|
+
FROM
|
|
182
|
+
sdk_versions_array s
|
|
183
|
+
) AS sdks;
|
|
184
|
+
`.first();
|
|
157
185
|
}
|
|
158
186
|
updateTableFilter() {
|
|
159
187
|
const { year, month, today } = this.parseJsDate(new Date());
|
|
@@ -169,9 +197,8 @@ export class PostgresReportStorageFactory {
|
|
|
169
197
|
const jwtExpIsoString = jwt_exp.toISOString();
|
|
170
198
|
const { gte, lt } = this.updateTableFilter();
|
|
171
199
|
const uuid = v4();
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
statement: `
|
|
200
|
+
const result = await this.db.query({
|
|
201
|
+
statement: `
|
|
175
202
|
UPDATE sdk_report_events
|
|
176
203
|
SET connect_at = $1::timestamptz,
|
|
177
204
|
sdk = $2,
|
|
@@ -183,21 +210,20 @@ export class PostgresReportStorageFactory {
|
|
|
183
210
|
AND connect_at >= $7::timestamptz
|
|
184
211
|
AND connect_at < $8::timestamptz;
|
|
185
212
|
`,
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
statement: `
|
|
213
|
+
params: [
|
|
214
|
+
{ type: 1184, value: connectIsoString },
|
|
215
|
+
{ type: 'varchar', value: sdk },
|
|
216
|
+
{ type: 'varchar', value: user_agent },
|
|
217
|
+
{ type: 1184, value: jwtExpIsoString },
|
|
218
|
+
{ type: 'varchar', value: user_id },
|
|
219
|
+
{ type: 'varchar', value: client_id },
|
|
220
|
+
{ type: 1184, value: gte },
|
|
221
|
+
{ type: 1184, value: lt }
|
|
222
|
+
]
|
|
223
|
+
});
|
|
224
|
+
if (result.rows.length === 0) {
|
|
225
|
+
await this.db.query({
|
|
226
|
+
statement: `
|
|
201
227
|
INSERT INTO sdk_report_events (
|
|
202
228
|
user_id, client_id, connect_at, sdk, user_agent, jwt_exp, id
|
|
203
229
|
)
|
|
@@ -209,23 +235,18 @@ export class PostgresReportStorageFactory {
|
|
|
209
235
|
AND connect_at >= $8::timestamptz
|
|
210
236
|
AND connect_at < $9::timestamptz
|
|
211
237
|
);`,
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
console.log(result.rows);
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
catch (error) {
|
|
228
|
-
console.log(error);
|
|
238
|
+
params: [
|
|
239
|
+
{ type: 'varchar', value: user_id },
|
|
240
|
+
{ type: 'varchar', value: client_id },
|
|
241
|
+
{ type: 1184, value: connectIsoString },
|
|
242
|
+
{ type: 'varchar', value: sdk },
|
|
243
|
+
{ type: 'varchar', value: user_agent },
|
|
244
|
+
{ type: 1184, value: jwtExpIsoString },
|
|
245
|
+
{ type: 'varchar', value: uuid },
|
|
246
|
+
{ type: 1184, value: gte },
|
|
247
|
+
{ type: 1184, value: lt }
|
|
248
|
+
]
|
|
249
|
+
});
|
|
229
250
|
}
|
|
230
251
|
}
|
|
231
252
|
async reportSdkDisconnect(data) {
|
|
@@ -241,32 +262,20 @@ export class PostgresReportStorageFactory {
|
|
|
241
262
|
AND client_id = $3
|
|
242
263
|
AND connect_at >= CAST($4 AS TIMESTAMP WITH TIME ZONE)
|
|
243
264
|
AND connect_at < CAST($5 AS TIMESTAMP WITH TIME ZONE);`;
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
});
|
|
255
|
-
console.log(result.rows);
|
|
256
|
-
}
|
|
257
|
-
catch (error) {
|
|
258
|
-
console.log(error);
|
|
259
|
-
}
|
|
265
|
+
const result = await this.db.query({
|
|
266
|
+
statement: query,
|
|
267
|
+
params: [
|
|
268
|
+
{ type: 1184, value: disconnectIsoString },
|
|
269
|
+
{ type: 'varchar', value: user_id },
|
|
270
|
+
{ type: 'varchar', value: client_id },
|
|
271
|
+
{ type: 1184, value: gte },
|
|
272
|
+
{ type: 1184, value: lt }
|
|
273
|
+
]
|
|
274
|
+
});
|
|
260
275
|
}
|
|
261
276
|
async listCurrentConnections(data) {
|
|
262
|
-
const
|
|
263
|
-
|
|
264
|
-
console.log(result.results.map((result) => {
|
|
265
|
-
if (result.rows.length > 0) {
|
|
266
|
-
console.log(result.columns);
|
|
267
|
-
console.log(result.rows);
|
|
268
|
-
}
|
|
269
|
-
}));
|
|
277
|
+
const rows = await this.listConnectionsDateRangeQuery(data);
|
|
278
|
+
console.log(rows);
|
|
270
279
|
return {
|
|
271
280
|
users: 0,
|
|
272
281
|
sdks: []
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostgresReportStorageFactory.js","sourceRoot":"","sources":["../../src/storage/PostgresReportStorageFactory.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAC1B,OAAO,KAAK,YAAY,MAAM,iCAAiC,CAAC;AAGhE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAczE,MAAM,OAAO,4BAA4B;IAEjB;IADb,EAAE,CAA8B;IACzC,YAAsB,OAAqC;QAArC,YAAO,GAAP,OAAO,CAA8B;QACzD,IAAI,CAAC,EAAE,GAAG,IAAI,YAAY,CAAC,cAAc,CAAC;YACxC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,MAAM,EAAE,mBAAmB;YAC3B,eAAe,EAAE,yBAAyB,EAAE;SAC7C,CAAC,CAAC;QAEH,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC;YACvB,iBAAiB,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC;SAC5E,CAAC,CAAC;IACL,CAAC;IAEO,WAAW,CAAC,IAAU;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC1B,OAAO;YACL,IAAI;YACJ,KAAK;YACL,KAAK;YACL,GAAG;YACH,UAAU,EAAE,IAAI;SACjB,CAAC;IACJ,CAAC;IACO,cAAc,CAAC,SAAiC,EAAE,WAAmB,CAAC;QAC5E,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACxE,MAAM,eAAe,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;QACjD,QAAQ,SAAS,EAAE,CAAC;YAClB,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,OAAO,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,EAAE,GAAG,QAAQ,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YACrG,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,aAAa,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC3C,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;gBAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;gBAClD,OAAO;oBACL,EAAE,EAAE,eAAe;oBACnB,EAAE,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;iBAC7E,CAAC;YACJ,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,0CAA0C;gBAC1C,MAAM,YAAY,GAAG,UAAU,CAAC,QAAQ,EAAE,GAAG,QAAQ,CAAC;gBACtD,OAAO;oBACL,EAAE,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,WAAW,EAAE;oBACrE,EAAE,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,WAAW,EAAE;iBAC7D,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACR,OAAO;oBACL,EAAE,EAAE,eAAe;oBACnB,EAAE,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,QAAQ,CAAC,CAAC,WAAW,EAAE;iBAC1D,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAEO,oBAAoB,CAAC,SAAiC,EAAE,WAAmB,CAAC;QAClF,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACxE,QAAQ,SAAS,EAAE,CAAC;YAClB,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,OAAO,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,EAAE,GAAG,QAAQ,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YAChF,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,aAAa,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC3C,aAAa,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;gBAC9D,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;gBAC/D,OAAO;oBACL,EAAE,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE;iBAC/C,CAAC;YACJ,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,YAAY,GAAG,UAAU,CAAC,QAAQ,EAAE,GAAG,QAAQ,CAAC;gBACtD,OAAO;oBACL,EAAE,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,WAAW,EAAE;iBAC7D,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACR,OAAO;oBACL,EAAE,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,QAAQ,CAAC,CAAC,WAAW,EAAE;iBAC1D,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAEO,6BAA6B,CAAC,IAA+C;
|
|
1
|
+
{"version":3,"file":"PostgresReportStorageFactory.js","sourceRoot":"","sources":["../../src/storage/PostgresReportStorageFactory.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@powersync/service-module-postgres-storage",
|
|
3
3
|
"repository": "https://github.com/powersync-ja/powersync-service",
|
|
4
4
|
"types": "dist/@types/index.d.ts",
|
|
5
|
-
"version": "0.0.0-dev-
|
|
5
|
+
"version": "0.0.0-dev-20250730064253",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"type": "module",
|
|
8
8
|
"publishConfig": {
|
|
@@ -29,12 +29,12 @@
|
|
|
29
29
|
"p-defer": "^4.0.1",
|
|
30
30
|
"ts-codec": "^1.3.0",
|
|
31
31
|
"uuid": "^11.1.0",
|
|
32
|
-
"@powersync/lib-service-postgres": "0.0.0-dev-
|
|
33
|
-
"@powersync/lib-services-framework": "0.0.0-dev-
|
|
34
|
-
"@powersync/service-core": "0.0.0-dev-
|
|
35
|
-
"@powersync/service-types": "0.0.0-dev-
|
|
36
|
-
"@powersync/service-core-tests": "0.0.0-dev-
|
|
37
|
-
"@powersync/service-jpgwire": "0.0.0-dev-
|
|
32
|
+
"@powersync/lib-service-postgres": "0.0.0-dev-20250730064253",
|
|
33
|
+
"@powersync/lib-services-framework": "0.0.0-dev-20250730064253",
|
|
34
|
+
"@powersync/service-core": "0.0.0-dev-20250730064253",
|
|
35
|
+
"@powersync/service-types": "0.0.0-dev-20250730064253",
|
|
36
|
+
"@powersync/service-core-tests": "0.0.0-dev-20250730064253",
|
|
37
|
+
"@powersync/service-jpgwire": "0.0.0-dev-20250730064253",
|
|
38
38
|
"@powersync/service-sync-rules": "0.27.0"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
@@ -108,72 +108,100 @@ export class PostgresReportStorageFactory implements storage.ReportStorageFactor
|
|
|
108
108
|
}
|
|
109
109
|
}
|
|
110
110
|
|
|
111
|
-
private listConnectionsDateRangeQuery(data: event_types.ListCurrentConnectionsRequest) {
|
|
111
|
+
private async listConnectionsDateRangeQuery(data: event_types.ListCurrentConnectionsRequest) {
|
|
112
112
|
const { range } = data;
|
|
113
113
|
if (!range) {
|
|
114
|
-
|
|
115
|
-
WITH
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
114
|
+
return this.db.sql`
|
|
115
|
+
WITH
|
|
116
|
+
filtered AS (
|
|
117
|
+
SELECT
|
|
118
|
+
*
|
|
119
|
+
FROM
|
|
120
|
+
sdk_report_events
|
|
121
|
+
WHERE
|
|
122
|
+
disconnect_at IS NULL
|
|
119
123
|
AND jwt_exp > NOW()
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
124
|
+
),
|
|
125
|
+
unique_users AS (
|
|
126
|
+
SELECT
|
|
127
|
+
COUNT(DISTINCT user_id) AS count
|
|
128
|
+
FROM
|
|
129
|
+
filtered
|
|
130
|
+
),
|
|
131
|
+
sdk_versions_array AS (
|
|
132
|
+
SELECT
|
|
133
|
+
sdk,
|
|
127
134
|
COUNT(*) AS total,
|
|
128
135
|
COUNT(DISTINCT client_id) AS clients,
|
|
129
136
|
COUNT(DISTINCT user_id) AS users
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
137
|
+
FROM
|
|
138
|
+
filtered
|
|
139
|
+
GROUP BY
|
|
140
|
+
sdk
|
|
141
|
+
)
|
|
133
142
|
SELECT
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
143
|
+
(
|
|
144
|
+
SELECT
|
|
145
|
+
COALESCE(count, 0)
|
|
146
|
+
FROM
|
|
147
|
+
unique_users
|
|
148
|
+
) AS users,
|
|
149
|
+
(
|
|
150
|
+
SELECT
|
|
151
|
+
JSON_AGG(ROW_TO_JSON(s))
|
|
152
|
+
FROM
|
|
153
|
+
sdk_versions_array s
|
|
154
|
+
) AS sdks;
|
|
155
|
+
`.first();
|
|
140
156
|
}
|
|
141
157
|
const endDate = data.range?.end_date ? new Date(data.range.end_date) : new Date();
|
|
142
158
|
const startDate = new Date(range.start_date);
|
|
143
|
-
const query = `
|
|
144
|
-
WITH filtered AS (
|
|
145
|
-
SELECT *
|
|
146
|
-
FROM sdk_report_events
|
|
147
|
-
WHERE disconnect_at IS NULL
|
|
148
|
-
AND jwt_exp > NOW()
|
|
149
|
-
AND connect_at > CAST($1 AS TIMESTAMP WITH TIME ZONE)
|
|
150
|
-
AND connect_at <= CAST($2 AS TIMESTAMP WITH TIME ZONE)
|
|
151
|
-
),
|
|
152
|
-
unique_users AS (
|
|
153
|
-
SELECT COUNT(DISTINCT user_id) AS count
|
|
154
|
-
FROM filtered
|
|
155
|
-
),
|
|
156
|
-
sdk_versions_array AS (
|
|
157
|
-
SELECT sdk,
|
|
158
|
-
COUNT(*) AS total,
|
|
159
|
-
COUNT(DISTINCT client_id) AS clients,
|
|
160
|
-
COUNT(DISTINCT user_id) AS users
|
|
161
|
-
FROM filtered
|
|
162
|
-
GROUP BY sdk
|
|
163
|
-
)
|
|
164
|
-
SELECT
|
|
165
|
-
(SELECT COALESCE(count, 0) FROM unique_users) AS users,
|
|
166
|
-
(SELECT JSON_AGG(ROW_TO_JSON(s)) FROM sdk_versions_array s) AS sdks;
|
|
167
|
-
`;
|
|
168
159
|
const lt = endDate.toISOString();
|
|
169
160
|
const gt = startDate.toISOString();
|
|
170
|
-
return
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
161
|
+
return await this.db.sql`
|
|
162
|
+
WITH
|
|
163
|
+
filtered AS (
|
|
164
|
+
SELECT
|
|
165
|
+
*
|
|
166
|
+
FROM
|
|
167
|
+
sdk_report_events
|
|
168
|
+
WHERE
|
|
169
|
+
disconnect_at IS NULL
|
|
170
|
+
AND jwt_exp > NOW()
|
|
171
|
+
AND connect_at > ${{ type: 1184, value: gt }}
|
|
172
|
+
AND connect_at <= ${{ type: 1184, value: lt }}
|
|
173
|
+
),
|
|
174
|
+
unique_users AS (
|
|
175
|
+
SELECT
|
|
176
|
+
COUNT(DISTINCT user_id) AS count
|
|
177
|
+
FROM
|
|
178
|
+
filtered
|
|
179
|
+
),
|
|
180
|
+
sdk_versions_array AS (
|
|
181
|
+
SELECT
|
|
182
|
+
sdk,
|
|
183
|
+
COUNT(*) AS total,
|
|
184
|
+
COUNT(DISTINCT client_id) AS clients,
|
|
185
|
+
COUNT(DISTINCT user_id) AS users
|
|
186
|
+
FROM
|
|
187
|
+
filtered
|
|
188
|
+
GROUP BY
|
|
189
|
+
sdk
|
|
190
|
+
)
|
|
191
|
+
SELECT
|
|
192
|
+
(
|
|
193
|
+
SELECT
|
|
194
|
+
COALESCE(count, 0)
|
|
195
|
+
FROM
|
|
196
|
+
unique_users
|
|
197
|
+
) AS users,
|
|
198
|
+
(
|
|
199
|
+
SELECT
|
|
200
|
+
JSON_AGG(ROW_TO_JSON(s))
|
|
201
|
+
FROM
|
|
202
|
+
sdk_versions_array s
|
|
203
|
+
) AS sdks;
|
|
204
|
+
`.first();
|
|
177
205
|
}
|
|
178
206
|
|
|
179
207
|
private updateTableFilter() {
|
|
@@ -191,9 +219,8 @@ export class PostgresReportStorageFactory implements storage.ReportStorageFactor
|
|
|
191
219
|
const jwtExpIsoString = jwt_exp!.toISOString();
|
|
192
220
|
const { gte, lt } = this.updateTableFilter();
|
|
193
221
|
const uuid = v4();
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
statement: `
|
|
222
|
+
const result = await this.db.query({
|
|
223
|
+
statement: `
|
|
197
224
|
UPDATE sdk_report_events
|
|
198
225
|
SET connect_at = $1::timestamptz,
|
|
199
226
|
sdk = $2,
|
|
@@ -205,21 +232,20 @@ export class PostgresReportStorageFactory implements storage.ReportStorageFactor
|
|
|
205
232
|
AND connect_at >= $7::timestamptz
|
|
206
233
|
AND connect_at < $8::timestamptz;
|
|
207
234
|
`,
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
statement: `
|
|
235
|
+
params: [
|
|
236
|
+
{ type: 1184, value: connectIsoString },
|
|
237
|
+
{ type: 'varchar', value: sdk },
|
|
238
|
+
{ type: 'varchar', value: user_agent },
|
|
239
|
+
{ type: 1184, value: jwtExpIsoString },
|
|
240
|
+
{ type: 'varchar', value: user_id },
|
|
241
|
+
{ type: 'varchar', value: client_id },
|
|
242
|
+
{ type: 1184, value: gte },
|
|
243
|
+
{ type: 1184, value: lt }
|
|
244
|
+
]
|
|
245
|
+
});
|
|
246
|
+
if (result.rows.length === 0) {
|
|
247
|
+
await this.db.query({
|
|
248
|
+
statement: `
|
|
223
249
|
INSERT INTO sdk_report_events (
|
|
224
250
|
user_id, client_id, connect_at, sdk, user_agent, jwt_exp, id
|
|
225
251
|
)
|
|
@@ -231,22 +257,18 @@ export class PostgresReportStorageFactory implements storage.ReportStorageFactor
|
|
|
231
257
|
AND connect_at >= $8::timestamptz
|
|
232
258
|
AND connect_at < $9::timestamptz
|
|
233
259
|
);`,
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
console.log(result.rows);
|
|
247
|
-
}
|
|
248
|
-
} catch (error) {
|
|
249
|
-
console.log(error);
|
|
260
|
+
params: [
|
|
261
|
+
{ type: 'varchar', value: user_id },
|
|
262
|
+
{ type: 'varchar', value: client_id },
|
|
263
|
+
{ type: 1184, value: connectIsoString },
|
|
264
|
+
{ type: 'varchar', value: sdk },
|
|
265
|
+
{ type: 'varchar', value: user_agent },
|
|
266
|
+
{ type: 1184, value: jwtExpIsoString },
|
|
267
|
+
{ type: 'varchar', value: uuid },
|
|
268
|
+
{ type: 1184, value: gte },
|
|
269
|
+
{ type: 1184, value: lt }
|
|
270
|
+
]
|
|
271
|
+
});
|
|
250
272
|
}
|
|
251
273
|
}
|
|
252
274
|
async reportSdkDisconnect(data: SdkDisconnectEventData): Promise<void> {
|
|
@@ -263,33 +285,20 @@ export class PostgresReportStorageFactory implements storage.ReportStorageFactor
|
|
|
263
285
|
AND connect_at >= CAST($4 AS TIMESTAMP WITH TIME ZONE)
|
|
264
286
|
AND connect_at < CAST($5 AS TIMESTAMP WITH TIME ZONE);`;
|
|
265
287
|
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
});
|
|
277
|
-
console.log(result.rows);
|
|
278
|
-
} catch (error) {
|
|
279
|
-
console.log(error);
|
|
280
|
-
}
|
|
288
|
+
const result = await this.db.query({
|
|
289
|
+
statement: query,
|
|
290
|
+
params: [
|
|
291
|
+
{ type: 1184, value: disconnectIsoString },
|
|
292
|
+
{ type: 'varchar', value: user_id },
|
|
293
|
+
{ type: 'varchar', value: client_id },
|
|
294
|
+
{ type: 1184, value: gte },
|
|
295
|
+
{ type: 1184, value: lt }
|
|
296
|
+
]
|
|
297
|
+
});
|
|
281
298
|
}
|
|
282
299
|
async listCurrentConnections(data: ListCurrentConnectionsRequest): Promise<ListCurrentConnections> {
|
|
283
|
-
const
|
|
284
|
-
|
|
285
|
-
console.log(
|
|
286
|
-
result.results.map((result) => {
|
|
287
|
-
if (result.rows.length > 0) {
|
|
288
|
-
console.log(result.columns);
|
|
289
|
-
console.log(result.rows);
|
|
290
|
-
}
|
|
291
|
-
})
|
|
292
|
-
);
|
|
300
|
+
const rows = await this.listConnectionsDateRangeQuery(data);
|
|
301
|
+
console.log(rows);
|
|
293
302
|
return {
|
|
294
303
|
users: 0,
|
|
295
304
|
sdks: []
|