prorm API Reference
    Preparing search index...

    Interface Dialect

    The contract every SQL engine implements.

    A dialect owns everything engine-specific: identifier quoting, value escaping, how DDL is written, which clauses are legal, and how pagination and locking are spelled. Model code builds the same FindOptions regardless, and the dialect is the single place that turns it into SQL for one engine — which is why LIMIT ... OFFSET on PostgreSQL becomes OFFSET ... FETCH NEXT on MSSQL without the caller changing.

    interface Dialect {
        name: string;
        library: string;
        connect(): Promise<void>;
        disconnect(): Promise<void>;
        getConnection(): any;
        isConnected(): boolean;
        query(sql: string, options?: QueryOptions): Promise<QueryResult>;
        queryStream(sql: string, options?: StreamOptions): Readable;
        escape(value: any): string;
        escapeId(identifier: string): string;
        quoteIdentifier(identifier: string): string;
        quoteTable(tableName: string, schema?: string): string;
        createSchema(schema: string): Promise<void>;
        dropSchema(schema: string, options?: DropSchemaOptions): Promise<void>;
        showAllSchemas(): Promise<string[]>;
        listSchemas(): Promise<string[]>;
        createDatabaseSQL(
            options: {
                name: string;
                encoding?: string;
                lcCollate?: string;
                lcCtype?: string;
                template?: string;
                tablespace?: string;
                collate?: string;
                isTemplate?: boolean;
            },
        ): string;
        dropDatabaseSQL(name: string): string;
        createSavepointSQL(name?: string): string;
        releaseSavepointSQL(name: string): string;
        rollbackToSavepointSQL(name: string): string;
        createExtension(
            extensionName: string,
            options?: CreateExtensionOptions,
        ): Promise<void>;
        dropExtension(
            extensionName: string,
            options?: DropExtensionOptions,
        ): Promise<void>;
        getExtensions(): Promise<ExtensionInfo[]>;
        hasExtension(extensionName: string): Promise<boolean>;
        getDatabaseVersion(): Promise<string>;
        createTable(
            tableName: string,
            columns: Record<string, ColumnDefinition>,
            options?: TableOptions,
        ): Promise<void>;
        dropTable(tableName: string, options?: DropTableOptions): Promise<void>;
        createPartitionedTable(
            tableName: string,
            columns: Record<string, ColumnDefinition>,
            options?: TableOptions & {
                partitionBy: {
                    type: "range" | "list" | "hash";
                    column: string | string[];
                };
                partitions?: {
                    name: string;
                    bound?: PartitionBound;
                    tablespace?: string;
                    storageParameters?: Record<string, string | number>;
                }[];
            },
        ): Promise<void>;
        createPartition(options: CreatePartitionOptions): Promise<void>;
        attachPartition(options: AttachPartitionOptions): Promise<void>;
        detachPartition(options: DetachPartitionOptions): Promise<void>;
        dropPartition(
            partitionName: string,
            options?: { ifExists?: boolean; cascade?: boolean },
        ): Promise<void>;
        createView(
            viewName: string,
            query: string,
            options?: ViewOptions,
        ): Promise<void>;
        dropView(viewName: string, options?: DropViewOptions): Promise<void>;
        addColumn(
            tableName: string,
            columnName: string,
            definition: ColumnDefinition,
        ): Promise<void>;
        removeColumn(tableName: string, columnName: string): Promise<void>;
        changeColumn(
            tableName: string,
            columnName: string,
            definition: ColumnDefinition,
        ): Promise<void>;
        renameColumn(
            tableName: string,
            oldColumnName: string,
            newColumnName: string,
        ): Promise<void>;
        addForeignKey(
            tableName: string,
            columnName: string,
            referencedTableName: string,
            referencedColumnName: string,
            options?: any,
        ): Promise<void>;
        bulkInsert(
            tableName: string,
            records: Record<string, any>[],
            options?: any,
        ): Promise<QueryResult>;
        showTables(): Promise<string[]>;
        showViews(): Promise<string[]>;
        showConstraints(tableName: string): Promise<any[]>;
        addConstraint(
            tableName: string,
            options: {
                type: "UNIQUE" | "PRIMARY KEY" | "FOREIGN KEY" | "CHECK";
                fields: string[];
                name?: string;
                references?: { table: string; fields: string[] };
                check?: string;
            },
        ): Promise<void>;
        removeConstraint(tableName: string, constraintName: string): Promise<void>;
        showIndexes(tableName: string): Promise<any[]>;
        describeTable(tableName: string): Promise<TableDescription>;
        renameTable(oldName: string, newName: string): Promise<void>;
        addIndex(
            tableName: string,
            indexName: string,
            fields: string[],
            options?: IndexOptions,
        ): Promise<void>;
        removeIndex(tableName: string, indexName: string): Promise<void>;
        createIndex(tableName: string, indexDef: IndexDefinition): Promise<void>;
        createFulltextIndex(
            tableName: string,
            indexName: string,
            fields: string[],
            options?: { parser?: string; comment?: string },
        ): Promise<void>;
        createSpatialIndex(
            tableName: string,
            indexName: string,
            fields: string[],
            options?: { storage?: string; srid?: number },
        ): Promise<void>;
        dropIndex(
            tableName: string,
            indexName: string,
            options?: DropIndexOptions,
        ): Promise<void>;
        createConstraint(
            tableName: string,
            constraintDef: ConstraintDefinition,
        ): Promise<void>;
        dropConstraint(
            tableName: string,
            constraintName: string,
            options?: DropConstraintOptions,
        ): Promise<void>;
        changeOwner(newOwner: string, tableName: string): Promise<void>;
        createForeignDataWrapper(
            fdwName: string,
            options?: { handler?: string },
        ): Promise<void>;
        dropForeignDataWrapper(
            fdwName: string,
            options?: { ifExists?: boolean },
        ): Promise<void>;
        createForeignServer(
            serverName: string,
            fdwName: string,
            options?: { options?: Record<string, string>; ifNotExists?: boolean },
        ): Promise<void>;
        dropForeignServer(
            serverName: string,
            options?: { ifExists?: boolean; cascade?: boolean },
        ): Promise<void>;
        createForeignTable(
            tableName: string,
            columns: Record<string, { type: string }>,
            options?: { serverName?: string; ifNotExists?: boolean },
        ): Promise<void>;
        createSecurityPolicy(
            policyName: string,
            tableName: string,
            options?: { predicate?: string },
        ): Promise<void>;
        dropSecurityPolicy(policyName: string, tableName: string): Promise<void>;
        startTransaction(options?: TransactionOptions): Promise<Transaction>;
        commitTransaction(transaction: Transaction): Promise<void>;
        rollbackTransaction(transaction: Transaction): Promise<void>;
        getDataTypeSql(dataType: DataType): string;
        buildWhereClause(
            where: WhereOptions,
            options?: BuildOptions,
        ): { sql: string; values: any[] };
        buildOrderClause(order: Order, options?: BuildOptions): string;
        buildLimitOffset(limit?: string | number, offset?: string | number): string;
        buildInsertQuery(
            tableName: string,
            values: Record<string, any>,
            options?: InsertOptions,
        ): { sql: string; values: any[] };
        buildUpdateQuery(
            tableName: string,
            values: Record<string, any>,
            where: WhereOptions,
            options?: UpdateOptions,
        ): { sql: string; values: any[] };
        buildDeleteQuery(
            tableName: string,
            where: WhereOptions,
            options?: DeleteOptions,
        ): { sql: string; values: any[] };
        buildSelectQuery(options: SelectOptions): { sql: string; values: any[] };
        buildUpsertQuery(
            tableName: string,
            values: Record<string, any>,
            options?: UpsertQueryOptions,
        ): { sql: string; values: any[] };
        buildIncrementQuery(
            tableName: string,
            fields: string | string[] | Record<string, number>,
            where: WhereOptions,
            options?: { by?: number },
        ): { sql: string; values: any[] };
        replaceReplacements(
            sql: string,
            replacements?: unknown[] | Record<string, unknown>,
        ): string;
        buildCreateServerQuery(name: string, opts: FdwForeignServerOptions): string;
        buildAlterServerQuery(
            name: string,
            opts: FdwAlterForeignServerOptions,
        ): string;
        buildDropServerQuery(
            name: string,
            opts?: { ifExists?: boolean; cascade?: boolean },
        ): string;
        buildCreateUserMappingQuery(opts: FdwUserMappingOptions): string;
        buildAlterUserMappingQuery(opts: FdwUserMappingOptions): string;
        buildDropUserMappingQuery(
            serverName: string,
            user: string,
            opts?: { ifExists?: boolean },
        ): string;
        createUserMapping(
            userName: string,
            serverName: string,
            options?: any,
        ): Promise<void>;
        dropUserMapping(
            userName: string,
            serverName: string,
            options?: any,
        ): Promise<void>;
        buildCreateForeignTableQuery(
            tableName: string,
            opts: FdwForeignTableOptions,
        ): string;
        buildDropForeignTableQuery(
            tableName: string,
            opts?: { ifExists?: boolean; cascade?: boolean },
        ): string;
        buildImportForeignSchemaQuery(
            remoteSchema: string,
            serverName: string,
            opts?: FdwImportForeignSchemaOptions,
        ): string;
        getServersQuery(): string;
        buildCreateUserQuery(username: string, options?: any): string;
        buildAlterUserQuery(username: string, options: any): string;
        buildDropUserQuery(username: string, options?: any): string;
        getUsersQuery(): string;
        buildGrantQuery(options: any): string;
        buildRevokeQuery(options: any): string;
        buildShowGrantsQuery(username: string, host?: string): string;
        buildFlushPrivilegesQuery(): string;
        buildCreateRoleQuery(roleName: string, options?: any): string;
        buildDropRoleQuery(roleName: string, options?: any): string;
        buildGrantRoleQuery(role: string, to: any, options?: any): string;
        buildRevokeRoleQuery(role: string, from: any, options?: any): string;
        getRolesQuery(): string;
        createStoredProcedure(options: StoredProcedureOptions): Promise<void>;
        createProcedure(options: StoredProcedureOptions): Promise<void>;
        dropStoredProcedure(
            procedureName: string,
            options?: DropStoredProcedureOptions,
        ): Promise<void>;
        dropProcedure(
            procedureName: string,
            options?: DropStoredProcedureOptions,
        ): Promise<void>;
        executeStoredProcedure(
            options: ExecuteStoredProcedureOptions,
        ): Promise<QueryResult>;
        hasStoredProcedure(
            procedureName: string,
            schema?: string,
        ): Promise<boolean>;
    }

    Implemented by

    Index
    connect disconnect getConnection isConnected query queryStream escape escapeId quoteIdentifier quoteTable createSchema dropSchema showAllSchemas listSchemas createDatabaseSQL dropDatabaseSQL createSavepointSQL releaseSavepointSQL rollbackToSavepointSQL createExtension dropExtension getExtensions hasExtension getDatabaseVersion createTable dropTable createPartitionedTable createPartition attachPartition detachPartition dropPartition createView dropView addColumn removeColumn changeColumn renameColumn addForeignKey bulkInsert showTables showViews showConstraints addConstraint removeConstraint showIndexes describeTable renameTable addIndex removeIndex createIndex createFulltextIndex createSpatialIndex dropIndex createConstraint dropConstraint changeOwner createForeignDataWrapper dropForeignDataWrapper createForeignServer dropForeignServer createForeignTable createSecurityPolicy dropSecurityPolicy startTransaction commitTransaction rollbackTransaction getDataTypeSql buildWhereClause buildOrderClause buildLimitOffset buildInsertQuery buildUpdateQuery buildDeleteQuery buildSelectQuery buildUpsertQuery buildIncrementQuery replaceReplacements buildCreateServerQuery buildAlterServerQuery buildDropServerQuery buildCreateUserMappingQuery buildAlterUserMappingQuery buildDropUserMappingQuery createUserMapping dropUserMapping buildCreateForeignTableQuery buildDropForeignTableQuery buildImportForeignSchemaQuery getServersQuery buildCreateUserQuery buildAlterUserQuery buildDropUserQuery getUsersQuery buildGrantQuery buildRevokeQuery buildShowGrantsQuery buildFlushPrivilegesQuery buildCreateRoleQuery buildDropRoleQuery buildGrantRoleQuery buildRevokeRoleQuery getRolesQuery createStoredProcedure createProcedure dropStoredProcedure dropProcedure executeStoredProcedure hasStoredProcedure
    name: string

    The name of the dialect

    library: string

    The database library or driver being used

    • Disconnect from the database

      Returns Promise<void>

    • Execute a query and stream the results back as a Node.js Readable (object mode — one row, or one model instance when options.mapToModel is set, per chunk) instead of buffering the whole result set in memory. Used by Model.findAllStream()/findAllIterate() for processing large tables without loading them all into memory at once.

      Native server-side cursor support (postgres/mysql/cockroachdb) is used where the driver has it; other dialects fall back to LIMIT/OFFSET-paged queries — correct and dialect-agnostic, though it does more round trips than a real cursor for very large result sets.

      Parameters

      • sql: string

        The SQL query string to stream results for

      • Optionaloptions: StreamOptions

        Streaming options (batch size, backpressure watermark, model mapping)

      Returns Readable

      const stream = dialect.queryStream('SELECT * FROM users', { batchSize: 500 });
      for await (const row of stream) { console.log(row); }
    • Escape a value for use in a query

      Parameters

      • value: any

        The value to escape

      Returns string

    • Escape an identifier (table name, column name, etc.)

      Parameters

      • identifier: string

        The identifier to escape

      Returns string

    • Quote an identifier (column name, table name)

      Parameters

      • identifier: string

        The identifier to quote

      Returns string

    • Quote a table name

      Parameters

      • tableName: string

        The table name to quote

      • Optionalschema: string

        Optional schema to prefix the table with

      Returns string

    • Create a schema

      Parameters

      • schema: string

        The schema name to create

      Returns Promise<void>

    • Show all schemas in the database

      Returns Promise<string[]>

    • List all schemas in the database

      Returns Promise<string[]>

    • Generate SQL for creating a database

      Parameters

      • options: {
            name: string;
            encoding?: string;
            lcCollate?: string;
            lcCtype?: string;
            template?: string;
            tablespace?: string;
            collate?: string;
            isTemplate?: boolean;
        }

        Database creation options

      Returns string

    • Generate SQL for dropping a database

      Parameters

      • name: string

        Database name to drop

      Returns string

    • Generate SQL for creating a savepoint

      Parameters

      • Optionalname: string

        Savepoint name (optional, will be generated if not provided)

      Returns string

    • Generate SQL for releasing a savepoint

      Parameters

      • name: string

        Savepoint name to release

      Returns string

    • Generate SQL for rolling back to a savepoint

      Parameters

      • name: string

        Savepoint name to rollback to

      Returns string

    • Check if a PostgreSQL extension is installed

      Parameters

      • extensionName: string

        Name of the extension

      Returns Promise<boolean>

      True if the extension is installed

    • Get database version

      Returns Promise<string>

    • Create a partitioned table (PostgreSQL 10+)

      Parameters

      • tableName: string

        Name of the table to create

      • columns: Record<string, ColumnDefinition>

        Column definitions

      • Optionaloptions: TableOptions & {
            partitionBy: {
                type: "range" | "list" | "hash";
                column: string | string[];
            };
            partitions?: {
                name: string;
                bound?: PartitionBound;
                tablespace?: string;
                storageParameters?: Record<string, string | number>;
            }[];
        }

        Table options including partition configuration

      Returns Promise<void>

    • Drop a partition (PostgreSQL 10+)

      Parameters

      • partitionName: string

        Name of the partition to drop

      • Optionaloptions: { ifExists?: boolean; cascade?: boolean }

        Drop options

      Returns Promise<void>

    • Create a database view

      Parameters

      • viewName: string

        Name of the view to create

      • query: string

        The SELECT query for the view

      • Optionaloptions: ViewOptions

        View options (e.g., replace if exists)

      Returns Promise<void>

    • Add a column to a table

      Parameters

      • tableName: string

        Name of the table

      • columnName: string

        Name of the new column

      • definition: ColumnDefinition

        Column definition

      Returns Promise<void>

    • Remove a column from a table

      Parameters

      • tableName: string

        Name of the table

      • columnName: string

        Name of the column to remove

      Returns Promise<void>

    • Change a column definition

      Parameters

      • tableName: string

        Name of the table

      • columnName: string

        Name of the column to change

      • definition: ColumnDefinition

        New column definition

      Returns Promise<void>

    • Rename a column

      Parameters

      • tableName: string

        Name of the table

      • oldColumnName: string

        Current column name

      • newColumnName: string

        New column name

      Returns Promise<void>

    • Add a foreign key to a table

      Parameters

      • tableName: string

        Name of the table

      • columnName: string

        Name of the column

      • referencedTableName: string

        Name of the referenced table

      • referencedColumnName: string

        Name of the referenced column

      • Optionaloptions: any

        Foreign key options

      Returns Promise<void>

    • Bulk insert records into a table

      Parameters

      • tableName: string

        Name of the table

      • records: Record<string, any>[]

        Array of records to insert

      • Optionaloptions: any

        Insert options

      Returns Promise<QueryResult>

    • Show all tables in the database

      Returns Promise<string[]>

    • Show all views in the database

      Returns Promise<string[]>

    • Show constraints for a table

      Parameters

      • tableName: string

      Returns Promise<any[]>

    • Add a constraint to a table

      Parameters

      • tableName: string
      • options: {
            type: "UNIQUE" | "PRIMARY KEY" | "FOREIGN KEY" | "CHECK";
            fields: string[];
            name?: string;
            references?: { table: string; fields: string[] };
            check?: string;
        }

      Returns Promise<void>

    • Remove a constraint from a table

      Parameters

      • tableName: string
      • constraintName: string

      Returns Promise<void>

    • Show indexes for a table

      Parameters

      • tableName: string

      Returns Promise<any[]>

    • Rename a table

      Parameters

      • oldName: string

        Current table name

      • newName: string

        New table name

      Returns Promise<void>

    • Add an index to a table

      Parameters

      • tableName: string

        Name of the table

      • indexName: string

        Name of the index

      • fields: string[]

        Fields to index

      • Optionaloptions: IndexOptions

        Index options

      Returns Promise<void>

    • Remove an index from a table

      Parameters

      • tableName: string

        Name of the table

      • indexName: string

        Name of the index

      Returns Promise<void>

    • Create an index on a table with full options support

      Parameters

      • tableName: string

        Name of the table

      • indexDef: IndexDefinition

        Index definition

      Returns Promise<void>

    • Create a fulltext index on a table

      Parameters

      • tableName: string

        Name of the table

      • indexName: string

        Name of the index

      • fields: string[]

        Fields to index

      • Optionaloptions: { parser?: string; comment?: string }

        Fulltext index options

      Returns Promise<void>

    • Create a spatial index on a table

      Parameters

      • tableName: string

        Name of the table

      • indexName: string

        Name of the index

      • fields: string[]

        Fields to index

      • Optionaloptions: { storage?: string; srid?: number }

        Spatial index options

      Returns Promise<void>

    • Drop an index from a table

      Parameters

      • tableName: string

        Name of the table

      • indexName: string

        Name of the index

      • Optionaloptions: DropIndexOptions

        Drop options

      Returns Promise<void>

    • Drop a constraint from a table

      Parameters

      • tableName: string

        Name of the table

      • constraintName: string

        Name of the constraint

      • Optionaloptions: DropConstraintOptions

        Drop options

      Returns Promise<void>

    • Change owner of a table or view

      Parameters

      • newOwner: string
      • tableName: string

      Returns Promise<void>

    • Create a foreign data wrapper (PostgreSQL)

      Parameters

      • fdwName: string
      • Optionaloptions: { handler?: string }

      Returns Promise<void>

    • Drop a foreign data wrapper (PostgreSQL)

      Parameters

      • fdwName: string
      • Optionaloptions: { ifExists?: boolean }

      Returns Promise<void>

    • Create a foreign server (PostgreSQL)

      Parameters

      • serverName: string
      • fdwName: string
      • Optionaloptions: { options?: Record<string, string>; ifNotExists?: boolean }

      Returns Promise<void>

    • Drop a foreign server (PostgreSQL)

      Parameters

      • serverName: string
      • Optionaloptions: { ifExists?: boolean; cascade?: boolean }

      Returns Promise<void>

    • Create a foreign table (PostgreSQL)

      Parameters

      • tableName: string
      • columns: Record<string, { type: string }>
      • Optionaloptions: { serverName?: string; ifNotExists?: boolean }

      Returns Promise<void>

    • Create a security policy (MSSQL Row-Level Security)

      Parameters

      • policyName: string
      • tableName: string
      • Optionaloptions: { predicate?: string }

      Returns Promise<void>

    • Drop a security policy (MSSQL Row-Level Security)

      Parameters

      • policyName: string
      • tableName: string

      Returns Promise<void>

    • Build a LIMIT/OFFSET clause

      Parameters

      • Optionallimit: string | number

        Limit value

      • Optionaloffset: string | number

        Offset value

      Returns string

    • Build an INSERT query

      Parameters

      • tableName: string

        Table name

      • values: Record<string, any>

        Values to insert

      • Optionaloptions: InsertOptions

        Query options

      Returns { sql: string; values: any[] }

    • Build an UPDATE query

      Parameters

      • tableName: string

        Table name

      • values: Record<string, any>

        Values to update

      • where: WhereOptions

        Where clause

      • Optionaloptions: UpdateOptions

        Query options

      Returns { sql: string; values: any[] }

    • Build an UPSERT query (insert or update on conflict)

      Parameters

      • tableName: string

        Table name

      • values: Record<string, any>

        Values to insert/update

      • Optionaloptions: UpsertQueryOptions

        Upsert options

      Returns { sql: string; values: any[] }

    • Build an increment query

      Parameters

      • tableName: string

        Table name

      • fields: string | string[] | Record<string, number>

        Fields to increment (field name or array of field names, or object with values)

      • where: WhereOptions

        Where clause

      • Optionaloptions: { by?: number }

        Query options (by: number)

      Returns { sql: string; values: any[] }

    • Replace placeholders in SQL with actual values Supports both named (:param) and positional (?) placeholders

      Parameters

      • sql: string

        SQL string with placeholders

      • Optionalreplacements: unknown[] | Record<string, unknown>

        Values to replace (object for named, array for positional)

      Returns string

      SQL with placeholders replaced with escaped values

    • Parameters

      • name: string
      • Optionalopts: { ifExists?: boolean; cascade?: boolean }

      Returns string

    • Parameters

      • serverName: string
      • user: string
      • Optionalopts: { ifExists?: boolean }

      Returns string

    • Create a user mapping for a foreign server

      Parameters

      • userName: string

        User name

      • serverName: string

        Foreign server name

      • Optionaloptions: any

        User mapping options

      Returns Promise<void>

    • Drop a user mapping for a foreign server

      Parameters

      • userName: string

        User name

      • serverName: string

        Foreign server name

      • Optionaloptions: any

      Returns Promise<void>

    • Parameters

      • tableName: string
      • Optionalopts: { ifExists?: boolean; cascade?: boolean }

      Returns string

    • Parameters

      • username: string
      • Optionaloptions: any

      Returns string

    • Parameters

      • username: string
      • options: any

      Returns string

    • Parameters

      • username: string
      • Optionaloptions: any

      Returns string

    • Parameters

      • username: string
      • Optionalhost: string

      Returns string

    • Parameters

      • roleName: string
      • Optionaloptions: any

      Returns string

    • Parameters

      • roleName: string
      • Optionaloptions: any

      Returns string

    • Parameters

      • role: string
      • to: any
      • Optionaloptions: any

      Returns string

    • Parameters

      • role: string
      • from: any
      • Optionaloptions: any

      Returns string

    • Parameters

      • procedureName: string
      • Optionalschema: string

      Returns Promise<boolean>