Skip to content

Commit 02c4c5b

Browse files
committed
Fix driver options.
1 parent d6fd5c7 commit 02c4c5b

File tree

8 files changed

+23
-16
lines changed

8 files changed

+23
-16
lines changed

packages/better-sqlite3-driver/src/driver.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,8 @@ export class BetterSqliteDriver implements SqliteDriverConnectionPool {
5050

5151
const connection = new ReadWriteConnectionPool({
5252
async openConnection(connectionOptions) {
53-
return new WorkerDriverConnection(workerPath, path, {
53+
return new WorkerDriverConnection(workerPath, {
54+
path,
5455
...options,
5556
readonly: connectionOptions?.readonly || false
5657
});

packages/better-sqlite3-driver/src/sync-driver.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,7 @@ export class BetterSqliteConnection implements SqliteDriverConnection {
281281
const con = new DatabaseConstructor(path, options);
282282
con.exec('PRAGMA journal_mode = WAL');
283283
con.exec('PRAGMA synchronous = normal');
284+
284285
if (options?.loadExtensions) {
285286
for (let extension of options.loadExtensions) {
286287
con.loadExtension(extension);

packages/better-sqlite3-driver/src/worker.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@ import { BetterSqliteConnection } from './sync-driver.js';
33
import {
44
retriedOpen,
55
setupDriverWorker,
6-
ConnectionOptions
6+
WorkerDriverConnectionOptions
77
} from '@sqlite-js/driver/worker_threads/setup';
88

99
setupDriverWorker({
10-
async openConnection(options: ConnectionOptions & BetterSqliteDriverOptions) {
10+
async openConnection(
11+
options: WorkerDriverConnectionOptions & BetterSqliteDriverOptions
12+
) {
1113
return retriedOpen(() => {
1214
return BetterSqliteConnection.open(options.path, options);
1315
}, 2_000);

packages/driver/src/node/driver.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@ export class NodeSqliteDriver implements SqliteDriverConnectionPool {
4848
const connection = new ReadWriteConnectionPool(
4949
{
5050
openConnection: async (connectionOptions) => {
51-
return new WorkerDriverConnection(workerPath, path, {
51+
return new WorkerDriverConnection(workerPath, {
52+
path,
5253
readonly: connectionOptions?.readonly ?? false,
5354
connectionName: connectionOptions?.connectionName,
5455
workerOptions: {

packages/driver/src/util/MultiConnectionPool.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ export class MultiConnectionPool implements SqliteDriverConnectionPool {
2121
private _queue: QueuedPoolItem[] = [];
2222
private _maxConnections: number;
2323

24+
private options: ConnectionPoolOptions;
25+
2426
[Symbol.asyncDispose]: () => Promise<void> = undefined as any;
2527

2628
constructor(
@@ -31,6 +33,7 @@ export class MultiConnectionPool implements SqliteDriverConnectionPool {
3133
this[Symbol.asyncDispose] = () => this.close();
3234
}
3335
this._maxConnections = options?.maxConnections ?? 2;
36+
this.options = options ?? {};
3437
}
3538

3639
reserveConnection(
@@ -52,6 +55,7 @@ export class MultiConnectionPool implements SqliteDriverConnectionPool {
5255
options?: ReserveConnectionOptions
5356
): Promise<SqliteDriverConnection> {
5457
const connection = await this.factory.openConnection({
58+
...this.options,
5559
...options,
5660
connectionName: `connection-${this._allConnections.size + 1}`
5761
});

packages/driver/src/util/ReadWriteConnectionPool.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,8 @@ export class ReadWriteConnectionPool implements SqliteDriverConnectionPool {
2121

2222
constructor(factory: DriverFactory, options?: ConnectionPoolOptions) {
2323
this.readPool = new MultiConnectionPool(factory, options);
24-
2524
this.initPromise = factory
26-
.openConnection({ readonly: false, connectionName: 'writer' })
25+
.openConnection({ ...options, readonly: false, connectionName: 'writer' })
2726
.then((con) => {
2827
this.writePool = new SingleConnectionPool(con);
2928
});

packages/driver/src/worker_threads/setup.ts

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,14 @@ import { isErrorResponse, WorkerDriver } from './async-commands.js';
33
import { setTimeout } from 'timers/promises';
44

55
import * as worker_threads from 'worker_threads';
6+
import type { WorkerDriverConnectionOptions } from './worker-driver.js';
67

7-
export interface ConnectionOptions {
8-
path: string;
9-
readonly?: boolean;
10-
connectionName?: string;
11-
}
8+
export type { WorkerDriverConnectionOptions };
129

1310
export interface WorkerDriverConfig {
14-
openConnection: (options: ConnectionOptions) => Promise<WorkerDriver>;
11+
openConnection: (
12+
options: WorkerDriverConnectionOptions
13+
) => Promise<WorkerDriver>;
1514
}
1615

1716
export function setupDriverWorker(config: WorkerDriverConfig) {
@@ -32,7 +31,7 @@ export function setupDriverPort(
3231

3332
if (message == 'open') {
3433
try {
35-
db = await config.openConnection(args);
34+
db = await config.openConnection(args as WorkerDriverConnectionOptions);
3635
port.postMessage({ id });
3736
opened.resolve();
3837
} catch (e: any) {

packages/driver/src/worker_threads/worker-driver.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import {
2323
} from './async-commands.js';
2424

2525
export interface WorkerDriverConnectionOptions {
26+
path: string;
2627
connectionName?: string;
2728
readonly?: boolean;
2829
workerOptions?: worker_threads.WorkerOptions;
@@ -43,14 +44,13 @@ export class WorkerDriverConnection implements SqliteDriverConnection {
4344

4445
constructor(
4546
workerPath: string | URL,
46-
path: string,
47-
options?: WorkerDriverConnectionOptions
47+
options: WorkerDriverConnectionOptions
4848
) {
4949
const worker = new worker_threads.Worker(
5050
workerPath,
5151
options?.workerOptions
5252
);
53-
this.post('open', { path, options });
53+
this.post('open', options);
5454
worker.addListener('error', (err) => {
5555
console.error('worker error', err);
5656
});

0 commit comments

Comments
 (0)