Skip to main content
Version: 7.2

abstractSchemaHelper

Base class for database-specific schema helpers. Provides SQL generation for DDL operations.

Hierarchy

Index

Constructors

constructor

Accessors

options

  • get options(): { createForeignKeyConstraints?: boolean; defaultDeleteRule?: cascade | no action | set null | set default | restrict; defaultUpdateRule?: cascade | no action | set null | set default | restrict; disableForeignKeys?: boolean; disableForeignKeysForClear?: boolean; ignorePolicies?: boolean; ignoreRoutines?: boolean; ignoreSchema?: string[]; ignoreTriggers?: boolean; managementDbName?: string; skipColumns?: Dictionary<(string | RegExp)[]>; skipTables?: (string | RegExp)[]; skipViews?: (string | RegExp)[]; tableSpace?: string }
  • Returns { createForeignKeyConstraints?: boolean; defaultDeleteRule?: cascade | no action | set null | set default | restrict; defaultUpdateRule?: cascade | no action | set null | set default | restrict; disableForeignKeys?: boolean; disableForeignKeysForClear?: boolean; ignorePolicies?: boolean; ignoreRoutines?: boolean; ignoreSchema?: string[]; ignoreTriggers?: boolean; managementDbName?: string; skipColumns?: Dictionary<(string | RegExp)[]>; skipTables?: (string | RegExp)[]; skipViews?: (string | RegExp)[]; tableSpace?: string }

    • optionalcreateForeignKeyConstraints?: boolean

      Generate foreign key constraints.

    • optionaldefaultDeleteRule?: cascade | no action | set null | set default | restrict

      Default ON DELETE rule for foreign keys. When not set, no rule is emitted and the database uses its native default (NO ACTION/RESTRICT).

    • optionaldefaultUpdateRule?: cascade | no action | set null | set default | restrict

      Default ON UPDATE rule for foreign keys. When not set, no rule is emitted and the database uses its native default (NO ACTION/RESTRICT).

    • optionaldisableForeignKeys?: boolean

      Try to disable foreign key checks during schema operations.

    • optionaldisableForeignKeysForClear?: boolean

      Try to disable foreign key checks during schema.clear(). Enabled by default for MySQL/MariaDB.

    • optionalignorePolicies?: boolean

      Leave row level security policies unmanaged. Declared policies are still created and RLS is still enabled or forced based on the entity metadata, but existing policies are never dropped or altered and RLS is never disabled or unforced — use this to protect hand-written policies from being removed when they are not mirrored in the entity definitions.

    • optionalignoreRoutines?: boolean

      Leave database stored routines (functions/procedures) unmanaged. New routines are still created, but existing routines are never dropped or altered based on the entity metadata — use this to safely adopt routine support without having pre-existing, hand-written routines removed when they are not mirrored in your metadata.

    • optionalignoreSchema?: string[]

      Schema names to ignore when comparing schemas.

    • optionalignoreTriggers?: boolean

      Leave database triggers unmanaged. Declared triggers are still created, but existing triggers are never dropped or altered based on the entity metadata — use this to protect hand-written triggers from being removed when they are not mirrored in the entity definitions.

    • optionalmanagementDbName?: string

      Database name to use for management operations (e.g., creating/dropping databases).

    • optionalskipColumns?: Dictionary<(string | RegExp)[]>

      Column names or patterns to skip during schema generation, keyed by table name.

    • optionalskipTables?: (string | RegExp)[]

      Table names or patterns to skip during schema generation.

    • optionalskipViews?: (string | RegExp)[]

      View names or patterns to skip during schema generation (e.g. PostGIS system views).

    • optionaltableSpace?: string

Methods

alterTable

  • alterTable(diff, safe): string[]
  • Returns SQL statements to apply a table difference (add/drop/alter columns, indexes, foreign keys).


    Parameters

    Returns string[]

alterTableColumn

  • alterTableColumn(column, table, changedProperties): string[]
  • Parameters

    • column: Column
    • table: DatabaseTable
    • changedProperties: Set<string>

    Returns string[]

alterTableComment

  • alterTableComment(table, comment): string
  • Parameters

    • table: DatabaseTable
    • optionalcomment: string

    Returns string

append

  • append(array, sql, pad): void
  • Parameters

    • array: string[]
    • sql: string | string[]
    • pad: boolean = false

    Returns void

