@kubun/db 0.3.6 → 0.4.0
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/lib/db.d.ts +2 -0
- package/lib/db.d.ts.map +1 -1
- package/lib/db.js +17 -2
- package/package.json +8 -7
package/lib/db.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { EventEmitter } from '@enkaku/event';
|
|
2
2
|
import type { Adapter, AdapterTypes } from '@kubun/db-adapter';
|
|
3
3
|
import { type DocumentID, DocumentModelID } from '@kubun/id';
|
|
4
|
+
import { type Logger } from '@kubun/logger';
|
|
4
5
|
import type { DocumentModel, DocumentModelsRecord, DocumentNode } from '@kubun/protocol';
|
|
5
6
|
import { Kysely, type Migration, type Transaction } from 'kysely';
|
|
6
7
|
import type { Database, DocumentData, GraphModel, InsertDocumentAttachment, ListDocumentsParams, QueryDocumentsParams, QueryDocumentsResult } from './types.js';
|
|
@@ -22,6 +23,7 @@ export type DBEvents = {
|
|
|
22
23
|
};
|
|
23
24
|
export type DBParams<T extends AdapterTypes = AdapterTypes> = {
|
|
24
25
|
adapter: Adapter<T>;
|
|
26
|
+
logger?: Logger;
|
|
25
27
|
};
|
|
26
28
|
export type GraphModelWithRecord = GraphModel & {
|
|
27
29
|
record: DocumentModelsRecord;
|
package/lib/db.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,EAAmB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC/E,OAAO,EAAE,KAAK,UAAU,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAC5D,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AACxF,OAAO,EAAE,MAAM,EAAE,KAAK,SAAS,EAAoC,KAAK,WAAW,EAAE,MAAM,QAAQ,CAAA;AAKnG,OAAO,KAAK,EACV,QAAQ,EAER,YAAY,EAEZ,UAAU,EACV,wBAAwB,EAExB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,YAAY,CAAA;AAiDnB,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;AAElD,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,QAAQ,CAAA;IACd,QAAQ,EAAE,YAAY,CAAA;IACtB,SAAS,EAAE,MAAM,MAAM,CAAA;CACxB,CAAA;AACD,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,EAAE,QAAQ,CAAA;IACd,QAAQ,EAAE,YAAY,CAAA;IACtB,QAAQ,EAAE,YAAY,CAAA;IACtB,SAAS,EAAE,MAAM,MAAM,CAAA;CACxB,CAAA;AACD,MAAM,MAAM,kBAAkB,GAAG,oBAAoB,GAAG,oBAAoB,CAAA;AAE5E,MAAM,MAAM,QAAQ,GAAG;IACrB,gBAAgB,EAAE,kBAAkB,CAAA;CACrC,CAAA;AAED,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,IAAI;IAC5D,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
|
package/lib/db.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { EventEmitter } from '@enkaku/event';
|
|
2
2
|
import { DocumentModelID } from '@kubun/id';
|
|
3
|
+
import { getKubunLogger } from '@kubun/logger';
|
|
3
4
|
import { Kysely, Migrator, ParseJSONResultsPlugin } from 'kysely';
|
|
4
5
|
import { serializeCursor } from './cursor.js';
|
|
5
6
|
import { getMigrations } from './migrations/migrations.js';
|
|
@@ -48,6 +49,7 @@ export class KubunDB {
|
|
|
48
49
|
#adapter;
|
|
49
50
|
#db;
|
|
50
51
|
#events = new EventEmitter();
|
|
52
|
+
#logger;
|
|
51
53
|
#ready;
|
|
52
54
|
constructor(params){
|
|
53
55
|
this.#adapter = params.adapter;
|
|
@@ -57,6 +59,7 @@ export class KubunDB {
|
|
|
57
59
|
new ParseJSONResultsPlugin()
|
|
58
60
|
]
|
|
59
61
|
});
|
|
62
|
+
this.#logger = params.logger ?? getKubunLogger('db');
|
|
60
63
|
this.#ready = this.#runMigrations();
|
|
61
64
|
}
|
|
62
65
|
/** @internal */ get adapter() {
|
|
@@ -79,12 +82,14 @@ export class KubunDB {
|
|
|
79
82
|
if (result.error != null) {
|
|
80
83
|
throw result.error;
|
|
81
84
|
}
|
|
85
|
+
this.#logger.info('ready');
|
|
82
86
|
}
|
|
83
87
|
getMigrations() {
|
|
84
88
|
return getMigrations(this.#adapter);
|
|
85
89
|
}
|
|
86
90
|
async close() {
|
|
87
91
|
await this.#db.destroy();
|
|
92
|
+
this.#logger.info('closed');
|
|
88
93
|
}
|
|
89
94
|
async listGraphs() {
|
|
90
95
|
await this.#ready;
|
|
@@ -94,7 +99,7 @@ export class KubunDB {
|
|
|
94
99
|
await this.#ready;
|
|
95
100
|
const graphModelID = params.id ?? globalThis.crypto.randomUUID();
|
|
96
101
|
const name = params.name ?? graphModelID;
|
|
97
|
-
|
|
102
|
+
await this.#db.transaction().setIsolationLevel('read committed').execute(async (trx)=>{
|
|
98
103
|
await trx.insertInto('kubun_graph_models').values({
|
|
99
104
|
aliases: JSON.stringify(params.aliases ?? {}),
|
|
100
105
|
id: graphModelID,
|
|
@@ -120,8 +125,11 @@ export class KubunDB {
|
|
|
120
125
|
added.add(id);
|
|
121
126
|
}));
|
|
122
127
|
}
|
|
123
|
-
return graphModelID;
|
|
124
128
|
});
|
|
129
|
+
this.#logger.debug('created graph {id}', {
|
|
130
|
+
id: graphModelID
|
|
131
|
+
});
|
|
132
|
+
return graphModelID;
|
|
125
133
|
}
|
|
126
134
|
async #addDocumentModel(params) {
|
|
127
135
|
const { id, graphModelID, model, transaction } = params;
|
|
@@ -292,6 +300,10 @@ export class KubunDB {
|
|
|
292
300
|
ts: +doc.created_at
|
|
293
301
|
})
|
|
294
302
|
});
|
|
303
|
+
this.#logger.debug('created document {id} with model {model}', {
|
|
304
|
+
id,
|
|
305
|
+
model
|
|
306
|
+
});
|
|
295
307
|
return document;
|
|
296
308
|
}
|
|
297
309
|
async saveDocument(params) {
|
|
@@ -317,6 +329,9 @@ export class KubunDB {
|
|
|
317
329
|
ts: +doc.created_at
|
|
318
330
|
})
|
|
319
331
|
});
|
|
332
|
+
this.#logger.debug('updated document {id}', {
|
|
333
|
+
id
|
|
334
|
+
});
|
|
320
335
|
return document;
|
|
321
336
|
}
|
|
322
337
|
async addAttachments(attachments) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kubun/db",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"license": "see LICENSE.md",
|
|
5
5
|
"keywords": [],
|
|
6
6
|
"type": "module",
|
|
@@ -17,12 +17,13 @@
|
|
|
17
17
|
"dependencies": {
|
|
18
18
|
"@enkaku/codec": "^0.12.0",
|
|
19
19
|
"@enkaku/event": "^0.12.1",
|
|
20
|
-
"kysely": "^0.28.
|
|
20
|
+
"kysely": "^0.28.9",
|
|
21
|
+
"@kubun/logger": "^0.4.0"
|
|
21
22
|
},
|
|
22
23
|
"devDependencies": {
|
|
23
|
-
"@kubun/
|
|
24
|
-
"@kubun/
|
|
25
|
-
"@kubun/
|
|
24
|
+
"@kubun/id": "^0.4.0",
|
|
25
|
+
"@kubun/db-adapter": "^0.4.0",
|
|
26
|
+
"@kubun/protocol": "^0.4.0"
|
|
26
27
|
},
|
|
27
28
|
"scripts": {
|
|
28
29
|
"build:clean": "del lib",
|
|
@@ -31,8 +32,8 @@
|
|
|
31
32
|
"build:types:ci": "tsc --emitDeclarationOnly --declarationMap false",
|
|
32
33
|
"build": "pnpm run build:clean && pnpm run build:js && pnpm run build:types",
|
|
33
34
|
"test:types": "tsc --noEmit --skipLibCheck",
|
|
34
|
-
"test:
|
|
35
|
-
"test:unit": "pnpm rebuild && pnpm run test:
|
|
35
|
+
"test:vitest": "vitest run",
|
|
36
|
+
"test:unit": "pnpm rebuild && pnpm run test:vitest",
|
|
36
37
|
"test": "pnpm run test:types && pnpm run test:unit"
|
|
37
38
|
}
|
|
38
39
|
}
|