@pineliner/odb-client 1.0.0 → 1.0.2
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/database/adapters/bun-sqlite.d.ts +14 -0
- package/dist/database/adapters/bun-sqlite.d.ts.map +1 -0
- package/dist/database/adapters/libsql.d.ts +14 -0
- package/dist/database/adapters/libsql.d.ts.map +1 -0
- package/dist/database/adapters/odblite.d.ts +15 -0
- package/dist/database/adapters/odblite.d.ts.map +1 -0
- package/dist/database/index.d.ts +8 -0
- package/dist/database/index.d.ts.map +1 -0
- package/dist/database/manager.d.ts +92 -0
- package/dist/database/manager.d.ts.map +1 -0
- package/dist/database/sql-parser.d.ts +17 -0
- package/dist/database/sql-parser.d.ts.map +1 -0
- package/dist/database/types.d.ts +106 -0
- package/dist/database/types.d.ts.map +1 -0
- package/dist/index.cjs +740 -12
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +714 -8
- package/dist/service/service-client.d.ts +9 -2
- package/dist/service/service-client.d.ts.map +1 -1
- package/package.json +4 -3
- package/src/database/adapters/bun-sqlite.ts +170 -0
- package/src/database/adapters/libsql.ts +156 -0
- package/src/database/adapters/odblite.ts +181 -0
- package/src/database/index.ts +32 -0
- package/src/database/manager.ts +336 -0
- package/src/database/sql-parser.ts +112 -0
- package/src/database/types.ts +140 -0
- package/src/index.ts +28 -0
- package/src/service/service-client.ts +34 -5
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { DatabaseAdapter, Connection, BunSQLiteConfig } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* Bun SQLite adapter for DatabaseManager
|
|
4
|
+
* Wraps bun:sqlite with Connection interface
|
|
5
|
+
*/
|
|
6
|
+
export declare class BunSQLiteAdapter implements DatabaseAdapter {
|
|
7
|
+
readonly type: "bun-sqlite";
|
|
8
|
+
private config;
|
|
9
|
+
constructor(config: BunSQLiteConfig);
|
|
10
|
+
connect(config: BunSQLiteConfig): Promise<Connection>;
|
|
11
|
+
disconnect(tenantId?: string): Promise<void>;
|
|
12
|
+
isHealthy(): Promise<boolean>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=bun-sqlite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bun-sqlite.d.ts","sourceRoot":"","sources":["../../../src/database/adapters/bun-sqlite.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,UAAU,EAGV,eAAe,EAChB,MAAM,UAAU,CAAA;AAEjB;;;GAGG;AACH,qBAAa,gBAAiB,YAAW,eAAe;IACtD,QAAQ,CAAC,IAAI,EAAG,YAAY,CAAS;IACrC,OAAO,CAAC,MAAM,CAAiB;gBAEnB,MAAM,EAAE,eAAe;IAI7B,OAAO,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC;IASrD,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5C,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;CAapC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { DatabaseAdapter, Connection, LibSQLConfig } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* LibSQL adapter for DatabaseManager
|
|
4
|
+
* Wraps @libsql/client with Connection interface
|
|
5
|
+
*/
|
|
6
|
+
export declare class LibSQLAdapter implements DatabaseAdapter {
|
|
7
|
+
readonly type: "libsql";
|
|
8
|
+
private config;
|
|
9
|
+
constructor(config: LibSQLConfig);
|
|
10
|
+
connect(config: LibSQLConfig): Promise<Connection>;
|
|
11
|
+
disconnect(tenantId?: string): Promise<void>;
|
|
12
|
+
isHealthy(): Promise<boolean>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=libsql.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"libsql.d.ts","sourceRoot":"","sources":["../../../src/database/adapters/libsql.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,eAAe,EACf,UAAU,EAGV,YAAY,EACb,MAAM,UAAU,CAAA;AAEjB;;;GAGG;AACH,qBAAa,aAAc,YAAW,eAAe;IACnD,QAAQ,CAAC,IAAI,EAAG,QAAQ,CAAS;IACjC,OAAO,CAAC,MAAM,CAAc;gBAEhB,MAAM,EAAE,YAAY;IAI1B,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IAUlD,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5C,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;CAYpC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { DatabaseAdapter, Connection, ODBLiteConfig } from '../types';
|
|
2
|
+
/**
|
|
3
|
+
* ODB-Lite adapter for DatabaseManager
|
|
4
|
+
* Wraps ServiceClient and ODBLiteClient with Connection interface
|
|
5
|
+
*/
|
|
6
|
+
export declare class ODBLiteAdapter implements DatabaseAdapter {
|
|
7
|
+
readonly type: "odblite";
|
|
8
|
+
private config;
|
|
9
|
+
private serviceClient;
|
|
10
|
+
constructor(config: ODBLiteConfig);
|
|
11
|
+
connect(config: any): Promise<Connection>;
|
|
12
|
+
disconnect(tenantId?: string): Promise<void>;
|
|
13
|
+
isHealthy(): Promise<boolean>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=odblite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"odblite.d.ts","sourceRoot":"","sources":["../../../src/database/adapters/odblite.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,eAAe,EACf,UAAU,EAGV,aAAa,EACd,MAAM,UAAU,CAAA;AAEjB;;;GAGG;AACH,qBAAa,cAAe,YAAW,eAAe;IACpD,QAAQ,CAAC,IAAI,EAAG,SAAS,CAAS;IAClC,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,aAAa,CAAe;gBAExB,MAAM,EAAE,aAAa;IAQ3B,OAAO,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC;IA2BzC,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa5C,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;CAQpC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { DatabaseManager } from './manager';
|
|
2
|
+
export { parseSQL, splitSQLStatements } from './sql-parser';
|
|
3
|
+
export type { ParsedStatements, SQLParserOptions } from './sql-parser';
|
|
4
|
+
export { BunSQLiteAdapter } from './adapters/bun-sqlite';
|
|
5
|
+
export { LibSQLAdapter } from './adapters/libsql';
|
|
6
|
+
export { ODBLiteAdapter } from './adapters/odblite';
|
|
7
|
+
export type { TenancyMode, BackendType, QueryResult, Connection, DatabaseAdapter, PreparedStatement, DatabaseManagerConfig, MigrationConfig, BunSQLiteConfig, LibSQLConfig, ODBLiteConfig, TenantInfo, } from './types';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAG3C,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAC3D,YAAY,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAGtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAGnD,YAAY,EAEV,WAAW,EACX,WAAW,EACX,WAAW,EACX,UAAU,EACV,eAAe,EACf,iBAAiB,EAGjB,qBAAqB,EACrB,eAAe,EACf,eAAe,EACf,YAAY,EACZ,aAAa,EAGb,UAAU,GACX,MAAM,SAAS,CAAA"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import type { DatabaseManagerConfig, Connection } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Database factory for creating and managing multiple databases
|
|
4
|
+
*
|
|
5
|
+
* Features:
|
|
6
|
+
* - Creates multiple databases from single manager instance
|
|
7
|
+
* - Supports libsql, bun:sqlite, and ODB-Lite backends
|
|
8
|
+
* - Connection pooling with LRU eviction
|
|
9
|
+
* - Automatic schema migrations
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* const dbManager = new DatabaseManager({
|
|
14
|
+
* backend: 'libsql',
|
|
15
|
+
* databasePath: './data'
|
|
16
|
+
* })
|
|
17
|
+
*
|
|
18
|
+
* // Create databases
|
|
19
|
+
* await dbManager.createDatabase('identity', { schemaContent })
|
|
20
|
+
* await dbManager.createDatabase('analytics', { schemaContent })
|
|
21
|
+
*
|
|
22
|
+
* // Get connections
|
|
23
|
+
* const identityDB = await dbManager.getConnection('identity')
|
|
24
|
+
* const analyticsDB = await dbManager.getConnection('analytics')
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export declare class DatabaseManager {
|
|
28
|
+
private config;
|
|
29
|
+
private adapter;
|
|
30
|
+
private connections;
|
|
31
|
+
private connectionTimestamps;
|
|
32
|
+
private maxConnections;
|
|
33
|
+
constructor(config: DatabaseManagerConfig);
|
|
34
|
+
/**
|
|
35
|
+
* Create a new database
|
|
36
|
+
* @param name - Database name (becomes filename or ODB-Lite database name)
|
|
37
|
+
* @param options - Optional creation options
|
|
38
|
+
*/
|
|
39
|
+
createDatabase(name: string, options?: {
|
|
40
|
+
schemaContent?: string;
|
|
41
|
+
}): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* Check if a database exists
|
|
44
|
+
* @param name - Database name
|
|
45
|
+
* @returns true if database exists, false otherwise
|
|
46
|
+
*
|
|
47
|
+
* Note: For local backends (libsql, bun-sqlite), checks file existence.
|
|
48
|
+
* For ODB-Lite, checks if database is in connection cache.
|
|
49
|
+
*/
|
|
50
|
+
databaseExists(name: string): Promise<boolean>;
|
|
51
|
+
/**
|
|
52
|
+
* Get connection to a database
|
|
53
|
+
* @param name - Database name
|
|
54
|
+
*
|
|
55
|
+
* If database exists on disk but not in cache, it will be connected automatically.
|
|
56
|
+
* If database doesn't exist at all, an error will be thrown.
|
|
57
|
+
*/
|
|
58
|
+
getConnection(name: string): Promise<Connection>;
|
|
59
|
+
/**
|
|
60
|
+
* Delete a database
|
|
61
|
+
* @param name - Database name
|
|
62
|
+
*/
|
|
63
|
+
deleteDatabase(name: string): Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* Execute SQL content on a database connection
|
|
66
|
+
* Useful for running migrations or initial schema
|
|
67
|
+
* @param name - Database name
|
|
68
|
+
* @param sqlContent - SQL content to execute
|
|
69
|
+
*/
|
|
70
|
+
executeSQLFile(name: string, sqlContent: string): Promise<void>;
|
|
71
|
+
/**
|
|
72
|
+
* List all managed databases
|
|
73
|
+
*/
|
|
74
|
+
listDatabases(): Promise<string[]>;
|
|
75
|
+
/**
|
|
76
|
+
* Close all connections
|
|
77
|
+
*/
|
|
78
|
+
close(): Promise<void>;
|
|
79
|
+
/**
|
|
80
|
+
* Run migrations on a connection
|
|
81
|
+
*/
|
|
82
|
+
private runMigrations;
|
|
83
|
+
/**
|
|
84
|
+
* Get database-specific configuration
|
|
85
|
+
*/
|
|
86
|
+
private getDatabaseConfig;
|
|
87
|
+
/**
|
|
88
|
+
* Evict least recently used connection
|
|
89
|
+
*/
|
|
90
|
+
private evictLRU;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/database/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,qBAAqB,EAErB,UAAU,EAIX,MAAM,SAAS,CAAA;AAOhB;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,WAAW,CAAqC;IAGxD,OAAO,CAAC,oBAAoB,CAAiC;IAC7D,OAAO,CAAC,cAAc,CAAQ;gBAElB,MAAM,EAAE,qBAAqB;IA6BzC;;;;OAIG;IACG,cAAc,CAClB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GACnC,OAAO,CAAC,IAAI,CAAC;IA0BhB;;;;;;;OAOG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA6BpD;;;;;;OAMG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAkCtD;;;OAGG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBjD;;;;;OAKG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKrE;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIxC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAa5B;;OAEG;YACW,aAAa;IAoC3B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAyBzB;;OAEG;YACW,QAAQ;CAqBvB"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface ParsedStatements {
|
|
2
|
+
pragmaStatements: string[];
|
|
3
|
+
regularStatements: string[];
|
|
4
|
+
}
|
|
5
|
+
export interface SQLParserOptions {
|
|
6
|
+
separatePragma?: boolean;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Parse SQL file into statements, separating PRAGMA from regular SQL
|
|
10
|
+
* Handles comments, quotes, and semicolons properly
|
|
11
|
+
*/
|
|
12
|
+
export declare function parseSQL(sqlContent: string, options?: SQLParserOptions): ParsedStatements;
|
|
13
|
+
/**
|
|
14
|
+
* Simple split for systems that don't need PRAGMA separation
|
|
15
|
+
*/
|
|
16
|
+
export declare function splitSQLStatements(sqlContent: string): string[];
|
|
17
|
+
//# sourceMappingURL=sql-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql-parser.d.ts","sourceRoot":"","sources":["../../src/database/sql-parser.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,iBAAiB,EAAE,MAAM,EAAE,CAAA;CAC5B;AAED,MAAM,WAAW,gBAAgB;IAC/B,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,gBAAgB,CA0B7F;AAkED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAG/D"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tenancy modes supported by DatabaseManager
|
|
3
|
+
*/
|
|
4
|
+
export type TenancyMode = 'single-db' | 'multi-tenant' | 'metastore' | 'dual-mode';
|
|
5
|
+
/**
|
|
6
|
+
* Backend database types
|
|
7
|
+
*/
|
|
8
|
+
export type BackendType = 'bun-sqlite' | 'libsql' | 'odblite';
|
|
9
|
+
/**
|
|
10
|
+
* Query result from any backend
|
|
11
|
+
*/
|
|
12
|
+
export interface QueryResult<T = any> {
|
|
13
|
+
rows: T[];
|
|
14
|
+
rowsAffected?: number;
|
|
15
|
+
lastInsertRowid?: number | bigint;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Unified database connection interface
|
|
19
|
+
* All backends implement this through adapters
|
|
20
|
+
*/
|
|
21
|
+
export interface Connection {
|
|
22
|
+
query<T = any>(strings: TemplateStringsArray, ...values: any[]): Promise<QueryResult<T>>;
|
|
23
|
+
execute(sql: string | {
|
|
24
|
+
sql: string;
|
|
25
|
+
args?: any[];
|
|
26
|
+
}, params?: any[]): Promise<QueryResult>;
|
|
27
|
+
prepare(sql: string): PreparedStatement;
|
|
28
|
+
transaction<T>(fn: (tx: Connection) => Promise<T>): Promise<T>;
|
|
29
|
+
close(): Promise<void>;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Prepared statement interface
|
|
33
|
+
*/
|
|
34
|
+
export interface PreparedStatement {
|
|
35
|
+
execute(params?: any[]): Promise<QueryResult>;
|
|
36
|
+
all(params?: any[]): Promise<any[]>;
|
|
37
|
+
get(params?: any[]): Promise<any | null>;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Database backend adapter interface
|
|
41
|
+
*/
|
|
42
|
+
export interface DatabaseAdapter {
|
|
43
|
+
readonly type: BackendType;
|
|
44
|
+
connect(config: any): Promise<Connection>;
|
|
45
|
+
disconnect(tenantId?: string): Promise<void>;
|
|
46
|
+
isHealthy(): Promise<boolean>;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Migration configuration
|
|
50
|
+
*/
|
|
51
|
+
export interface MigrationConfig {
|
|
52
|
+
schemaContent: string;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* DatabaseManager configuration
|
|
56
|
+
* Simplified: Manager defines WHERE databases go, createDatabase defines WHAT
|
|
57
|
+
*/
|
|
58
|
+
export interface DatabaseManagerConfig {
|
|
59
|
+
backend: BackendType;
|
|
60
|
+
databasePath: string;
|
|
61
|
+
libsql?: {
|
|
62
|
+
encryptionKey?: string;
|
|
63
|
+
authToken?: string;
|
|
64
|
+
};
|
|
65
|
+
odblite?: {
|
|
66
|
+
serviceUrl: string;
|
|
67
|
+
apiKey: string;
|
|
68
|
+
nodeId?: string;
|
|
69
|
+
};
|
|
70
|
+
connectionPoolSize?: number;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Bun SQLite adapter config
|
|
74
|
+
*/
|
|
75
|
+
export interface BunSQLiteConfig {
|
|
76
|
+
databasePath: string;
|
|
77
|
+
readonly?: boolean;
|
|
78
|
+
create?: boolean;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* LibSQL adapter config
|
|
82
|
+
*/
|
|
83
|
+
export interface LibSQLConfig {
|
|
84
|
+
url: string;
|
|
85
|
+
authToken?: string;
|
|
86
|
+
encryptionKey?: string;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* ODB-Lite adapter config
|
|
90
|
+
*/
|
|
91
|
+
export interface ODBLiteConfig {
|
|
92
|
+
serviceUrl: string;
|
|
93
|
+
apiKey: string;
|
|
94
|
+
nodeId?: string;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Tenant database info
|
|
98
|
+
*/
|
|
99
|
+
export interface TenantInfo {
|
|
100
|
+
tenantId: string;
|
|
101
|
+
databaseHash?: string;
|
|
102
|
+
databasePath?: string;
|
|
103
|
+
createdAt: Date;
|
|
104
|
+
metadata?: Record<string, any>;
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/database/types.ts"],"names":[],"mappings":"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"}
|