Skip to content

remix/data-table · Interface

View Source

DatabaseDriver

Summary

Low-level contract that connects a Database to a database engine.

Signature

interface DatabaseDriver<dialect> {
  capabilities: DatabaseCapabilities
  dialect: dialect
  beginTransaction(options: TransactionOptions): Promise<TransactionToken>
  close(): void | Promise<void>
  commitTransaction(token: TransactionToken): Promise<void>
  createSavepoint(token: TransactionToken, name: string): Promise<void>
  execute(request: DataManipulationRequest): Promise<DataManipulationResult>
  executeScript(sql: string, transaction: TransactionToken): Promise<void>
  hasColumn(table: TableRef, column: string, transaction: TransactionToken): Promise<boolean>
  hasTable(table: TableRef, transaction: TransactionToken): Promise<boolean>
  releaseSavepoint(token: TransactionToken, name: string): Promise<void>
  rollbackToSavepoint(token: TransactionToken, name: string): Promise<void>
  rollbackTransaction(token: TransactionToken): Promise<void>
  wipe(): Promise<void>
  withMigrationLock<result>(
    name: string,
    run: (driver: DatabaseDriver<dialect>) => Promise<result>,
  ): Promise<result>
}

Properties

capabilities

Immutable feature flags used by shared query and migration behavior.

dialect

Stable identifier for the SQL dialect.

Methods

beginTransaction(options: TransactionOptions): Promise<TransactionToken>

Starts a new database transaction.

close(): void | Promise<void>

Releases connection handles owned by the driver. Must be safe to call repeatedly.

commitTransaction(token: TransactionToken): Promise<void>

Commits an open transaction.

createSavepoint(token: TransactionToken, name: string): Promise<void>

Creates a savepoint inside an open transaction.

execute(request: DataManipulationRequest): Promise<DataManipulationResult>

Executes a data-manipulation request.

executeScript(sql: string, transaction: TransactionToken): Promise<void>

Executes a raw SQL script that may contain multiple statements.

hasColumn(table: TableRef, column: string, transaction: TransactionToken): Promise<boolean>

Checks whether a column exists on a table.

hasTable(table: TableRef, transaction: TransactionToken): Promise<boolean>

Checks whether a table exists.

releaseSavepoint(token: TransactionToken, name: string): Promise<void>

Releases a previously created savepoint.

rollbackToSavepoint(token: TransactionToken, name: string): Promise<void>

Rolls back to a previously created savepoint.

rollbackTransaction(token: TransactionToken): Promise<void>

Rolls back an open transaction.

wipe(): Promise<void>

Destructively recreates the configured database.

withMigrationLock<result>(name: string, run: (driver: DatabaseDriver<dialect>) => Promise<result>): Promise<result>

Runs migration work while holding a driver-specific lock.

The callback receives a driver bound to the connection that owns the lock. Drivers must release the lock when the callback rejects as well as when it resolves.

Parameters

name

Logical migration lock name.

run

Migration work to run with the connection-bound driver.