UNPKG

sequelize-dm

Version:

Sequelize is a promise-based Node.js ORM tool for Postgres, MySQL, MariaDB, SQLite, Microsoft SQL Server, Amazon Redshift and Snowflake’s Data Cloud. It features solid transaction support, relations, eager and lazy loading, read replication and more.

186 lines (176 loc) 4.72 kB
export type DialectSupports = { 'DEFAULT': boolean, 'DEFAULT VALUES': boolean, 'VALUES ()': boolean, 'LIMIT ON UPDATE': boolean, 'ON DUPLICATE KEY': boolean, 'ORDER NULLS': boolean, 'UNION': boolean, 'UNION ALL': boolean, 'RIGHT JOIN': boolean, EXCEPTION: boolean, forShare?: 'LOCK IN SHARE MODE' | 'FOR SHARE' | undefined, lock: boolean, lockOf: boolean, lockKey: boolean, lockOuterJoinFailure: boolean, skipLocked: boolean, finalTable: boolean, /* does the dialect support returning values for inserted/updated fields */ returnValues: false | { output: boolean, returning: boolean, }, /* features specific to autoIncrement values */ autoIncrement: { /* does the dialect require modification of insert queries when inserting auto increment fields */ identityInsert: boolean, /* does the dialect support inserting default/null values for autoincrement fields */ defaultValue: boolean, /* does the dialect support updating autoincrement fields */ update: boolean, }, /* Do we need to say DEFAULT for bulk insert */ bulkDefault: boolean, schemas: boolean, transactions: boolean, settingIsolationLevelDuringTransaction: boolean, transactionOptions: { type: boolean, }, migrations: boolean, upserts: boolean, inserts: { ignoreDuplicates: string, /* dialect specific words for INSERT IGNORE or DO NOTHING */ updateOnDuplicate: boolean | string, /* whether dialect supports ON DUPLICATE KEY UPDATE */ onConflictDoNothing: string, /* dialect specific words for ON CONFLICT DO NOTHING */ conflictFields: boolean, /* whether the dialect supports specifying conflict fields or not */ }, constraints: { restrict: boolean, addConstraint: boolean, dropConstraint: boolean, unique: boolean, default: boolean, check: boolean, foreignKey: boolean, primaryKey: boolean, }, index: { collate: boolean, length: boolean, parser: boolean, concurrently: boolean, type: boolean, using: boolean | number, functionBased: boolean, operator: boolean, where: boolean, }, groupedLimit: boolean, indexViaAlter: boolean, JSON: boolean, JSONB: boolean, ARRAY: boolean, RANGE: boolean, NUMERIC: boolean, GEOMETRY: boolean, GEOGRAPHY: boolean, REGEXP: boolean, HSTORE: boolean, TSVECTOR: boolean, deferrableConstraints: boolean, tmpTableTrigger: boolean, indexHints: boolean, searchPath: boolean, }; export abstract class AbstractDialect { /** * List of features this dialect supports. * * Important: Dialect implementations inherit these values. * When changing a default, ensure the implementations still properly declare which feature they support. */ static readonly supports: DialectSupports = { DEFAULT: true, 'DEFAULT VALUES': false, 'VALUES ()': false, 'LIMIT ON UPDATE': false, 'ON DUPLICATE KEY': true, 'ORDER NULLS': false, UNION: true, 'UNION ALL': true, 'RIGHT JOIN': true, EXCEPTION: false, lock: false, lockOf: false, lockKey: false, lockOuterJoinFailure: false, skipLocked: false, finalTable: false, returnValues: false, autoIncrement: { identityInsert: false, defaultValue: true, update: true, }, bulkDefault: false, schemas: false, transactions: true, settingIsolationLevelDuringTransaction: true, transactionOptions: { type: false, }, migrations: true, upserts: true, inserts: { ignoreDuplicates: '', updateOnDuplicate: false, onConflictDoNothing: '', conflictFields: false, }, constraints: { restrict: true, addConstraint: true, dropConstraint: true, unique: true, default: false, check: true, foreignKey: true, primaryKey: true, }, index: { collate: true, length: false, parser: false, concurrently: false, type: false, using: true, functionBased: false, operator: false, where: false, }, groupedLimit: true, indexViaAlter: false, JSON: false, JSONB: false, NUMERIC: false, ARRAY: false, RANGE: false, GEOMETRY: false, REGEXP: false, GEOGRAPHY: false, HSTORE: false, TSVECTOR: false, deferrableConstraints: false, tmpTableTrigger: false, indexHints: false, searchPath: false, }; get supports(): DialectSupports { const Dialect = this.constructor as typeof AbstractDialect; return Dialect.supports; } // TODO: Replace with QueryGenerator class once its typings are complete. declare readonly queryGenerator: unknown; }