appendComments

  • appendComments(table): string[]
  • Parameters

    • table: DatabaseTable

    Returns string[]

castColumn

  • castColumn(name, type): string
  • Parameters

    • name: string
    • type: string

    Returns string

createCheck

  • createCheck(table, check): string
  • Parameters

    • table: DatabaseTable
    • check: CheckDef<unknown>

    Returns string

createForeignKey

  • createForeignKey(table, foreignKey, alterTable, inline): string
  • Returns SQL to create a foreign key constraint on a table.


    Parameters

    • table: DatabaseTable
    • foreignKey: ForeignKey
    • alterTable: boolean = true
    • inline: boolean = false

    Returns string

createIndex

  • createIndex(index, table, createPrimary): string
  • Parameters

    • index: IndexDef
    • table: DatabaseTable
    • createPrimary: boolean = false

    Returns string

createMaterializedView

  • createMaterializedView(name, schema, definition, withData): string
  • Parameters

    • name: string
    • schema: undefined | string
    • definition: string
    • withData: boolean = true

    Returns string

createRoutine

  • createRoutine(_routine): string
  • Default no-op so SQLite/libSQL silent-skip routine DDL; routine-capable dialects override.


    Parameters

    Returns string

createTable

  • createTable(table, alter): string[]
  • Returns SQL statements to create a table with all its columns, primary key, indexes, and checks.


    Parameters

    • table: DatabaseTable
    • optionalalter: boolean

    Returns string[]

createTableColumn

  • createTableColumn(column, table, changedProperties): undefined | string
  • Parameters

    • column: Column
    • table: DatabaseTable
    • optionalchangedProperties: Set<string>

    Returns undefined | string

createTrigger

  • createTrigger(table, trigger): string
  • Generates SQL to create a database trigger on a table. Override in driver-specific helpers for custom DDL (e.g., PostgreSQL function wrapping).


    Parameters

    Returns string

createView

  • createView(name, schema, definition): string
  • Parameters

    • name: string
    • schema: undefined | string
    • definition: string

    Returns string

databaseExists

  • databaseExists(connection, name): Promise<boolean>
  • Parameters

    Returns Promise<boolean>

disableForeignKeysSQL

  • disableForeignKeysSQL(): string
  • Returns SQL to disable foreign key checks.


    Returns string

dropConstraint

  • dropConstraint(table, name): string
  • Parameters

    • table: string
    • name: string

    Returns string

dropForeignKey

  • dropForeignKey(tableName, constraintName): string
  • Parameters

    • tableName: string
    • constraintName: string

    Returns string

dropIndex

  • dropIndex(table, index, oldIndexName): string
  • Parameters

    • table: string
    • index: IndexDef
    • oldIndexName: string = index.keyName

    Returns string

dropMaterializedViewIfExists

  • dropMaterializedViewIfExists(name, schema): string
  • Parameters

    • name: string
    • optionalschema: string

    Returns string

dropRoutine

  • dropRoutine(_routine): string

dropTableIfExists

  • dropTableIfExists(name, schema): string
  • Returns SQL to drop a table if it exists.


    Parameters

    • name: string
    • optionalschema: string

    Returns string

dropTrigger

  • dropTrigger(table, trigger): string
  • Generates SQL to drop a database trigger from a table. Override in driver-specific helpers for custom DDL.


    Parameters

    Returns string

dropViewIfExists

  • dropViewIfExists(name, schema): string
  • Parameters

    • name: string
    • optionalschema: string

    Returns string

enableForeignKeysSQL

  • enableForeignKeysSQL(): string
  • Returns SQL to re-enable foreign key checks.


    Returns string

finalizeTable

  • finalizeTable(table, charset, collate): string
  • Parameters

    • table: DatabaseTable
    • charset: string
    • optionalcollate: string

    Returns string

getAddColumnsSQL

  • getAddColumnsSQL(table, columns): string[]
  • Returns SQL to add columns to an existing table.


    Parameters

    • table: DatabaseTable
    • columns: Column[]

    Returns string[]

getAllRoutines

getAllTables

  • getAllTables(connection, schemas, ctx): Promise<Table[]>
  • Retrieves all tables from the database.


    Parameters

    Returns Promise<Table[]>

