QueryInterface
Direct Subclass:
The interface that Sequelize uses to talk to all databases
Method Summary
Public Methods | ||
public |
Add a new column to a table |
|
public |
async addConstraint(tableName: string, options: object): Promise Add a constraint to a table |
|
public |
async addIndex(tableName: string | object, attributes: Array, options: object, rawTablename: string): Promise Add an index to a column |
|
public |
Delete multiple records from a table |
|
public |
Insert multiple records into a table |
|
public |
async bulkUpdate(tableName: string, values: object, identifier: object, options: object, attributes: object): Promise Update multiple records of a table |
|
public |
async changeColumn(tableName: string, attributeName: string, dataTypeOrOptions: object, options: object): * Change a column definition |
|
public |
async createDatabase(database: string, options: object): Promise Create a database |
|
public |
async createFunction(functionName: string, params: Array, returnType: string, language: string, body: string, optionsArray: Array, options: object): Promise Create an SQL function |
|
public |
async createSchema(schema: string, options: object): Promise Create a schema |
|
public |
Create a table with given set of attributes |
|
public |
async describeTable(tableName: string, options: object): Promise<object> Describe a table structure |
|
public |
async dropAllSchemas(options: object): Promise Drop all schemas |
|
public |
async dropAllTables(options: object): Promise Drop all tables from database |
|
public |
async dropDatabase(database: string, options: object): Promise Drop a database |
|
public |
async dropFunction(functionName: string, params: Array, options: object): Promise Drop an SQL function |
|
public |
async dropSchema(schema: string, options: object): Promise Drop a schema |
|
public |
Drop a table from database |
|
public |
async getForeignKeyReferencesForTable(tableName: string, options: object): * Get foreign key references details for the table |
|
public |
async getForeignKeysForTables(tableNames: string[], options: object): Promise Returns all foreign key constraints of requested tables |
|
public |
quoteIdentifier(identifier: string, force: boolean): string Split a list of identifiers by "." and quote each part |
|
public |
quoteIdentifiers(identifiers: string): string Split a list of identifiers by "." and quote each part. |
|
public |
async removeColumn(tableName: string, attributeName: string, options: object): * Remove a column from a table |
|
public |
async removeConstraint(tableName: string, constraintName: string, options: object): * Remove a constraint from a table |
|
public |
async removeIndex(tableName: string, indexNameOrAttributes: string | string[], options: object): Promise Remove an already existing index from a table |
|
public |
async renameColumn(tableName: string, attrNameBefore: string, attrNameAfter: string, options: object): Promise Rename a column |
|
public |
async renameFunction(oldFunctionName: string, params: Array, newFunctionName: string, options: object): Promise Rename an SQL function |
|
public |
async renameTable(before: string, after: string, options: object): Promise Rename a table |
|
public |
async showAllSchemas(options: object): Promise<Array> Show all schemas |
|
public |
async tableExists(tableName: TableName, options: QueryOptions): Promise<boolean> Returns a promise that will resolve to true if the table exists in the database, false otherwise. |
|
public |
async upsert(tableName: string, insertValues: object, updateValues: object, where: object, options: object): Promise<boolean, ?number> Upsert |
Public Methods
public async addColumn(table: string, key: string, attribute: object, options: object): Promise source
Add a new column to a table
queryInterface.addColumn('tableA', 'columnC', Sequelize.STRING, {
after: 'columnB' // after option is only supported by MySQL
});
public async addConstraint(tableName: string, options: object): Promise source
Add a constraint to a table
Available constraints:
- UNIQUE
- DEFAULT (MSSQL only)
- CHECK (MySQL - Ignored by the database engine )
- FOREIGN KEY
- PRIMARY KEY
Params:
Name | Type | Attribute | Description |
tableName | string | Table name where you want to add a constraint |
|
options | object | An object to define the constraint name, type etc |
|
options.type | string | Type of constraint. One of the values in available constraints(case insensitive) |
|
options.fields | Array | Array of column names to apply the constraint over |
|
options.name | string |
|
Name of the constraint. If not specified, sequelize automatically creates a named constraint based on constraint type, table & column names |
options.defaultValue | string |
|
The value for the default constraint |
options.where | object |
|
Where clause/expression for the CHECK constraint |
options.references | object |
|
Object specifying target table, column name to create foreign key constraint |
options.references.table | string |
|
Target table name |
options.references.field | string |
|
Target column name |
options.references.fields | string |
|
Target column names for a composite primary key. Must match the order of fields in options.fields. |
options.deferrable | string |
|
Sets the constraint to be deferred or immediately checked. See Sequelize.Deferrable. PostgreSQL Only |
Example:
queryInterface.addConstraint('Users', {
fields: ['email'],
type: 'unique',
name: 'custom_unique_constraint_name'
});
queryInterface.addConstraint('Users', {
fields: ['roles'],
type: 'check',
where: {
roles: ['user', 'admin', 'moderator', 'guest']
}
});
queryInterface.addConstraint('Users', {
fields: ['roles'],
type: 'default',
defaultValue: 'guest'
});
queryInterface.addConstraint('Users', {
fields: ['username'],
type: 'primary key',
name: 'custom_primary_constraint_name'
});
queryInterface.addConstraint('Posts', {
fields: ['username'],
type: 'foreign key',
name: 'custom_fkey_constraint_name',
references: { //Required field
table: 'target_table_name',
field: 'target_column_name'
},
onDelete: 'cascade',
onUpdate: 'cascade'
});
queryInterface.addConstraint('TableName', {
fields: ['source_column_name', 'other_source_column_name'],
type: 'foreign key',
name: 'custom_fkey_constraint_name',
references: { //Required field
table: 'target_table_name',
fields: ['target_column_name', 'other_target_column_name']
},
onDelete: 'cascade',
onUpdate: 'cascade'
});
public async addIndex(tableName: string | object, attributes: Array, options: object, rawTablename: string): Promise source
Add an index to a column
Params:
Name | Type | Attribute | Description |
tableName | string | object | Table name to add index on, can be a object with schema |
|
attributes | Array |
|
Use options.fields instead, List of attributes to add index on |
options | object | indexes options |
|
options.fields | Array | List of attributes to add index on |
|
options.concurrently | boolean |
|
Pass CONCURRENT so other operations run while the index is created |
options.unique | boolean |
|
Create a unique index |
options.using | string |
|
Useful for GIN indexes |
options.operator | string |
|
Index operator |
options.type | string |
|
Type of index, available options are UNIQUE|FULLTEXT|SPATIAL |
options.name | string |
|
Name of the index. Default is <table><attr1><attr2> |
options.where | object |
|
Where condition on index, for partial indexes |
rawTablename | string |
|
table name, this is just for backward compatibiity |
public async bulkDelete(tableName: string, where: object, options: object, model: Model): Promise source
Delete multiple records from a table
Params:
Name | Type | Attribute | Description |
tableName | string | table name from where to delete records |
|
where | object | where conditions to find records to delete |
|
options | object |
|
options |
options.truncate | boolean |
|
Use truncate table command |
options.cascade | boolean |
|
Only used in conjunction with TRUNCATE. Truncates all tables that have foreign-key references to the named table, or to any tables added to the group due to CASCADE. |
options.restartIdentity | boolean |
|
Only used in conjunction with TRUNCATE. Automatically restart sequences owned by columns of the truncated table. |
model | Model |
|
Model |
public async bulkInsert(tableName: string, records: Array, options: object, attributes: object): Promise source
Insert multiple records into a table
Example:
queryInterface.bulkInsert('roles', [{
label: 'user',
createdAt: new Date(),
updatedAt: new Date()
}, {
label: 'admin',
createdAt: new Date(),
updatedAt: new Date()
}]);
public async bulkUpdate(tableName: string, values: object, identifier: object, options: object, attributes: object): Promise source
Update multiple records of a table
Params:
Name | Type | Attribute | Description |
tableName | string | Table name to update |
|
values | object | Values to be inserted, mapped to field name |
|
identifier | object | A hash with conditions OR an ID as integer OR a string with conditions |
|
options | object |
|
Various options, please see Model.bulkCreate options |
attributes | object |
|
Attributes on return objects if supported by SQL dialect |
Example:
queryInterface.bulkUpdate('roles', {
label: 'admin',
}, {
userType: 3,
},
);
public async changeColumn(tableName: string, attributeName: string, dataTypeOrOptions: object, options: object): * source
Change a column definition
Return:
* |
public async createDatabase(database: string, options: object): Promise source
Create a database
Params:
Name | Type | Attribute | Description |
database | string | Database name to create |
|
options | object |
|
Query options |
options.charset | string |
|
Database default character set, MYSQL only |
options.collate | string |
|
Database default collation |
options.encoding | string |
|
Database default character set, PostgreSQL only |
options.ctype | string |
|
Database character classification, PostgreSQL only |
options.template | string |
|
The name of the template from which to create the new database, PostgreSQL only |
public async createFunction(functionName: string, params: Array, returnType: string, language: string, body: string, optionsArray: Array, options: object): Promise source
Create an SQL function
Params:
Name | Type | Attribute | Description |
functionName | string | Name of SQL function to create |
|
params | Array | List of parameters declared for SQL function |
|
returnType | string | SQL type of function returned value |
|
language | string | The name of the language that the function is implemented in |
|
body | string | Source code of function |
|
optionsArray | Array | Extra-options for creation |
|
options | object |
|
query options |
options.force | boolean | If force is true, any existing functions with the same parameters will be replaced. For postgres, this means using |
|
options.variables | Array<object> | List of declared variables. Each variable should be an object with string fields |
Example:
queryInterface.createFunction(
'someFunction',
[
{type: 'integer', name: 'param', direction: 'IN'}
],
'integer',
'plpgsql',
'RETURN param + 1;',
[
'IMMUTABLE',
'LEAKPROOF'
],
{
variables:
[
{type: 'integer', name: 'myVar', default: 100}
],
force: true
};
);
public async createTable(tableName: string, attributes: object, options: object, model: Model): Promise source
Create a table with given set of attributes
queryInterface.createTable(
'nameOfTheNewTable',
{
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
createdAt: {
type: Sequelize.DATE
},
updatedAt: {
type: Sequelize.DATE
},
attr1: Sequelize.STRING,
attr2: Sequelize.INTEGER,
attr3: {
type: Sequelize.BOOLEAN,
defaultValue: false,
allowNull: false
},
//foreign key usage
attr4: {
type: Sequelize.INTEGER,
references: {
model: 'another_table_name',
key: 'id'
},
onUpdate: 'cascade',
onDelete: 'cascade'
}
},
{
engine: 'MYISAM', // default: 'InnoDB'
charset: 'latin1', // default: null
schema: 'public', // default: public, PostgreSQL only.
comment: 'my table', // comment for table
collate: 'latin1_danish_ci' // collation, MYSQL only
}
)
public async describeTable(tableName: string, options: object): Promise<object> source
Describe a table structure
This method returns an array of hashes containing information about all attributes in the table.
{
name: {
type: 'VARCHAR(255)', // this will be 'CHARACTER VARYING' for pg!
allowNull: true,
defaultValue: null
},
isBetaMember: {
type: 'TINYINT(1)', // this will be 'BOOLEAN' for pg!
allowNull: false,
defaultValue: false
}
}
public async dropAllSchemas(options: object): Promise source
Drop all schemas
Params:
Name | Type | Attribute | Description |
options | object |
|
Query options |
public async dropFunction(functionName: string, params: Array, options: object): Promise source
Drop an SQL function
Example:
queryInterface.dropFunction(
'someFunction',
[
{type: 'varchar', name: 'param1', direction: 'IN'},
{type: 'integer', name: 'param2', direction: 'INOUT'}
]
);
public async dropTable(tableName: string, options: object): Promise source
Drop a table from database
public async getForeignKeyReferencesForTable(tableName: string, options: object): * source
Get foreign key references details for the table
Those details contains constraintSchema, constraintName, constraintCatalog tableCatalog, tableSchema, tableName, columnName, referencedTableCatalog, referencedTableCatalog, referencedTableSchema, referencedTableName, referencedColumnName. Remind: constraint informations won't return if it's sqlite.
Return:
* |
public async getForeignKeysForTables(tableNames: string[], options: object): Promise source
Returns all foreign key constraints of requested tables
public quoteIdentifier(identifier: string, force: boolean): string source
Split a list of identifiers by "." and quote each part
public quoteIdentifiers(identifiers: string): string source
Split a list of identifiers by "." and quote each part.
Params:
Name | Type | Attribute | Description |
identifiers | string |
public async removeColumn(tableName: string, attributeName: string, options: object): * source
Remove a column from a table
Return:
* |
public async removeConstraint(tableName: string, constraintName: string, options: object): * source
Remove a constraint from a table
Return:
* |
public async removeIndex(tableName: string, indexNameOrAttributes: string | string[], options: object): Promise source
Remove an already existing index from a table
Params:
Name | Type | Attribute | Description |
tableName | string | Table name to drop index from |
|
indexNameOrAttributes | string | string[] | Index name or list of attributes that in the index |
|
options | object |
|
Query options |
options.concurrently | boolean |
|
Pass CONCURRENTLY so other operations run while the index is created |
public async renameColumn(tableName: string, attrNameBefore: string, attrNameAfter: string, options: object): Promise source
Rename a column
public async renameFunction(oldFunctionName: string, params: Array, newFunctionName: string, options: object): Promise source
Rename an SQL function
Example:
queryInterface.renameFunction(
'fooFunction',
[
{type: 'varchar', name: 'param1', direction: 'IN'},
{type: 'integer', name: 'param2', direction: 'INOUT'}
],
'barFunction'
);
public async renameTable(before: string, after: string, options: object): Promise source
Rename a table
public async showAllSchemas(options: object): Promise<Array> source
Show all schemas
Params:
Name | Type | Attribute | Description |
options | object |
|
Query options |
public async tableExists(tableName: TableName, options: QueryOptions): Promise<boolean> source
Returns a promise that will resolve to true if the table exists in the database, false otherwise.
Params:
Name | Type | Attribute | Description |
tableName | TableName | The name of the table |
|
options | QueryOptions | Query options |
public async upsert(tableName: string, insertValues: object, updateValues: object, where: object, options: object): Promise<boolean, ?number> source
Upsert
Params:
Name | Type | Attribute | Description |
tableName | string | table to upsert on |
|
insertValues | object | values to be inserted, mapped to field name |
|
updateValues | object | values to be updated, mapped to field name |
|
where | object | where conditions, which can be used for UPDATE part when INSERT fails |
|
options | object | query options |