@kubun/db 0.3.5 → 0.3.7

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 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":"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"}
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
- return await this.#db.transaction().setIsolationLevel('read committed').execute(async (trx)=>{
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;
@@ -204,15 +212,24 @@ export class KubunDB {
204
212
  await this.#ready;
205
213
  const [first, ...rest] = modelIDs;
206
214
  let query = this.#db.selectFrom(`k_${first}`).selectAll();
207
- for (const model of rest){
208
- query = query.unionAll((eb)=>eb.selectFrom(`k_${model}`).selectAll());
209
- }
210
215
  if (owner != null) {
211
216
  query = query.where('owner', '=', owner);
212
217
  }
213
218
  if (filter != null) {
214
219
  query = query.where((eb)=>applyDocumentFilter(eb, filter));
215
220
  }
221
+ for (const model of rest){
222
+ query = query.unionAll((eb)=>{
223
+ let q = eb.selectFrom(`k_${model}`).selectAll();
224
+ if (owner != null) {
225
+ q = q.where('owner', '=', owner);
226
+ }
227
+ if (filter != null) {
228
+ q = q.where((eb)=>applyDocumentFilter(eb, filter));
229
+ }
230
+ return q;
231
+ });
232
+ }
216
233
  const [orderedQuery, orderedFieldsPaths] = applyDocumentOrderBy(query, orderBy, isReverse);
217
234
  const [paginatedQuery, limit] = applyPagination(orderedQuery, pagination, orderBy);
218
235
  const results = await paginatedQuery.execute();
@@ -283,6 +300,10 @@ export class KubunDB {
283
300
  ts: +doc.created_at
284
301
  })
285
302
  });
303
+ this.#logger.debug('created document {id} with model {model}', {
304
+ id,
305
+ model
306
+ });
286
307
  return document;
287
308
  }
288
309
  async saveDocument(params) {
@@ -308,6 +329,9 @@ export class KubunDB {
308
329
  ts: +doc.created_at
309
330
  })
310
331
  });
332
+ this.#logger.debug('updated document {id}', {
333
+ id
334
+ });
311
335
  return document;
312
336
  }
313
337
  async addAttachments(attachments) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kubun/db",
3
- "version": "0.3.5",
3
+ "version": "0.3.7",
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.5"
20
+ "kysely": "^0.28.9",
21
+ "@kubun/logger": "^0.3.0"
21
22
  },
22
23
  "devDependencies": {
23
24
  "@kubun/db-adapter": "^0.3.2",
24
25
  "@kubun/id": "^0.3.1",
25
- "@kubun/protocol": "^0.3.6"
26
+ "@kubun/protocol": "^0.3.10"
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:jest": "node --experimental-vm-modules ../../node_modules/jest/bin/jest.js",
35
- "test:unit": "pnpm rebuild && pnpm run test:jest",
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
  }