getAlterNativeEnumSQL

  • getAlterNativeEnumSQL(name, schema, value, items, oldItems): string
  • Parameters

    • name: string
    • optionalschema: string
    • optionalvalue: string
    • optionalitems: string[]
    • optionaloldItems: string[]

    Returns string

getChangeColumnCommentSQL

  • getChangeColumnCommentSQL(tableName, to, schemaName): string
  • Parameters

    • tableName: string
    • to: Column
    • optionalschemaName: string

    Returns string

getCreateDatabaseSQL

  • getCreateDatabaseSQL(name): string
  • Parameters

    • name: string

    Returns string

getCreateIndexSQL

  • getCreateIndexSQL(tableName, index): string
  • Returns SQL to create an index on a table.


    Parameters

    Returns string

getCreateNamespaceSQL

  • getCreateNamespaceSQL(name): string
  • Parameters

    • name: string

    Returns string

getCreateNativeEnumSQL

  • getCreateNativeEnumSQL(name, values, schema): string
  • Parameters

    • name: string
    • values: unknown[]
    • optionalschema: string

    Returns string

getDatabaseExistsSQL

  • getDatabaseExistsSQL(name): string
  • Parameters

    • name: string

    Returns string

getDatabaseNotExistsError

  • getDatabaseNotExistsError(dbName): string
  • Parameters

    • dbName: string

    Returns string

getDefaultEmptyString

  • getDefaultEmptyString(): string
  • Returns string

getDropColumnsSQL

  • getDropColumnsSQL(tableName, columns, schemaName): string
  • Parameters

    • tableName: string
    • columns: Column[]
    • optionalschemaName: string

    Returns string

getDropDatabaseSQL

  • getDropDatabaseSQL(name): string
  • Parameters

    • name: string

    Returns string

getDropIndexSQL

  • getDropIndexSQL(tableName, index): string
  • Returns SQL to drop an index.


    Parameters

    Returns string

getDropNamespaceSQL

  • getDropNamespaceSQL(name): string
  • Parameters

    • name: string

    Returns string

getDropNativeEnumSQL

  • getDropNativeEnumSQL(name, schema): string
  • Parameters

    • name: string
    • optionalschema: string

    Returns string

getIndexAccessMethod

  • getIndexAccessMethod(_index): string
  • Normalized index access method (e.g. gin on PostgreSQL), empty string when the platform default applies. Used for both DDL emission and index diffing.


    Parameters

    Returns string

getListMaterializedViewsSQL

  • getListMaterializedViewsSQL(): string
  • Returns string

getListTablesSQL

  • getListTablesSQL(): string
  • Returns the SQL query to list all tables in the database.


    Returns string

getListViewsSQL

  • getListViewsSQL(): string
  • Returns string

getManagementDbName

  • getManagementDbName(): string
  • Returns string

getNamespaces

  • getNamespaces(connection, ctx): Promise<string[]>

getPartitioningRebuildSQL

  • getPartitioningRebuildSQL(rebuilds, safe): string[]
  • Generates a data-preserving rebuild for tables whose partitioning was added or changed. Empty by default; only PostgreSQL introspects partitioning, so this is never invoked for other platforms.


    Parameters

    Returns string[]

getPostAlterTable

  • getPostAlterTable(tableDiff, safe): string[]

getPreAlterTable

  • getPreAlterTable(tableDiff, safe): string[]

getPrimaryKeys

  • getPrimaryKeys(connection, indexes, tableName, schemaName): Promise<string[]>

getReferencedTableName

  • getReferencedTableName(referencedTableName, schema): string
  • Parameters

    • referencedTableName: string
    • optionalschema: string

    Returns string

getRenameColumnSQL

  • getRenameColumnSQL(tableName, oldColumnName, to, schemaName): string
  • Returns SQL to rename a column in a table.


    Parameters

    • tableName: string
    • oldColumnName: string
    • to: Column
    • optionalschemaName: string

    Returns string

getRenameIndexSQL

  • getRenameIndexSQL(tableName, index, oldIndexName): string[]
  • Parameters

    • tableName: string
    • index: IndexDef
    • oldIndexName: string

    Returns string[]

getResetSchemaSQL

  • getResetSchemaSQL(_defaultSchema): string
  • Restores the session's schema to the connection's default after a migration.


    Parameters

    • _defaultSchema: string

    Returns string

