Skip to main content

Interface: ISql

Defined in: Data/Core/ISql.ts:53

Abstraction layer for SQL database operations.

This interface provides a clean abstraction over SQLite (or potentially other SQL databases) allowing repositories to execute queries without directly depending on the database implementation.

Implementations:

  • SqliteProvider in @bible/desktop (better-sqlite3, compiled for Electron)
  • SqliteProvider in @bible/web (better-sqlite3, for Express server)
  • Custom implementations for other platforms or testing

Example usage:

// Obtain an ISql instance from your platform's provider
const sql: ISql = createYourSqlProvider('path/to/database.db');
const user = sql.queryOne<User>('SELECT * FROM users WHERE id = ?', [userId]);
const users = sql.queryAll<User>('SELECT * FROM users WHERE age > ?', [18]);
const result = sql.execute('INSERT INTO users (name, email) VALUES (?, ?)', ['John', 'john@example.com']);

Methods

close()

close(): void

Defined in: Data/Core/ISql.ts:88

Close the database connection

Returns

void


execute()

execute(sql, params?): SqlResult

Defined in: Data/Core/ISql.ts:76

Execute a SQL statement (INSERT, UPDATE, DELETE) that doesn't return rows

Parameters

sql

string

SQL statement string

params?

SqlParameter[] | {[key: string]: SqlParameter; }

Optional bind parameters

Returns

SqlResult

Result containing number of affected rows and last insert ID


getDatabasePath()

getDatabasePath(): string

Defined in: Data/Core/ISql.ts:98

Get the file path of the database

Returns

string


isOpen()

isOpen(): boolean

Defined in: Data/Core/ISql.ts:93

Check if the database connection is open

Returns

boolean


queryAll()

queryAll<T>(sql, params?): T[]

Defined in: Data/Core/ISql.ts:68

Execute a SQL query and return all matching rows

Type Parameters

T

T = SqlRow

Parameters

sql

string

SQL query string

params?

SqlParameter[] | {[key: string]: SqlParameter; }

Optional bind parameters

Returns

T[]

Array of result rows


queryOne()

queryOne<T>(sql, params?): T | undefined

Defined in: Data/Core/ISql.ts:60

Execute a SQL query and return a single row

Type Parameters

T

T = SqlRow

Parameters

sql

string

SQL query string

params?

SqlParameter[] | {[key: string]: SqlParameter; }

Optional bind parameters

Returns

T | undefined

Single row result, or undefined if no rows match


transaction()

transaction<T>(callback): T

Defined in: Data/Core/ISql.ts:83

Execute multiple SQL statements within a transaction

Type Parameters

T

T

Parameters

callback

() => T

Function containing the operations to execute within the transaction

Returns

T

Result of the callback function