@quereus/plugin-leveldb 0.3.0 → 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/dist/src/provider.d.ts +13 -8
- package/dist/src/provider.d.ts.map +1 -1
- package/dist/src/provider.js +67 -30
- package/dist/src/provider.js.map +1 -1
- package/package.json +3 -3
package/dist/src/provider.d.ts
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
* LevelDB KVStore provider implementation.
|
|
3
3
|
*
|
|
4
4
|
* Manages LevelDB stores for the StoreModule.
|
|
5
|
+
*
|
|
6
|
+
* Storage naming convention:
|
|
7
|
+
* {basePath}/{schema}/{table} - Data store (row data)
|
|
8
|
+
* {basePath}/{schema}/{table}_idx_{name} - Index store (secondary indexes)
|
|
9
|
+
* {basePath}/{schema}/{table}_stats - Stats store (row count, etc.)
|
|
10
|
+
* {basePath}/__catalog__ - Catalog store (DDL metadata)
|
|
5
11
|
*/
|
|
6
12
|
import type { KVStore, KVStoreProvider } from '@quereus/store';
|
|
7
13
|
/**
|
|
@@ -31,18 +37,17 @@ export declare class LevelDBProvider implements KVStoreProvider {
|
|
|
31
37
|
private stores;
|
|
32
38
|
private catalogStore;
|
|
33
39
|
constructor(options: LevelDBProviderOptions);
|
|
34
|
-
/**
|
|
35
|
-
* Get the storage path for a table.
|
|
36
|
-
*/
|
|
37
|
-
private getStorePath;
|
|
38
|
-
/**
|
|
39
|
-
* Get the key for the store cache.
|
|
40
|
-
*/
|
|
41
|
-
private getStoreKey;
|
|
42
40
|
getStore(schemaName: string, tableName: string, options?: Record<string, unknown>): Promise<KVStore>;
|
|
41
|
+
getIndexStore(schemaName: string, tableName: string, indexName: string): Promise<KVStore>;
|
|
42
|
+
getStatsStore(schemaName: string, tableName: string): Promise<KVStore>;
|
|
43
43
|
getCatalogStore(): Promise<KVStore>;
|
|
44
44
|
closeStore(schemaName: string, tableName: string): Promise<void>;
|
|
45
|
+
closeIndexStore(schemaName: string, tableName: string, indexName: string): Promise<void>;
|
|
45
46
|
closeAll(): Promise<void>;
|
|
47
|
+
deleteIndexStore(schemaName: string, tableName: string, indexName: string): Promise<void>;
|
|
48
|
+
deleteTableStores(schemaName: string, tableName: string): Promise<void>;
|
|
49
|
+
private getOrCreateStore;
|
|
50
|
+
private closeStoreByName;
|
|
46
51
|
}
|
|
47
52
|
/**
|
|
48
53
|
* Create a LevelDB provider with the given options.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/provider.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAI/D;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACtC;;;OAGG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;GAKG;AACH,qBAAa,eAAgB,YAAW,eAAe;IACtD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,MAAM,CAAmC;IACjD,OAAO,CAAC,YAAY,CAA6B;gBAErC,OAAO,EAAE,sBAAsB;IAKrC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAMpG,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMzF,aAAa,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMtE,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC;IAWnC,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKhE,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxF,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAYzB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOzF,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAqB/D,gBAAgB;YAchB,gBAAgB;CAO9B;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,eAAe,CAEtF"}
|
package/dist/src/provider.js
CHANGED
|
@@ -2,8 +2,15 @@
|
|
|
2
2
|
* LevelDB KVStore provider implementation.
|
|
3
3
|
*
|
|
4
4
|
* Manages LevelDB stores for the StoreModule.
|
|
5
|
+
*
|
|
6
|
+
* Storage naming convention:
|
|
7
|
+
* {basePath}/{schema}/{table} - Data store (row data)
|
|
8
|
+
* {basePath}/{schema}/{table}_idx_{name} - Index store (secondary indexes)
|
|
9
|
+
* {basePath}/{schema}/{table}_stats - Stats store (row count, etc.)
|
|
10
|
+
* {basePath}/__catalog__ - Catalog store (DDL metadata)
|
|
5
11
|
*/
|
|
6
12
|
import path from 'node:path';
|
|
13
|
+
import { STORE_SUFFIX, CATALOG_STORE_NAME } from '@quereus/store';
|
|
7
14
|
import { LevelDBStore } from './store.js';
|
|
8
15
|
/**
|
|
9
16
|
* LevelDB implementation of KVStoreProvider.
|
|
@@ -20,35 +27,24 @@ export class LevelDBProvider {
|
|
|
20
27
|
this.basePath = options.basePath;
|
|
21
28
|
this.createIfMissing = options.createIfMissing ?? true;
|
|
22
29
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
return path.join(this.basePath, schemaName, tableName);
|
|
30
|
+
async getStore(schemaName, tableName, options) {
|
|
31
|
+
const storeName = `${schemaName}.${tableName}`.toLowerCase();
|
|
32
|
+
const storePath = options?.path || path.join(this.basePath, schemaName, tableName);
|
|
33
|
+
return this.getOrCreateStore(storeName, storePath);
|
|
28
34
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
return `${schemaName}.${tableName}`.toLowerCase();
|
|
35
|
+
async getIndexStore(schemaName, tableName, indexName) {
|
|
36
|
+
const storeName = `${schemaName}.${tableName}${STORE_SUFFIX.INDEX}${indexName}`.toLowerCase();
|
|
37
|
+
const storePath = path.join(this.basePath, schemaName, `${tableName}${STORE_SUFFIX.INDEX}${indexName}`);
|
|
38
|
+
return this.getOrCreateStore(storeName, storePath);
|
|
34
39
|
}
|
|
35
|
-
async
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
// Use custom path if provided, otherwise use default
|
|
40
|
-
const storePath = options?.path || this.getStorePath(schemaName, tableName);
|
|
41
|
-
store = await LevelDBStore.open({
|
|
42
|
-
path: storePath,
|
|
43
|
-
createIfMissing: this.createIfMissing,
|
|
44
|
-
});
|
|
45
|
-
this.stores.set(key, store);
|
|
46
|
-
}
|
|
47
|
-
return store;
|
|
40
|
+
async getStatsStore(schemaName, tableName) {
|
|
41
|
+
const storeName = `${schemaName}.${tableName}${STORE_SUFFIX.STATS}`.toLowerCase();
|
|
42
|
+
const storePath = path.join(this.basePath, schemaName, `${tableName}${STORE_SUFFIX.STATS}`);
|
|
43
|
+
return this.getOrCreateStore(storeName, storePath);
|
|
48
44
|
}
|
|
49
45
|
async getCatalogStore() {
|
|
50
46
|
if (!this.catalogStore) {
|
|
51
|
-
const catalogPath = path.join(this.basePath,
|
|
47
|
+
const catalogPath = path.join(this.basePath, CATALOG_STORE_NAME);
|
|
52
48
|
this.catalogStore = await LevelDBStore.open({
|
|
53
49
|
path: catalogPath,
|
|
54
50
|
createIfMissing: this.createIfMissing,
|
|
@@ -57,12 +53,12 @@ export class LevelDBProvider {
|
|
|
57
53
|
return this.catalogStore;
|
|
58
54
|
}
|
|
59
55
|
async closeStore(schemaName, tableName) {
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
56
|
+
const storeName = `${schemaName}.${tableName}`.toLowerCase();
|
|
57
|
+
await this.closeStoreByName(storeName);
|
|
58
|
+
}
|
|
59
|
+
async closeIndexStore(schemaName, tableName, indexName) {
|
|
60
|
+
const storeName = `${schemaName}.${tableName}${STORE_SUFFIX.INDEX}${indexName}`.toLowerCase();
|
|
61
|
+
await this.closeStoreByName(storeName);
|
|
66
62
|
}
|
|
67
63
|
async closeAll() {
|
|
68
64
|
for (const store of this.stores.values()) {
|
|
@@ -74,6 +70,47 @@ export class LevelDBProvider {
|
|
|
74
70
|
this.catalogStore = null;
|
|
75
71
|
}
|
|
76
72
|
}
|
|
73
|
+
async deleteIndexStore(schemaName, tableName, indexName) {
|
|
74
|
+
const storeName = `${schemaName}.${tableName}${STORE_SUFFIX.INDEX}${indexName}`.toLowerCase();
|
|
75
|
+
await this.closeStoreByName(storeName);
|
|
76
|
+
// Note: LevelDB doesn't have a built-in delete, would need fs.rm
|
|
77
|
+
// For now, just close the store - actual deletion would require filesystem ops
|
|
78
|
+
}
|
|
79
|
+
async deleteTableStores(schemaName, tableName) {
|
|
80
|
+
// Close data store
|
|
81
|
+
const dataStoreName = `${schemaName}.${tableName}`.toLowerCase();
|
|
82
|
+
await this.closeStoreByName(dataStoreName);
|
|
83
|
+
// Close stats store
|
|
84
|
+
const statsStoreName = `${schemaName}.${tableName}${STORE_SUFFIX.STATS}`.toLowerCase();
|
|
85
|
+
await this.closeStoreByName(statsStoreName);
|
|
86
|
+
// Close all index stores for this table
|
|
87
|
+
const indexPrefix = `${schemaName}.${tableName}${STORE_SUFFIX.INDEX}`.toLowerCase();
|
|
88
|
+
for (const [name, store] of this.stores) {
|
|
89
|
+
if (name.startsWith(indexPrefix)) {
|
|
90
|
+
await store.close();
|
|
91
|
+
this.stores.delete(name);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
// Note: Actual directory deletion would require filesystem operations
|
|
95
|
+
}
|
|
96
|
+
async getOrCreateStore(storeName, storePath) {
|
|
97
|
+
let store = this.stores.get(storeName);
|
|
98
|
+
if (!store) {
|
|
99
|
+
store = await LevelDBStore.open({
|
|
100
|
+
path: storePath,
|
|
101
|
+
createIfMissing: this.createIfMissing,
|
|
102
|
+
});
|
|
103
|
+
this.stores.set(storeName, store);
|
|
104
|
+
}
|
|
105
|
+
return store;
|
|
106
|
+
}
|
|
107
|
+
async closeStoreByName(storeName) {
|
|
108
|
+
const store = this.stores.get(storeName);
|
|
109
|
+
if (store) {
|
|
110
|
+
await store.close();
|
|
111
|
+
this.stores.delete(storeName);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
77
114
|
}
|
|
78
115
|
/**
|
|
79
116
|
* Create a LevelDB provider with the given options.
|
package/dist/src/provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/provider.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/provider.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quereus/plugin-leveldb",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "LevelDB storage plugin for Quereus - Node.js persistent storage",
|
|
6
6
|
"keywords": [
|
|
@@ -37,8 +37,8 @@
|
|
|
37
37
|
}
|
|
38
38
|
},
|
|
39
39
|
"peerDependencies": {
|
|
40
|
-
"@quereus/quereus": "^0.10.
|
|
41
|
-
"@quereus/store": "^0.
|
|
40
|
+
"@quereus/quereus": "^0.10.5",
|
|
41
|
+
"@quereus/store": "^0.5.0"
|
|
42
42
|
},
|
|
43
43
|
"engines": {
|
|
44
44
|
"quereus": "^0.24.0"
|