getRlsAlterSQL

  • getRlsAlterSQL(diff, safe): string[]
  • Row level security DDL for a table difference (enable/disable/force transitions + policy creation). Postgres only.


    Parameters

    Returns string[]

getRlsCreateSQL

  • getRlsCreateSQL(table): string[]
  • Row level security DDL for a freshly created table (enable/force + create policies). Postgres only.


    Parameters

    • table: DatabaseTable

    Returns string[]

getRlsDropSQL

  • getRlsDropSQL(diff, safe): string[]
  • Drops removed/changed row level security policies; emitted in the pre-alter phase, before any column drop or type alter a policy expression can block. Postgres only.


    Parameters

    Returns string[]

getSchemaBeginning

  • getSchemaBeginning(_charset, disableForeignKeys): string
  • Returns SQL to prepend to schema migration scripts (e.g., disabling FK checks).


    Parameters

    • _charset: string
    • optionaldisableForeignKeys: boolean

    Returns string

getSchemaEnd

  • getSchemaEnd(disableForeignKeys): string
  • Returns SQL to append to schema migration scripts (e.g., re-enabling FK checks).


    Parameters

    • optionaldisableForeignKeys: boolean

    Returns string

getSetSchemaSQL

  • getSetSchemaSQL(_schema): string
  • Sets the current schema for the session (e.g. SET search_path).


    Parameters

    • _schema: string

    Returns string

getTablesGroupedBySchemas

  • getTablesGroupedBySchemas(tables): Map<undefined | string, Table[]>
  • Parameters

    Returns Map<undefined | string, Table[]>

hasNonDefaultPrimaryKeyName

  • hasNonDefaultPrimaryKeyName(table): boolean
  • Parameters

    • table: DatabaseTable

    Returns boolean

inferLengthFromColumnType

  • inferLengthFromColumnType(type): undefined | number
  • Parameters

    • type: string

    Returns undefined | number

abstractloadInformationSchema

  • loadInformationSchema(schema, connection, tables, schemas, ctx): Promise<void>
  • Loads table metadata (columns, indexes, foreign keys) from the database information schema.


    Parameters

    Returns Promise<void>

loadMaterializedViews

  • loadMaterializedViews(schema, connection, schemaName, ctx): Promise<void>
  • Parameters

    Returns Promise<void>

loadViews

  • loadViews(schema, connection, schemaName, ctx): Promise<void>
  • Parameters

    Returns Promise<void>

mapForeignKeys

  • mapForeignKeys(fks, tableName, schemaName): Dictionary
  • Parameters

    • fks: any[]
    • tableName: string
    • optionalschemaName: string

    Returns Dictionary

normaliseRoutineParamDirection

  • normaliseRoutineParamDirection(direction): in | out | inout
  • T-SQL doesn't distinguish OUT from INOUT in the catalog — overrides fold 'out' into 'inout'.


    Parameters

    • direction: in | out | inout

    Returns in | out | inout

normalizeDefaultValue

  • normalizeDefaultValue(defaultValue, length, defaultValues): string | number
  • Parameters

    Returns string | number

refreshMaterializedView

  • refreshMaterializedView(name, schema, concurrently): string
  • Parameters

    • name: string
    • optionalschema: string
    • concurrently: boolean = false

    Returns string

resolveMigrationSchema

  • resolveMigrationSchema(schema): undefined | string
  • Returns undefined for schemaless drivers, throws for drivers that have schemas but no session switch.


    Parameters

    • schema: undefined | string

    Returns undefined | string

routineParamReference

  • routineParamReference(name): string
  • T-SQL requires @name inside the body; PG/MySQL/Oracle use the bare name.


    Parameters

    • name: string

    Returns string

splitTableName

  • splitTableName(name, skipDefaultSchema): [undefined | string, string]
  • Parameters

    • name: string
    • skipDefaultSchema: boolean = false

    Returns [undefined | string, string]

supportsMigrationSchema

  • supportsMigrationSchema(): boolean
  • Whether the driver supports setting a runtime schema per migration run.


    Returns boolean

supportsSchemaConstraints

  • supportsSchemaConstraints(): boolean
  • Returns boolean

tableExists

  • tableExists(connection, tableName, schemaName, ctx): Promise<boolean>
  • Checks whether a specific table exists in a given schema (not the connection's current schema).


    Parameters

    Returns Promise<boolean>

Page Options