123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- import { buildInvalidOptionReceivedError } from '@sequelize/core/_non-semver-use-at-your-own-risk_/utils/check.js';
- import { createSequelizeInstance, expectPerDialect, sequelize } from '../../support';
- const dialect = sequelize.dialect;
- describe('QueryGenerator#truncateTableQuery', () => {
- const queryGenerator = sequelize.queryGenerator;
- it('produces a TRUNCATE TABLE query for a table', () => {
- expectPerDialect(() => queryGenerator.truncateTableQuery('myTable'), {
- mssql: 'TRUNCATE TABLE [myTable]',
- sqlite3: ['DELETE FROM `myTable`'],
- 'db2 ibmi': 'TRUNCATE TABLE "myTable" IMMEDIATE',
- 'mariadb mysql': 'TRUNCATE `myTable`',
- 'postgres snowflake': 'TRUNCATE "myTable"',
- });
- });
- it('produces a TRUNCATE TABLE query with CASCADE for a table', () => {
- expectPerDialect(() => queryGenerator.truncateTableQuery('myTable', { cascade: true }), {
- default: buildInvalidOptionReceivedError('truncateTableQuery', dialect.name, ['cascade']),
- postgres: `TRUNCATE "myTable" CASCADE`,
- });
- });
- it('produces a TRUNCATE TABLE query with RESTART IDENTITY for a table', () => {
- expectPerDialect(
- () => queryGenerator.truncateTableQuery('myTable', { restartIdentity: true }),
- {
- default: buildInvalidOptionReceivedError('truncateTableQuery', dialect.name, [
- 'restartIdentity',
- ]),
- sqlite3: [
- 'DELETE FROM `myTable`',
- "DELETE FROM `sqlite_sequence` WHERE `name` = 'myTable'",
- ],
- postgres: `TRUNCATE "myTable" RESTART IDENTITY`,
- },
- );
- });
- it('produces a TRUNCATE TABLE query with CASCADE and RESTART IDENTITY query for a table', () => {
- expectPerDialect(
- () => queryGenerator.truncateTableQuery('myTable', { cascade: true, restartIdentity: true }),
- {
- default: buildInvalidOptionReceivedError('truncateTableQuery', dialect.name, [
- 'cascade',
- 'restartIdentity',
- ]),
- sqlite3: buildInvalidOptionReceivedError('truncateTableQuery', dialect.name, ['cascade']),
- postgres: `TRUNCATE "myTable" RESTART IDENTITY CASCADE`,
- },
- );
- });
- it('produces a TRUNCATE TABLE query for a model', () => {
- const MyModel = sequelize.define('MyModel', {});
- expectPerDialect(() => queryGenerator.truncateTableQuery(MyModel), {
- mssql: 'TRUNCATE TABLE [MyModels]',
- sqlite3: ['DELETE FROM `MyModels`'],
- 'db2 ibmi': 'TRUNCATE TABLE "MyModels" IMMEDIATE',
- 'mariadb mysql': 'TRUNCATE `MyModels`',
- 'postgres snowflake': 'TRUNCATE "MyModels"',
- });
- });
- it('produces a TRUNCATE TABLE query for a model definition', () => {
- const MyModel = sequelize.define('MyModel', {});
- const myDefinition = MyModel.modelDefinition;
- expectPerDialect(() => queryGenerator.truncateTableQuery(myDefinition), {
- mssql: 'TRUNCATE TABLE [MyModels]',
- sqlite3: ['DELETE FROM `MyModels`'],
- 'db2 ibmi': 'TRUNCATE TABLE "MyModels" IMMEDIATE',
- 'mariadb mysql': 'TRUNCATE `MyModels`',
- 'postgres snowflake': 'TRUNCATE "MyModels"',
- });
- });
- it('produces a TRUNCATE TABLE query from a table and schema', () => {
- expectPerDialect(
- () => queryGenerator.truncateTableQuery({ tableName: 'myTable', schema: 'mySchema' }),
- {
- mssql: 'TRUNCATE TABLE [mySchema].[myTable]',
- sqlite3: ['DELETE FROM `mySchema.myTable`'],
- 'db2 ibmi': 'TRUNCATE TABLE "mySchema"."myTable" IMMEDIATE',
- 'mariadb mysql': 'TRUNCATE `mySchema`.`myTable`',
- 'postgres snowflake': 'TRUNCATE "mySchema"."myTable"',
- },
- );
- });
- it('produces a TRUNCATE TABLE query from a table and default schema', () => {
- expectPerDialect(
- () =>
- queryGenerator.truncateTableQuery({
- tableName: 'myTable',
- schema: dialect.getDefaultSchema(),
- }),
- {
- mssql: 'TRUNCATE TABLE [myTable]',
- sqlite3: ['DELETE FROM `myTable`'],
- 'db2 ibmi': 'TRUNCATE TABLE "myTable" IMMEDIATE',
- 'mariadb mysql': 'TRUNCATE `myTable`',
- 'postgres snowflake': 'TRUNCATE "myTable"',
- },
- );
- });
- it('produces a TRUNCATE TABLE query from a table and globally set schema', () => {
- const sequelizeSchema = createSequelizeInstance({ schema: 'mySchema' });
- const queryGeneratorSchema = sequelizeSchema.queryGenerator;
- expectPerDialect(() => queryGeneratorSchema.truncateTableQuery('myTable'), {
- mssql: 'TRUNCATE TABLE [mySchema].[myTable]',
- sqlite3: ['DELETE FROM `mySchema.myTable`'],
- 'db2 ibmi': 'TRUNCATE TABLE "mySchema"."myTable" IMMEDIATE',
- 'mariadb mysql': 'TRUNCATE `mySchema`.`myTable`',
- 'postgres snowflake': 'TRUNCATE "mySchema"."myTable"',
- });
- });
- it('produces a TRUNCATE TABLE query for a table with schema and custom delimiter argument', () => {
- // This test is only relevant for dialects that do not support schemas
- if (dialect.supports.schemas) {
- return;
- }
- expectPerDialect(
- () =>
- queryGenerator.truncateTableQuery({
- tableName: 'myTable',
- schema: 'mySchema',
- delimiter: 'custom',
- }),
- {
- sqlite3: ['DELETE FROM `mySchemacustommyTable`'],
- },
- );
- });
- it('produces a TRUNCATE TABLE query with RESTART IDENTITY for a table with schema and custom delimiter argument', () => {
- // This test is only relevant for dialects that do not support schemas
- if (dialect.supports.schemas) {
- return;
- }
- expectPerDialect(
- () =>
- queryGenerator.truncateTableQuery(
- { tableName: 'myTable', schema: 'mySchema', delimiter: 'custom' },
- { restartIdentity: true },
- ),
- {
- sqlite3: [
- 'DELETE FROM `mySchemacustommyTable`',
- "DELETE FROM `sqlite_sequence` WHERE `name` = 'mySchemacustommyTable'",
- ],
- },
- );
- });
- });
|