From f5fb9d1aa5f3299980d67a5dcdd07c37b76756fa Mon Sep 17 00:00:00 2001 From: Tim van Dam Date: Sat, 3 Dec 2022 19:10:45 +0100 Subject: [PATCH] refactor(sqlite): getter/setter for maxConnections --- packages/sqlite/src/sqlite-adapter.ts | 20 ++++++++++++++++++-- packages/sqlite/tests/sqlite.spec.ts | 7 ++++--- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/packages/sqlite/src/sqlite-adapter.ts b/packages/sqlite/src/sqlite-adapter.ts index 6c0c5ed9e..55e5ad665 100644 --- a/packages/sqlite/src/sqlite-adapter.ts +++ b/packages/sqlite/src/sqlite-adapter.ts @@ -176,7 +176,7 @@ export class SQLiteConnection extends SQLConnection { } export class SQLiteConnectionPool extends SQLConnectionPool { - public maxConnections: number = 10; + protected maxConnections: number = 10; protected queue: ((connection: SQLiteConnection) => void)[] = []; @@ -186,7 +186,23 @@ export class SQLiteConnectionPool extends SQLConnectionPool { constructor(protected dbPath: string | ':memory:') { super(); //memory databases can not have more than one connection - if (dbPath === ':memory:') this.maxConnections = 1; + if (dbPath === ':memory:') this.setMaxConnections(1); + } + + getMaxConnections(): number { + return this.maxConnections; + } + + setMaxConnections(maxConnections: number) { + if (maxConnections < 1) { + throw new Error('Max connections must be at least 1'); + } + + if (this.dbPath === ':memory:' && maxConnections !== 1) { + throw new Error('Memory databases can not have more than one connection'); + } + + this.maxConnections = maxConnections; } close() { diff --git a/packages/sqlite/tests/sqlite.spec.ts b/packages/sqlite/tests/sqlite.spec.ts index f8e838916..dfbe5a586 100644 --- a/packages/sqlite/tests/sqlite.spec.ts +++ b/packages/sqlite/tests/sqlite.spec.ts @@ -2,10 +2,10 @@ import { expect, test } from '@jest/globals'; import { SQLitePlatform } from '../src/sqlite-platform'; import { databaseFactory } from './factory'; import { User, UserCredentials } from '@deepkit/orm-integration'; -import { SQLiteConnection, SQLiteDatabaseAdapter, SQLiteDatabaseTransaction } from '../src/sqlite-adapter'; +import { SQLiteDatabaseAdapter, SQLiteDatabaseTransaction } from '../src/sqlite-adapter'; import { sleep } from '@deepkit/core'; import { AutoIncrement, cast, Entity, entity, PrimaryKey, Reference, ReflectionClass, serialize, typeOf, UUID, uuid } from '@deepkit/type'; -import { Database, DatabaseEntityRegistry } from '@deepkit/orm'; +import { DatabaseEntityRegistry } from '@deepkit/orm'; import { BackReference } from '@deepkit/type'; test('reflection circular reference', () => { @@ -281,7 +281,8 @@ test(':memory: connection pool', async () => { const c2 = await createConnectionOrNull(); const c3 = await createConnectionOrNull(); - expect(sqlite.connectionPool.getActiveConnections()).toBeLessThanOrEqual(sqlite.connectionPool.maxConnections); + expect(sqlite.connectionPool.getActiveConnections()) + .toBeLessThanOrEqual(sqlite.connectionPool.getMaxConnections()); expect(c1).toBeDefined(); expect(c2).toBeNull();