@hozon/store-telemetry 0.1.0 → 0.2.1
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/README.md +1 -1
- package/lib/api.d.ts +1 -1
- package/lib/api.js +6 -6
- package/lib/migrations.d.ts +1 -2
- package/lib/migrations.js +5 -5
- package/lib/tables.d.ts +2 -2
- package/package.json +3 -4
package/README.md
CHANGED
package/lib/api.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Adapter } from '@hozon/adapter';
|
|
2
|
-
import type { Kysely } from '
|
|
2
|
+
import type { Kysely } from '@hozon/db';
|
|
3
3
|
import type { TelemetryTables } from './tables.js';
|
|
4
4
|
import type { TelemetryStore } from './types.js';
|
|
5
5
|
export declare function createTelemetryStoreAPI(db: Kysely<TelemetryTables>, adapter: Adapter): TelemetryStore;
|
package/lib/api.js
CHANGED
|
@@ -15,7 +15,7 @@ export function createTelemetryStoreAPI(db, adapter) {
|
|
|
15
15
|
let pairs = new Set();
|
|
16
16
|
const insertBatch = async ()=>{
|
|
17
17
|
if (batch.length === 0) return;
|
|
18
|
-
await trx.insertInto('
|
|
18
|
+
await trx.insertInto('spans').values(batch).onConflict((conflict)=>conflict.columns([
|
|
19
19
|
'trace_id',
|
|
20
20
|
'span_id'
|
|
21
21
|
]).doUpdateSet((eb)=>({
|
|
@@ -39,7 +39,7 @@ export function createTelemetryStoreAPI(db, adapter) {
|
|
|
39
39
|
});
|
|
40
40
|
},
|
|
41
41
|
async getSpans (traceID) {
|
|
42
|
-
const rows = await db.selectFrom('
|
|
42
|
+
const rows = await db.selectFrom('spans').select('data').where('trace_id', '=', traceID).orderBy('start_time').orderBy('seq').execute();
|
|
43
43
|
return rows.map((row)=>row.data);
|
|
44
44
|
},
|
|
45
45
|
async deleteByTrace (traceIDs) {
|
|
@@ -47,7 +47,7 @@ export function createTelemetryStoreAPI(db, adapter) {
|
|
|
47
47
|
return withStoreTransaction(db, async (trx)=>{
|
|
48
48
|
let count = 0;
|
|
49
49
|
for (const ids of chunk(traceIDs)){
|
|
50
|
-
const result = await trx.deleteFrom('
|
|
50
|
+
const result = await trx.deleteFrom('spans').where('trace_id', 'in', ids).executeTakeFirstOrThrow();
|
|
51
51
|
count += Number(result.numDeletedRows);
|
|
52
52
|
}
|
|
53
53
|
return count;
|
|
@@ -56,14 +56,14 @@ export function createTelemetryStoreAPI(db, adapter) {
|
|
|
56
56
|
async deleteBefore (time, params) {
|
|
57
57
|
return withStoreTransaction(db, async (trx)=>{
|
|
58
58
|
if (params?.keepTraceIDs === undefined || params.keepTraceIDs.length === 0) {
|
|
59
|
-
const result = await trx.deleteFrom('
|
|
59
|
+
const result = await trx.deleteFrom('spans').where('end_time', '<', time).executeTakeFirstOrThrow();
|
|
60
60
|
return Number(result.numDeletedRows);
|
|
61
61
|
}
|
|
62
62
|
return withKeepSet(trx, {
|
|
63
|
-
table: '
|
|
63
|
+
table: 'keep_telemetry',
|
|
64
64
|
ids: params.keepTraceIDs
|
|
65
65
|
}, async (selectKeep)=>{
|
|
66
|
-
const result = await trx.deleteFrom('
|
|
66
|
+
const result = await trx.deleteFrom('spans').where('end_time', '<', time).where('trace_id', 'not in', selectKeep()).executeTakeFirstOrThrow();
|
|
67
67
|
return Number(result.numDeletedRows);
|
|
68
68
|
});
|
|
69
69
|
});
|
package/lib/migrations.d.ts
CHANGED
package/lib/migrations.js
CHANGED
|
@@ -2,22 +2,22 @@ export function telemetryStoreMigrations(ctx) {
|
|
|
2
2
|
return {
|
|
3
3
|
'0-init': {
|
|
4
4
|
async up (db) {
|
|
5
|
-
await db.schema.createTable('
|
|
5
|
+
await db.schema.createTable('spans').addColumn('seq', ctx.types.serial, (column)=>{
|
|
6
6
|
const primary = column.primaryKey();
|
|
7
7
|
return ctx.kind === 'sqlite' ? primary.autoIncrement() : primary;
|
|
8
|
-
}).addColumn('trace_id', ctx.types.text, (column)=>column.notNull()).addColumn('span_id', ctx.types.text, (column)=>column.notNull()).addColumn('start_time', ctx.types.double, (column)=>column.notNull()).addColumn('end_time', ctx.types.double, (column)=>column.notNull()).addColumn('data', ctx.types.json, (column)=>column.notNull()).addUniqueConstraint(
|
|
8
|
+
}).addColumn('trace_id', ctx.types.text, (column)=>column.notNull()).addColumn('span_id', ctx.types.text, (column)=>column.notNull()).addColumn('start_time', ctx.types.double, (column)=>column.notNull()).addColumn('end_time', ctx.types.double, (column)=>column.notNull()).addColumn('data', ctx.types.json, (column)=>column.notNull()).addUniqueConstraint(`${ctx.tablePrefix}_spans_trace_span`, [
|
|
9
9
|
'trace_id',
|
|
10
10
|
'span_id'
|
|
11
11
|
]).execute();
|
|
12
|
-
await db.schema.createIndex(
|
|
12
|
+
await db.schema.createIndex(`${ctx.tablePrefix}_spans_trace_start_seq`).on('spans').columns([
|
|
13
13
|
'trace_id',
|
|
14
14
|
'start_time',
|
|
15
15
|
'seq'
|
|
16
16
|
]).execute();
|
|
17
|
-
await db.schema.createIndex(
|
|
17
|
+
await db.schema.createIndex(`${ctx.tablePrefix}_spans_end_time`).on('spans').column('end_time').execute();
|
|
18
18
|
},
|
|
19
19
|
async down (db) {
|
|
20
|
-
await db.schema.dropTable('
|
|
20
|
+
await db.schema.dropTable('spans').execute();
|
|
21
21
|
}
|
|
22
22
|
}
|
|
23
23
|
};
|
package/lib/tables.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { ColumnType, Generated } from '
|
|
1
|
+
import type { ColumnType, Generated } from '@hozon/db';
|
|
2
2
|
import type { StoredSpan } from './types.js';
|
|
3
3
|
export type TelemetryTables = {
|
|
4
|
-
|
|
4
|
+
spans: {
|
|
5
5
|
seq: Generated<number>;
|
|
6
6
|
trace_id: string;
|
|
7
7
|
span_id: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hozon/store-telemetry",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Portable span store for Hozon",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -18,9 +18,8 @@
|
|
|
18
18
|
],
|
|
19
19
|
"dependencies": {
|
|
20
20
|
"@hozon/adapter": "^0.1.0",
|
|
21
|
-
"@hozon/db": "^0.1
|
|
22
|
-
"@sozai/json": "^0.3.0"
|
|
23
|
-
"kysely": "^0.29.6"
|
|
21
|
+
"@hozon/db": "^0.2.1",
|
|
22
|
+
"@sozai/json": "^0.3.0"
|
|
24
23
|
},
|
|
25
24
|
"devDependencies": {
|
|
26
25
|
"@hozon/node-sqlite": "^0.1.0",
|