DefinitelyTyped/types/sequelize/sequelize-tests.ts
rohitsud 8825742790 [@types/sequelize] Fix incorrect parameter in DefineIndexesOptions [4.33.0] (#37014)
* Add test for options.indexes[].type

*  Fix incorrect parameter in DefineIndexesOptions

This parameter is actually called `type` and not `index` anymore (http://docs.sequelizejs.com/class/lib/model.js~Model.html)
2019-07-22 11:05:46 -07:00

1984 lines
74 KiB
TypeScript

import Sequelize = require("sequelize");
import Q = require('q');
import Bluebird = require('bluebird');
import SequelizeAsDefault from 'sequelize';
import { Sequelize as SequelizeAsIndividualExport } from 'sequelize';
//
// Import checks
// ~~~~~~~~~~~~~
//
Sequelize.Model.Instance
SequelizeAsDefault.Model.Instance
SequelizeAsIndividualExport.Model.Instance
//
// Fixtures
// ~~~~~~~~~~
//
interface AnyAttributes { [name: string]: boolean | number | string | object; };
interface AnyInstance extends Sequelize.Instance<AnyAttributes> { };
interface UserModel extends Sequelize.Model<AnyInstance, AnyAttributes> {
findUser?(arbitraryThing: any): Promise<AnyInstance>;
}
var s = new Sequelize( '' );
var sequelize = s;
var DataTypes = Sequelize;
var User: UserModel = s.define<AnyInstance, AnyAttributes>( 'user', {} );
var user = User.build();
var Task = s.define<AnyInstance, AnyAttributes>( 'task', {} );
var Group = s.define<AnyInstance, AnyAttributes>( 'group', {} );
var Comment = s.define<AnyInstance, AnyAttributes>( 'comment', {} );
var Post = s.define<AnyInstance, AnyAttributes>( 'post', {} );
var t : Sequelize.Transaction = null;
s.transaction().then( ( a ) => t = a );
//
// Generics
// ~~~~~~~~~~
//
interface GUserCreationAttributes {
id? : number
username? : string;
email: string;
}
interface GUserAttributes {
id : number;
username? : string;
email: string;
}
interface GUserInstance extends Sequelize.Instance<GUserAttributes>, GUserAttributes {}
const GUser = s.define<GUserInstance, GUserAttributes, GUserCreationAttributes>('user', {
id: Sequelize.INTEGER,
username: Sequelize.STRING,
email: Sequelize.STRING
});
GUser.create({ id : 1, username : 'one', email: 'one@lol.com' }).then((guser) => guser.save());
GUser.create({ email: 'two@lol.com' }).then((guser) => guser.save())
var schema : Sequelize.DefineAttributes = {
key : { type : Sequelize.STRING, primaryKey : true },
value : Sequelize.STRING
};
s.define('user', schema);
interface GTaskAttributes {
revision? : number;
name? : string;
}
interface GTaskInstance extends Sequelize.Instance<GTaskAttributes> {
upRevision(): void;
}
var GTask = s.define<GTaskInstance, GTaskAttributes>( 'task', { revision : Sequelize.INTEGER, name : Sequelize.STRING });
GUser.hasMany(GTask);
GTask.create({ revision: 1, name: 'test' }).then( (gtask) => gtask.upRevision() );
//
// Associations
// ~~~~~~~~~~~~~~
//
// https://github.com/sequelize/sequelize/tree/v3.4.1/test/integration/associations
//
User.hasOne( Task );
User.hasOne( Task, { foreignKey : 'primaryGroupId', as : 'primaryUsers' } );
User.hasOne( Task, { foreignKey : 'userCoolIdTag' } );
User.hasOne( Task, { foreignKey : 'userId', keyType : Sequelize.STRING, constraints : false } );
Task.hasOne( User, { foreignKey : { name : 'taskId', field : 'task_id' } } );
User.hasOne( Task, { foreignKey : { name : 'uid', allowNull : false } } );
User.hasOne( Task, { onDelete : 'cascade' } );
User.hasOne( Task, { onUpdate : 'cascade' } );
User.hasOne( Task, { onDelete : 'cascade', hooks : true } );
User.hasOne( Task, { foreignKey : { allowNull : false } } );
User.hasOne( Task, { foreignKeyConstraint : true } );
User.belongsTo( Task );
User.belongsTo( Task, { foreignKey : 'primaryGroupId', as : 'primaryUsers' } );
Task.belongsTo( User, { foreignKey : 'user_id' } );
Task.belongsTo( User, { foreignKey : 'user_name', targetKey : 'username' } );
User.belongsTo( User, { foreignKey : 'userId', keyType : Sequelize.STRING, constraints : false } );
User.belongsTo( Post, { foreignKey : { name : 'AccountId', field : 'account_id' } } );
Task.belongsTo( User, { foreignKey : { allowNull : false, name : 'uid' } } );
Task.belongsTo( User, { constraints : false } );
Task.belongsTo( User, { onDelete : 'cascade' } );
Task.belongsTo( User, { onUpdate : 'restrict' } );
User.belongsTo( User, {
as : 'parentBlocks',
foreignKey : 'child',
foreignKeyConstraint : true
} );
User.hasMany( User );
User.hasMany( User, { foreignKey : 'primaryGroupId', as : 'primaryUsers' } );
User.hasMany( Task, { foreignKey : 'userId' } );
User.hasMany( Task, { foreignKey : 'userId', as : 'activeTasks', scope : { active : true } } );
User.hasMany( Task, { foreignKey : 'userId', keyType : Sequelize.STRING, constraints : false } );
User.hasMany( Task, { foreignKey : { name : 'uid', allowNull : false } } );
User.hasMany( Task, { foreignKey : { allowNull : true } } );
User.hasMany( Task, { as : 'Children' } );
User.hasMany( Task, { as : { singular : 'task', plural : 'taskz' } } );
User.hasMany( Task, { constraints : false } );
User.hasMany( Task, { onDelete : 'cascade' } );
User.hasMany( Task, { onUpdate : 'cascade' } );
Post.hasMany( Task, { foreignKey : 'commentable_id', scope : { commentable : 'post' } } );
User.hasMany( User, {
as : 'childBlocks',
foreignKey : 'parent',
foreignKeyConstraint : true
} );
User.hasOne( Task, { foreignKey : 'userId', as : 'activeTasks', scope : { active : true } } );
User.belongsToMany( Task, { through : 'UserTasks' } );
User.belongsToMany( User, { through : Task } );
User.belongsToMany( Group, { as : 'groups', through : Task, foreignKey : 'id_user' } );
User.belongsToMany( Task, { as : 'activeTasks', through : Task, scope : { active : true } } );
User.belongsToMany( Task, { as : 'startedTasks', through : { model : Task, scope : { started : true } } } );
User.belongsToMany( Group, { through : 'group_members', foreignKey : 'group_id', otherKey : 'member_id' } );
User.belongsToMany( User, { as : 'Participants', through : User } );
User.belongsToMany( Group, { through : 'user_places', foreignKey : 'user_id' } );
User.belongsToMany( Group, {
through : 'user_projects',
as : 'Projects',
foreignKey : {
field : 'user_id',
name : 'userId'
},
otherKey : {
field : 'project_id',
name : 'projectId'
}
} );
User.belongsToMany( Task, { onDelete : 'RESTRICT', through : 'tasksusers' } );
User.belongsToMany( Task, { constraints : false, through : 'tasksusers' } );
User.belongsToMany( Task, { foreignKey : { name : 'user_id', defaultValue : 42 }, through : 'UserProjects' } );
User.belongsToMany( Post, { through : User } );
Post.belongsToMany( User, { as : 'categories', through : User, scope : { type : 'category' } } );
Post.belongsToMany( User, { as : 'tags', through : User, scope : { type : 'tag' } } );
Post.belongsToMany( User, {
through : {
model : User,
unique : false,
scope : {
taggable : 'post'
}
},
foreignKey : 'taggable_id',
constraints : false
} );
Post.belongsToMany( Post, { through : { model : Post, unique : false }, foreignKey : 'tag_id' } );
Post.belongsToMany( Post, { as : 'Parents', through : 'Family', foreignKey : 'ChildId', otherKey : 'PersonId' } );
//
// Mixins
// ~~~~~~
//
// https://github.com/sequelize/sequelize/tree/v3.4.1/test/integration/associations
//
var Product = s.define<ProductInstance, ProductAttributes>('product', {});
var product = Product.build();
var Barcode = s.define<BarcodeInstance, BarcodeAttributes>('barcode', {});
var barcode = Barcode.build();
var Warehouse = s.define<WarehouseInstance, WarehouseAttributes>('warehouse', {});
var warehouse = Warehouse.build();
var Branch = s.define<BranchInstance, BranchAttributes>('brach', {});
var branch = Branch.build();
var WarehouseBranch = s.define<WarehouseBranchInstance, WarehouseBranchAttributes>('warehouseBranch', {});
var Customer = s.define<CustomerInstance, CustomerAttributes>('customer', {});
var customer = Customer.build();
Product.hasOne(Barcode);
Barcode.belongsTo(Product);
Warehouse.hasMany(Product);
Product.belongsTo(Warehouse);
Warehouse.belongsToMany(Branch, { through: WarehouseBranch });
Branch.belongsToMany(Warehouse, { through: WarehouseBranch });
Branch.belongsToMany(Customer, { through: 'branchCustomer' });
Customer.belongsToMany(Branch, { through: 'branchCustomer' });
// hasOne
product.getBarcode();
product.getBarcode({ scope: null }).then(b => b.code);
product.setBarcode();
product.setBarcode(1);
product.setBarcode(barcode);
product.setBarcode(barcode, { save: true }).then(() => { });
product.createBarcode();
product.createBarcode({ id: 1, code: '1434-2' });
product.createBarcode({ id: 1 }, { save: true, silent: true }).then(() => { });
// belongsTo
barcode.getProduct();
barcode.getProduct({ scope: 'foo' }).then(p => p.name);
barcode.setProduct();
barcode.setProduct(1);
barcode.setProduct(product);
barcode.setProduct(product, { save: true }).then(() => { });
barcode.createProduct();
barcode.createProduct({ id: 1, name: 'Crowbar' });
barcode.createProduct({ id: 1 }, { save: true, silent: true }).then((product: ProductInstance) => { });
product.getWarehouse();
product.getWarehouse({ scope: null }).then(w => w.capacity);
product.setWarehouse();
product.setWarehouse(1);
product.setWarehouse(warehouse);
product.setWarehouse(warehouse, { save: true }).then(() => { });
product.createWarehouse();
product.createWarehouse({ id: 1, capacity: 10000 });
product.createWarehouse({ id: 1 }, { save: true, silent: true }).then(() => { });
// hasMany
warehouse.getProducts();
warehouse.getProducts({ where: {}, scope: false });
warehouse.getProducts({ where: {}, scope: false }).then((products) => products[0].id);
interface ProductInstanceIncludeBarcode extends ProductInstance {
barcode: BarcodeInstance
}
warehouse.getProducts({ where: {}, scope: false, include: {model: Barcode, as: 'barcode'} }).then((products) => {
(products[0] as ProductInstanceIncludeBarcode).barcode
});
warehouse.setProducts();
warehouse.setProducts([product]);
warehouse.setProducts([product], { validate: true }).then(() => { });
warehouse.addProducts();
warehouse.addProducts([product]);
warehouse.addProducts([product, 2], { validate: false }).then(() => { });
warehouse.addProduct();
warehouse.addProduct(product);
warehouse.addProduct(2, { validate: true }).then(() => { });
warehouse.createProduct();
warehouse.createProduct({ id: 1, name: 'baz' });
warehouse.createProduct({ id: 1 }, { silent: true }).then((product) => { });
warehouse.removeProducts();
warehouse.removeProducts([product]);
warehouse.removeProducts([product, 2], { validate: false }).then(() => { });
warehouse.removeProduct();
warehouse.removeProduct(product);
warehouse.removeProduct(2, { validate: true }).then(() => { });
warehouse.hasProducts([product]);
warehouse.hasProducts([product, 2], { scope: 'bar' }).then((result: boolean) => { });
warehouse.hasProduct(product);
warehouse.hasProduct(2, { scope: 'baz' }).then((result: boolean) => { });
warehouse.countProducts();
warehouse.countProducts({ scope: 'baz' }).then((result: number) => { });
// belongsToMany <Model>
warehouse.getBranches();
warehouse.getBranches({ where: {} });
warehouse.getBranches({ where: {} }).then((branches) => branches[0].rank);
warehouse.setBranches();
warehouse.setBranches([branch]);
warehouse.setBranches([branch, 2], { validate: true, through: { distance: 1 } }).then(() => { });
warehouse.addBranches();
warehouse.addBranches([branch]);
warehouse.addBranches([branch, 2], { validate: false, through: { distance: 1 } }).then(() => { });
warehouse.addBranch();
warehouse.addBranch(branch);
warehouse.addBranch(2, { validate: true, through: { distance: 1 } }).then(() => { });
warehouse.createBranch();
warehouse.createBranch({ id: 1, address: 'baz' });
warehouse.createBranch({ id: 1 }, { silent: true, through: { distance: 1 } }).then((branch) => { });
warehouse.removeBranches();
warehouse.removeBranches([branch]);
warehouse.removeBranches([branch, 2], { validate: false }).then(() => { });
warehouse.removeBranch();
warehouse.removeBranch(branch);
warehouse.removeBranch(2, { validate: true }).then(() => { });
warehouse.hasBranches([branch]);
warehouse.hasBranches([branch, 2], { scope: 'bar' }).then((result: boolean) => { });
warehouse.hasBranch(branch);
warehouse.hasBranch(2, { scope: 'baz' }).then((result: boolean) => { });
warehouse.countBranches();
warehouse.countBranches({ scope: 'baz' }).then((result: number) => { });
// belongsToMany <void>
customer.getBranches();
customer.getBranches({ where: {} });
customer.getBranches({ where: {} }).then((branches) => branches[0].rank);
customer.setBranches();
customer.setBranches([branch]);
customer.setBranches([branch, 2], { validate: true }).then(() => { });
customer.addBranches();
customer.addBranches([branch]);
customer.addBranches([branch, 2], { validate: false }).then(() => { });
customer.addBranch();
customer.addBranch(branch);
customer.addBranch(2, { validate: true }).then(() => { });
customer.createBranch();
customer.createBranch({ id: 1, address: 'baz' });
customer.createBranch({ id: 1 }, { silent: true }).then((branch) => { });
customer.removeBranches();
customer.removeBranches([branch]);
customer.removeBranches([branch, 2], { validate: false }).then(() => { });
customer.removeBranch();
customer.removeBranch(branch);
customer.removeBranch(2, { validate: true }).then(() => { });
customer.hasBranches([branch]);
customer.hasBranches([branch, 2], { scope: 'bar' }).then((result: boolean) => { });
customer.hasBranch(branch);
customer.hasBranch(2, { scope: 'baz' }).then((result: boolean) => { });
customer.countBranches();
customer.countBranches({ scope: 'baz' }).then((result: number) => { });
interface ProductAttributes {
id?: number;
name?: string;
price?: number;
};
interface ProductInstance extends Sequelize.Instance<ProductAttributes>, ProductAttributes {
// hasOne association mixins:
getBarcode: Sequelize.HasOneGetAssociationMixin<BarcodeInstance>;
setBarcode: Sequelize.HasOneSetAssociationMixin<BarcodeInstance, number>;
createBarcode: Sequelize.HasOneCreateAssociationMixin<BarcodeAttributes>;
// belongsTo association mixins:
getWarehouse: Sequelize.BelongsToGetAssociationMixin<WarehouseInstance>;
setWarehouse: Sequelize.BelongsToSetAssociationMixin<WarehouseInstance, number>;
createWarehouse: Sequelize.BelongsToCreateAssociationMixin<WarehouseAttributes, WarehouseInstance>;
};
interface BarcodeAttributes {
id?: number;
code?: string;
dateIssued?: Date;
};
interface BarcodeInstance extends Sequelize.Instance<BarcodeAttributes>, BarcodeAttributes {
// belongsTo association mixins:
getProduct: Sequelize.BelongsToGetAssociationMixin<ProductInstance>;
setProduct: Sequelize.BelongsToSetAssociationMixin<ProductInstance, number>;
createProduct: Sequelize.BelongsToCreateAssociationMixin<ProductAttributes, ProductInstance>;
};
interface WarehouseAttributes {
id?: number;
address?: string;
capacity?: number;
};
interface WarehouseInstance extends Sequelize.Instance<WarehouseAttributes>, WarehouseAttributes {
// hasMany association mixins:
getProducts: Sequelize.HasManyGetAssociationsMixin<ProductInstance>;
setProducts: Sequelize.HasManySetAssociationsMixin<ProductInstance, number>;
addProducts: Sequelize.HasManyAddAssociationsMixin<ProductInstance, number>;
addProduct: Sequelize.HasManyAddAssociationMixin<ProductInstance, number>;
createProduct: Sequelize.HasManyCreateAssociationMixin<ProductAttributes, ProductInstance>;
removeProduct: Sequelize.HasManyRemoveAssociationMixin<ProductInstance, number>;
removeProducts: Sequelize.HasManyRemoveAssociationsMixin<ProductInstance, number>;
hasProduct: Sequelize.HasManyHasAssociationMixin<ProductInstance, number>;
hasProducts: Sequelize.HasManyHasAssociationsMixin<ProductInstance, number>;
countProducts: Sequelize.HasManyCountAssociationsMixin;
// belongsToMany association mixins:
getBranches: Sequelize.BelongsToManyGetAssociationsMixin<BranchInstance>;
setBranches: Sequelize.BelongsToManySetAssociationsMixin<BranchInstance, number, WarehouseBranchAttributes>;
addBranches: Sequelize.BelongsToManyAddAssociationsMixin<BranchInstance, number, WarehouseBranchAttributes>;
addBranch: Sequelize.BelongsToManyAddAssociationMixin<BranchInstance, number, WarehouseBranchAttributes>;
createBranch: Sequelize.BelongsToManyCreateAssociationMixin<BranchAttributes, BranchInstance, WarehouseBranchAttributes>;
removeBranch: Sequelize.BelongsToManyRemoveAssociationMixin<BranchInstance, number>;
removeBranches: Sequelize.BelongsToManyRemoveAssociationsMixin<BranchInstance, number>;
hasBranch: Sequelize.BelongsToManyHasAssociationMixin<BranchInstance, number>;
hasBranches: Sequelize.BelongsToManyHasAssociationsMixin<BranchInstance, number>;
countBranches: Sequelize.BelongsToManyCountAssociationsMixin;
};
interface BranchAttributes {
id?: number;
address?: string;
rank?: number;
};
interface BranchInstance extends Sequelize.Instance<BranchAttributes>, BranchAttributes {
// belongsToMany association mixins:
getWarehouses: Sequelize.BelongsToManyGetAssociationsMixin<WarehouseInstance>;
setWarehouses: Sequelize.BelongsToManySetAssociationsMixin<WarehouseInstance, number, WarehouseBranchAttributes>;
addWarehouses: Sequelize.BelongsToManyAddAssociationsMixin<WarehouseInstance, number, WarehouseBranchAttributes>;
addWarehouse: Sequelize.BelongsToManyAddAssociationMixin<WarehouseInstance, number, WarehouseBranchAttributes>;
createWarehouse: Sequelize.BelongsToManyCreateAssociationMixin<WarehouseAttributes, WarehouseInstance, WarehouseBranchAttributes>;
removeWarehouse: Sequelize.BelongsToManyRemoveAssociationMixin<WarehouseInstance, number>;
removeWarehouses: Sequelize.BelongsToManyRemoveAssociationsMixin<WarehouseInstance, number>;
hasWarehouse: Sequelize.BelongsToManyHasAssociationMixin<WarehouseInstance, number>;
hasWarehouses: Sequelize.BelongsToManyHasAssociationsMixin<WarehouseInstance, number>;
countWarehouses: Sequelize.BelongsToManyCountAssociationsMixin;
// belongsToMany association mixins:
getCustomers: Sequelize.BelongsToManyGetAssociationsMixin<CustomerInstance>;
setCustomers: Sequelize.BelongsToManySetAssociationsMixin<CustomerInstance, number, void>;
addCustomers: Sequelize.BelongsToManyAddAssociationsMixin<CustomerInstance, number, void>;
addCustomer: Sequelize.BelongsToManyAddAssociationMixin<CustomerInstance, number, void>;
createCustomer: Sequelize.BelongsToManyCreateAssociationMixin<CustomerAttributes, CustomerInstance, void>;
removeCustomer: Sequelize.BelongsToManyRemoveAssociationMixin<CustomerInstance, number>;
removeCustomers: Sequelize.BelongsToManyRemoveAssociationsMixin<CustomerInstance, number>;
hasCustomer: Sequelize.BelongsToManyHasAssociationMixin<CustomerInstance, number>;
hasCustomers: Sequelize.BelongsToManyHasAssociationsMixin<CustomerInstance, number>;
countCustomers: Sequelize.BelongsToManyCountAssociationsMixin;
};
interface WarehouseBranchAttributes {
distance?: number;
};
interface WarehouseBranchInstance extends Sequelize.Instance<WarehouseBranchAttributes>, WarehouseBranchAttributes { };
interface CustomerAttributes {
id?: number;
fullname?: string;
credit?: number;
};
interface CustomerInstance extends Sequelize.Instance<CustomerAttributes>, CustomerAttributes {
// belongsToMany association mixins:
getBranches: Sequelize.BelongsToManyGetAssociationsMixin<BranchInstance>;
setBranches: Sequelize.BelongsToManySetAssociationsMixin<BranchInstance, number, void>;
addBranches: Sequelize.BelongsToManyAddAssociationsMixin<BranchInstance, number, void>;
addBranch: Sequelize.BelongsToManyAddAssociationMixin<BranchInstance, number, void>;
createBranch: Sequelize.BelongsToManyCreateAssociationMixin<BranchAttributes, BranchInstance, void>;
removeBranch: Sequelize.BelongsToManyRemoveAssociationMixin<BranchInstance, number>;
removeBranches: Sequelize.BelongsToManyRemoveAssociationsMixin<BranchInstance, number>;
hasBranch: Sequelize.BelongsToManyHasAssociationMixin<BranchInstance, number>;
hasBranches: Sequelize.BelongsToManyHasAssociationsMixin<BranchInstance, number>;
countBranches: Sequelize.BelongsToManyCountAssociationsMixin;
};
//
// DataTypes
// ~~~~~~~~~~~
//
// https://github.com/sequelize/sequelize/blob/v3.4.1/test/unit/sql/data-types.test.js
//
Sequelize.STRING;
Sequelize.STRING( 1234 );
Sequelize.STRING( { length : 1234 } );
Sequelize.STRING( 1234 ).BINARY;
Sequelize.STRING.BINARY;
Sequelize.TEXT;
Sequelize.TEXT( 'tiny' );
Sequelize.TEXT( { length : 'tiny' } );
Sequelize.TEXT( 'medium' );
Sequelize.TEXT( 'long' );
Sequelize.CHAR;
Sequelize.CHAR( 12 );
Sequelize.CHAR( { length : 12 } );
Sequelize.CHAR( 12 ).BINARY;
Sequelize.CHAR.BINARY;
Sequelize.BOOLEAN;
Sequelize.DATE;
Sequelize.DATE(6);
Sequelize.UUID;
Sequelize.UUID();
Sequelize.UUIDV1;
Sequelize.UUIDV1();
Sequelize.UUIDV4;
Sequelize.UUIDV4();
Sequelize.NOW;
Sequelize.TINYINT;
Sequelize.TINYINT.UNSIGNED;
Sequelize.TINYINT.UNSIGNED.ZEROFILL;
Sequelize.TINYINT( 11 );
Sequelize.TINYINT( { length : 11 } );
Sequelize.TINYINT( 11 ).UNSIGNED;
Sequelize.TINYINT( 11 ).UNSIGNED.ZEROFILL;
Sequelize.TINYINT( 11 ).ZEROFILL;
Sequelize.TINYINT( 11 ).ZEROFILL.UNSIGNED;
Sequelize.SMALLINT;
Sequelize.SMALLINT.UNSIGNED;
Sequelize.SMALLINT.UNSIGNED.ZEROFILL;
Sequelize.SMALLINT( 11 );
Sequelize.SMALLINT( { length : 11 } );
Sequelize.SMALLINT( 11 ).UNSIGNED;
Sequelize.SMALLINT( 11 ).UNSIGNED.ZEROFILL;
Sequelize.SMALLINT( 11 ).ZEROFILL;
Sequelize.SMALLINT( 11 ).ZEROFILL.UNSIGNED;
Sequelize.MEDIUMINT;
Sequelize.MEDIUMINT.UNSIGNED;
Sequelize.MEDIUMINT.UNSIGNED.ZEROFILL;
Sequelize.MEDIUMINT( 11 );
Sequelize.MEDIUMINT( { length : 11 } );
Sequelize.MEDIUMINT( 11 ).UNSIGNED;
Sequelize.MEDIUMINT( 11 ).UNSIGNED.ZEROFILL;
Sequelize.MEDIUMINT( 11 ).ZEROFILL;
Sequelize.MEDIUMINT( 11 ).ZEROFILL.UNSIGNED;
Sequelize.INTEGER;
Sequelize.INTEGER.UNSIGNED;
Sequelize.INTEGER.UNSIGNED.ZEROFILL;
Sequelize.INTEGER( 11 );
Sequelize.INTEGER( { length : 11 } );
Sequelize.INTEGER( 11 ).UNSIGNED;
Sequelize.INTEGER( 11 ).UNSIGNED.ZEROFILL;
Sequelize.INTEGER( 11 ).ZEROFILL;
Sequelize.INTEGER( 11 ).ZEROFILL.UNSIGNED;
Sequelize.BIGINT;
Sequelize.BIGINT.UNSIGNED;
Sequelize.BIGINT.UNSIGNED.ZEROFILL;
Sequelize.BIGINT( 11 );
Sequelize.BIGINT( { length : 11 } );
Sequelize.BIGINT( 11 ).UNSIGNED;
Sequelize.BIGINT( 11 ).UNSIGNED.ZEROFILL;
Sequelize.BIGINT( 11 ).ZEROFILL;
Sequelize.BIGINT( 11 ).ZEROFILL.UNSIGNED;
Sequelize.REAL.UNSIGNED;
Sequelize.REAL( 11 );
Sequelize.REAL( { length : 11 } );
Sequelize.REAL( 11 ).UNSIGNED;
Sequelize.REAL( 11 ).UNSIGNED.ZEROFILL;
Sequelize.REAL( 11 ).ZEROFILL;
Sequelize.REAL( 11 ).ZEROFILL.UNSIGNED;
Sequelize.REAL( 11, 12 );
Sequelize.REAL( 11, 12 ).UNSIGNED;
Sequelize.REAL( { length : 11, decimals : 12 } ).UNSIGNED;
Sequelize.REAL( 11, 12 ).UNSIGNED.ZEROFILL;
Sequelize.REAL( 11, 12 ).ZEROFILL;
Sequelize.REAL( 11, 12 ).ZEROFILL.UNSIGNED;
Sequelize.DOUBLE;
Sequelize.DOUBLE.UNSIGNED;
Sequelize.DOUBLE( 11 );
Sequelize.DOUBLE( 11 ).UNSIGNED;
Sequelize.DOUBLE( { length : 11 } ).UNSIGNED;
Sequelize.DOUBLE( 11 ).UNSIGNED.ZEROFILL;
Sequelize.DOUBLE( 11 ).ZEROFILL;
Sequelize.DOUBLE( 11 ).ZEROFILL.UNSIGNED;
Sequelize.DOUBLE( 11, 12 );
Sequelize.DOUBLE( 11, 12 ).UNSIGNED;
Sequelize.DOUBLE( 11, 12 ).UNSIGNED.ZEROFILL;
Sequelize.DOUBLE( 11, 12 ).ZEROFILL;
Sequelize.DOUBLE( 11, 12 ).ZEROFILL.UNSIGNED;
Sequelize.FLOAT;
Sequelize.FLOAT.UNSIGNED;
Sequelize.FLOAT( 11 );
Sequelize.FLOAT( 11 ).UNSIGNED;
Sequelize.FLOAT( 11 ).UNSIGNED.ZEROFILL;
Sequelize.FLOAT( 11 ).ZEROFILL;
Sequelize.FLOAT( { length : 11 } ).ZEROFILL;
Sequelize.FLOAT( 11 ).ZEROFILL.UNSIGNED;
Sequelize.FLOAT( 11, 12 );
Sequelize.FLOAT( 11, 12 ).UNSIGNED;
Sequelize.FLOAT( { length : 11, decimals : 12 } ).UNSIGNED;
Sequelize.FLOAT( 11, 12 ).UNSIGNED.ZEROFILL;
Sequelize.FLOAT( 11, 12 ).ZEROFILL;
Sequelize.FLOAT( 11, 12 ).ZEROFILL.UNSIGNED;
Sequelize.NUMERIC;
Sequelize.NUMERIC( 15, 5 );
Sequelize.DECIMAL;
Sequelize.DECIMAL( 10, 2 );
Sequelize.DECIMAL( { precision : 10, scale : 2 } );
Sequelize.DECIMAL( 10 );
Sequelize.DECIMAL( { precision : 10 } );
Sequelize.ENUM( 'value 1', 'value 2' );
Sequelize.BLOB;
Sequelize.BLOB( 'tiny' );
Sequelize.BLOB( 'medium' );
Sequelize.BLOB( { length : 'medium' } );
Sequelize.BLOB( 'long' );
Sequelize.ARRAY( Sequelize.STRING );
Sequelize.ARRAY( Sequelize.STRING( 100 ) );
Sequelize.ARRAY( Sequelize.INTEGER );
Sequelize.ARRAY( Sequelize.HSTORE );
Sequelize.ARRAY( Sequelize.ARRAY( Sequelize.STRING ) );
Sequelize.ARRAY( Sequelize.TEXT );
Sequelize.ARRAY( Sequelize.DATE );
Sequelize.ARRAY( Sequelize.BOOLEAN );
Sequelize.ARRAY( Sequelize.DECIMAL );
Sequelize.ARRAY( Sequelize.DECIMAL( 6 ) );
Sequelize.ARRAY( Sequelize.DECIMAL( 6, 4 ) );
Sequelize.ARRAY( Sequelize.DOUBLE );
Sequelize.ARRAY( Sequelize.REAL );
Sequelize.ARRAY( Sequelize.JSON );
Sequelize.ARRAY( Sequelize.JSONB );
Sequelize.GEOMETRY;
Sequelize.GEOMETRY( 'POINT' );
Sequelize.GEOMETRY( 'LINESTRING' );
Sequelize.GEOMETRY( 'POLYGON' );
Sequelize.GEOMETRY( 'POINT', 4326 );
Sequelize.VIRTUAL;
new Sequelize.VIRTUAL( Sequelize.STRING );
new Sequelize.VIRTUAL( Sequelize.DATE , ['property1', 'property2']);
//
// Deferrable
// ~~~~~~~~~~~~
//
// https://github.com/sequelize/sequelize/blob/v3.4.1/test/integration/sequelize/deferrable.test.js
//
Sequelize.Deferrable.NOT;
Sequelize.Deferrable.INITIALLY_IMMEDIATE;
Sequelize.Deferrable.INITIALLY_DEFERRED;
Sequelize.Deferrable.SET_DEFERRED;
Sequelize.Deferrable.SET_DEFERRED( ['taskTableName_user_id_fkey'] );
Sequelize.Deferrable.SET_IMMEDIATE;
Sequelize.Deferrable.SET_IMMEDIATE( ['taskTableName_user_id_fkey'] );
//
// Errors
// ~~~~~~~~
//
// https://github.com/sequelize/sequelize/blob/v3.4.1/test/integration/error.test.js
//
Sequelize.Error;
Sequelize.ValidationError;
s.Error;
s.ValidationError;
new s.ValidationError( 'Validation Error', [
new s.ValidationErrorItem( '<field name> cannot be null', 'notNull Violation', '<field name>', null )
, new s.ValidationErrorItem( '<field name> cannot be an array or an object', 'string violation',
'<field name>', null )
] );
new s.Error();
new s.ValidationError();
new s.ValidationErrorItem( 'invalid', 'type', 'first_name', null );
new s.ValidationErrorItem( 'invalid', 'type', 'last_name', null );
new s.DatabaseError( new Error( 'original database error message' ) );
new s.ConnectionError( new Error( 'original connection error message' ) );
new s.ConnectionRefusedError( new Error( 'original connection error message' ) );
new s.AccessDeniedError( new Error( 'original connection error message' ) );
new s.HostNotFoundError( new Error( 'original connection error message' ) );
new s.HostNotReachableError( new Error( 'original connection error message' ) );
new s.InvalidConnectionError( new Error( 'original connection error message' ) );
new s.ConnectionTimedOutError( new Error( 'original connection error message' ) );
new s.EmptyResultError();
const uniqueConstraintError: Sequelize.ValidationError = new s.UniqueConstraintError({});
//
// Hooks
// ~~~~~~~
//
// https://github.com/sequelize/sequelize/blob/v3.4.1/test/integration/hooks.test.js
//
User.addHook( 'afterCreate', function( instance : Sequelize.Instance<any>, options : Object, next : Function ) { next(); } );
User.addHook( 'afterCreate', 'myHook', function( instance : Sequelize.Instance<any>, options : Object, next : Function) { next(); } );
s.addHook( 'beforeInit', function( config : Object, options : Object ) { } );
User.hook( 'afterCreate', 'myHook', function( instance : Sequelize.Instance<any>, options : Object, next : Function) { next(); } );
User.hook( 'afterCreate', 'myHook', function( instance : Sequelize.Instance<any>, options : Object, next : Function ) { next(); } );
User.removeHook( 'afterCreate', 'myHook' );
User.hasHook( 'afterCreate' );
User.hasHooks( 'afterCreate' );
User.beforeValidate( function( user, options ) { user.isNewRecord; } );
User.beforeValidate( 'myHook', function( user, options ) { user.isNewRecord; } );
User.afterValidate( function( user, options ) { user.isNewRecord; } );
User.afterValidate( 'myHook', function( user, options ) { user.isNewRecord; } );
User.beforeCreate( function( user, options ) { user.isNewRecord; } );
User.beforeCreate( function( user, options, fn ) {fn();} );
User.beforeCreate( 'myHook', function( user, options ) { user.isNewRecord; } );
User.afterCreate( function( user, options ) { user.isNewRecord; } );
User.afterCreate( function( user, options, fn ) {fn();} );
User.afterCreate( 'myHook', function( user, options ) { user.isNewRecord; } );
User.beforeDestroy( function( user, options ) {throw new Error( 'Whoops!' );} );
User.beforeDestroy( function( user, options, fn ) {fn();} );
User.beforeDestroy( 'myHook', function( user, options ) {throw new Error( 'Whoops!' );} );
User.beforeDelete( function( user, options ) {throw new Error( 'Whoops!' );} );
User.beforeDelete( 'myHook', function( user, options ) {throw new Error( 'Whoops!' );} );
User.afterDestroy( function( user, options ) {throw new Error( 'Whoops!' );} );
User.afterDestroy( 'myHook', function( user, options ) {throw new Error( 'Whoops!' );} );
User.afterDestroy( function( user, options, fn ) {fn();} );
User.afterDelete( function( user, options ) {throw new Error( 'Whoops!' );} );
User.afterDelete( 'myHook', function( user, options ) {throw new Error( 'Whoops!' );} );
User.beforeUpdate( function( user, options ) {throw new Error( 'Whoops!' ); } );
User.beforeUpdate( 'myHook', function( user, options ) {throw new Error( 'Whoops!' ); } );
User.afterUpdate( function( user, options ) {throw new Error( 'Whoops!' );} );
User.afterUpdate( 'myHook', function( user, options ) {throw new Error( 'Whoops!' );} );
User.beforeBulkCreate( function( daos, options ) { throw new Error( 'Whoops!' );} );
User.beforeBulkCreate( 'myHook', function( daos, options ) { throw new Error( 'Whoops!' );} );
User.beforeBulkCreate( function( daos, options, fn ) {fn();} );
User.afterBulkCreate( function( daos, options ) {throw new Error( 'Whoops!' ); } );
User.afterBulkCreate( 'myHook', function( daos, options ) {throw new Error( 'Whoops!' ); } );
User.afterBulkCreate( function( daos, options, fn ) {fn();} );
User.beforeBulkDestroy( function( options ) {throw new Error( 'Whoops!' );} );
User.beforeBulkDestroy( function( options, fn ) {fn();} );
User.beforeBulkDestroy( 'myHook', function( options, fn ) {fn();} );
User.beforeBulkDelete( 'myHook', function( options, fn ) {fn();} );
User.afterBulkDestroy( function( options ) {throw new Error( 'Whoops!' );} );
User.afterBulkDestroy( function( options, fn ) {fn();} );
User.afterBulkDestroy( 'myHook', function( options, fn ) {fn();} );
User.afterBulkDelete( 'myHook', function( options, fn ) {fn();} );
User.beforeBulkUpdate( function( options ) {throw new Error( 'Whoops!' );} );
User.beforeBulkUpdate( 'myHook', function( options ) {throw new Error( 'Whoops!' );} );
User.afterBulkUpdate( function( options ) {throw new Error( 'Whoops!' );} );
User.afterBulkUpdate( 'myHook', function( options ) {throw new Error( 'Whoops!' );} );
User.beforeFind( function( options ) {} );
User.beforeFind( 'myHook', function( options ) {} );
User.beforeFindAfterExpandIncludeAll( function( options ) {} );
User.beforeFindAfterExpandIncludeAll( 'myHook', function( options ) {} );
User.beforeFindAfterOptions( function( options ) {} );
User.beforeFindAfterOptions( 'myHook', function( options ) {} );
User.afterFind( function( user ) {} );
User.afterFind( 'myHook', function( user ) {} );
User.beforeSync( function( options ) {} );
User.beforeSync( 'myHook', function( options ) {} );
User.afterSync( function( options ) {} );
User.afterSync( 'myHook', function( options ) {} );
s.beforeDefine( function( attributes, options ) {} );
s.beforeDefine( 'myHook', function( attributes, options ) {} );
s.afterDefine( function( model ) {} );
s.afterDefine( 'myHook', function( model ) {} );
s.beforeInit( function( config, options ) {} );
s.beforeInit( 'myHook', function( attributes, options ) {} );
s.afterInit( function( model ) {} );
s.afterInit( 'myHook', function( model ) {} );
s.beforeBulkSync( function( options ) {} );
s.beforeBulkSync( 'myHook', function( options ) {} );
s.afterBulkSync( function( options ) {} );
s.afterBulkSync( 'myHook', function( options ) {} );
s.define( 'User', {}, {
hooks : {
beforeValidate : function( user, options, fn ) {fn();},
afterValidate : function( user, options, fn ) {fn();},
beforeCreate : function( user, options, fn ) {fn();},
afterCreate : function( user, options, fn ) {fn();},
beforeDestroy : function( user, options, fn ) {fn();},
afterDestroy : function( user, options, fn ) {fn();},
beforeDelete : function( user, options, fn ) {fn();},
afterDelete : function( user, options, fn ) {fn();},
beforeUpdate : function( user, options, fn ) {fn();},
afterUpdate : function( user, options, fn ) {fn();}
}
} );
//
// Instance
// ~~~~~~~~~~
//
// https://github.com/sequelize/sequelize/blob/v3.4.1/test/integration/instance.test.js
// https://github.com/sequelize/sequelize/blob/v3.4.1/test/integration/instance/update.test.js
// https://github.com/sequelize/sequelize/blob/v3.4.1/test/integration/instance/values.test.js
//
user.isNewRecord = true;
user.Model.build( { a : 'b' } );
user.sequelize.close();
user.where();
user.getDataValue( '' );
user.setDataValue( '', '' );
user.setDataValue( '', {} );
user.get( 'aNumber', { plain : true, clone : true } );
user.get();
user.set( 'email', 'B' );
user.set( { name : 'B', bio : 'B' } ).save().then( ( p ) => p );
user.set( 'birthdate', new Date() );
user.set( { id : 1, t : 'c', q : [{ id : 1, n : 'a' }, { id : 2, n : 'Beta' }], u : { id : 1, f : 'b', l : 'd' } } );
user.setAttributes( { a : 3 } );
user.setAttributes( { id : 1, a : 'n', c : [{ id : 1 }, { id : 2, f : 'e' }], x : { id : 1, f : 'h', l : 'd' } } );
user.changed( 'name' );
user.changed();
user.previous( 'name' );
user.previous();
user.save().then( ( p ) => p );
user.save( { fields : ['a'] } ).then( ( p ) => p );
user.save( { transaction : t } );
user.save( { hooks: false } );
user.save( { hooks: true } );
user.reload();
user.reload( { attributes : ['bNumber'] } );
user.reload( { transaction : t } );
user.validate();
user.update( { bNumber : 2 }, { where : { id : 1 } } );
user.update( { username : 'userman' }, { silent : true } );
user.update( { username : 'yolo' }, { logging : function() { } } );
user.update( { username : 'bar' }, { where : { username : 'foo' }, transaction : t } ).then( ( p ) => p );
user.updateAttributes( { a : 3 } ).then( ( p ) => p );
user.updateAttributes( { a : 3 }, { fields : ['secretValue'], logging : function( ) {} } );
user.destroy().then( ( p ) => p );
user.destroy( { logging : function( ) {} } );
user.destroy( { transaction : t } ).then( ( p ) => p );
user.restore();
user.increment( 'number', { by : 2 } ).then( ( p ) => p );
user.increment( ['aNumber'], { by : 2, where : { bNumber : 1 } } ).then( ( p ) => p );
user.increment( ['aNumber'], { by : 2 } ).then( ( p ) => p );
user.increment( 'aNumber' ).then( ( p ) => p );
user.increment( { 'aNumber' : 1, 'bNumber' : 2 } ).then( ( p ) => p );
user.increment( 'number', { by : 2, transaction : t } ).then( ( p ) => p );
user.decrement( 'aNumber', { by : 2 } ).then( ( p ) => p );
user.decrement( ['aNumber'], { by : 2 } ).then( ( p ) => p );
user.decrement( 'aNumber' ).then( ( p ) => p );
user.decrement( { 'aNumber' : 1, 'bNumber' : 2 } ).then( ( p ) => p );
user.decrement( 'number', { by : 2, transaction : t } ).then( ( p ) => p );
user.equals( user );
user.equalsOneOf( [user, user] );
user.toJSON();
//
// Model
// ~~~~~~~
//
// https://github.com/sequelize/sequelize/blob/v3.4.1/test/integration/model.test.js
//
User.removeAttribute( 'id' );
User.sync( { force : true } ).then( function() { } );
User.sync( { force : true, logging : function() { } } );
User.drop();
User.schema( 'special' );
User.schema( 'special' ).create( { age : 3 }, { logging : function( ) {} } );
User.getTableName();
User.addScope('lowAccess', { where : { parent_id : 2 } });
User.addScope('lowAccess', { where : { parent_id : 2 } }, { override: true });
User.addScope('lowAccessWithParam', function(id: number) {
return { where : { parent_id : id } }
} );
User.scope( 'lowAccess' ).count();
User.scope( 'lowAccess' ).findUser( 'foo' );
User.scope( { where : { parent_id : 2 } } );
User.scope( [ 'lowAccess', { method: ['lowAccessWithParam', 2] }, { where : { parent_id : 2 } } ] )
User.findAll();
User.findAll( { where : { data : { employment : null } } } );
User.findAll( { where : { aNumber : { gte : 10 } } } ).then( ( u ) => u[0].isNewRecord );
User.findAll( { where : [s.or( { u : 'b' }, { u : ';' } ), s.and( { id : [1, 2] } )], include : [{ model : User }] } );
User.findAll( {
where : [s.or( { a : 'b' }, { c : 'd' } ), s.and( { id : [1, 2, 3] },
s.or( { deletedAt : null }, { deletedAt : { gt : new Date( 0 ) } } ) )]
} );
User.findAll( { paranoid : false, where : [' IS NOT NULL '], include : [{ model : User }] } );
User.findAll( { include : [{ model : Task, paranoid: false }] } );
User.findAll( { transaction : t } );
User.findAll( { where : { data : { name : { last : 's' }, employment : { $ne : 'a' } } }, order : [['id', 'ASC']] } );
User.findAll( { where : { username : ['boo', 'boo2'] } } );
User.findAll( { where : { username : Buffer.from("a name") } } );
User.findAll( { where : { username : [Buffer.from("a name")] } } );
User.findAll( { where : { username : [true] } } );
User.findAll( { where : { username : { like : '%2' } } } );
User.findAll( { where : { theDate : { '..' : ['2013-01-02', '2013-01-11'] } } } );
User.findAll( { where : { intVal : { '!..' : [8, 10] } } } );
User.findAll( { where : { theDate : { between : ['2013-01-02', '2013-01-11'] } } } );
User.findAll( { where : { theDate : { between : ['2013-01-02', '2013-01-11'] }, intVal : 10 } } );
User.findAll( { where : { theDate : { between : ['2012-12-10', '2013-01-02'] } } } );
User.findAll( { where : { theDate : { between : [1, 3] } } } );
User.findAll( { where : { theDate : { between : [new Date(0), new Date(1000)] } } } );
User.findAll( { where : { theDate : { nbetween : ['2013-01-04', '2013-01-20'] } } } );
User.findAll( { order : [s.col( 'name' )] } );
User.findAll( { order : [['theDate', 'DESC']] } );
User.findAll( { include : [User], order : [[User, User, 'numYears', 'c']] } );
User.findAll( { include : [{ model : User, include : [User, { model : User, as : 'residents' }] }] } );
User.findAll( { order : [[User, { model : User, as : 'residents' }, 'lastName', 'c']] } );
User.findAll( { include : [User], order : [[User, 'name', 'c']] } );
User.findAll( { include : [{ all : 'HasMany', attributes : ['name'] }] } );
User.findAll( { include : [{ all : true }, { model : User, attributes : ['id'] }] } );
User.findAll( { include : [{ all : 'BelongsTo' }] } );
User.findAll( { include : [{ all : true }] } );
User.findAll( { include : [{ nested : true }] } );
User.findAll( { where : { username : 'barfooz' }, raw : true } );
User.findAll( { where : { name : 'worker' }, include : [{ model : User, as : 'ToDos' }] } );
User.findAll( { where : { user_id : 1 }, attributes : ['a', 'b'], include : [{ model : User, attributes : ['c'] }] } );
User.findAll( { order : s.literal( 'email =' ) } );
User.findAll( { order : [s.literal( 'email = ' + s.escape( 'test@sequelizejs.com' ) )] } );
User.findAll( { order : [['id', ';DELETE YOLO INJECTIONS']] } );
User.findAll( { order : s.random() } );
User.findAll( { order : [s.random()] } );
User.findAll( { include : [User], order : [[User, 'id', ';DELETE YOLO INJECTIONS']] } );
User.findAll( { include : [User], order : [['id', 'ASC NULLS LAST'], [User, 'id', 'DESC NULLS FIRST']] } );
User.findAll( { include : [{ model : User, where : { title : 'DoDat' }, include : [{ model : User }] }] } );
User.findAll( { attributes: ['username', 'data']});
User.findAll( { attributes: {include: ['username', 'data']} });
User.findAll( { attributes: [['username', 'user_name'], ['email', 'user_email']] });
User.findAll( { attributes: [s.fn('count', Sequelize.col('*'))] });
User.findAll( { attributes: [[s.fn('count', Sequelize.col('*')), 'count']] });
User.findAll( { attributes: [[s.fn('count', Sequelize.col('*')), 'count']], group: ['sex'] });
User.findAll( { attributes: [s.cast(s.fn('count', Sequelize.col('*')), 'INTEGER')] });
User.findAll( { attributes: [[s.cast(s.fn('count', Sequelize.col('*')), 'INTEGER'), 'count']] });
User.findAll( { where : s.fn('count', [0, 10]) } );
User.findAll( { where: s.where(s.fn('lower', s.col('email')), s.fn('lower', 'TEST@SEQUELIZEJS.COM')) } );
User.findAll( { subQuery: false, include : [User], order : [[User, User, 'numYears', 'c']] } );
User.findAll( { rejectOnEmpty: true });
User.findAll( { include : [{ association: User.hasOne( Task, { foreignKey : 'userId' } ) }] } );
User.findAll( { include : [{ association: User.hasMany( Task, { foreignKey : 'userId' } ) }] } );
User.findAll( { include : [{ association: Task.belongsTo( User, { foreignKey : 'userId' } ) }] } );
User.findAll( { include : [{ association: User.belongsToMany( User, { through : Task } ) }] } );
User.findAll( { where: { $and:[ { username: "user" }, { theDate: new Date() } ] } } );
User.findAll( { where: { $or:[ { username: "user" }, { theDate: new Date() } ] } } );
User.findAll( { where: { $and:[ { username: { $not: "user" } }, { theDate: new Date() } ] } } );
User.findAll( { where: { $or:[ { username: { $not: "user" } }, { theDate: new Date() } ] } } );
User.findAll( { where: { emails: { $overlap: ["me@mail.com", "you@mail.com"] } } } );
var options: Sequelize.AnyFindOptions = { where: { $and: Sequelize.where( Sequelize.fn( 'char_length', Sequelize.col('username') ), 4 ) } };
User.findAll( options );
User.findById( 1 );
User.findById( 1, { attributes : ['id'] } );
User.findById( 1, { logging : function( ) { } } );
User.findById( 1, { transaction : t } );
User.findById( 1, { include : [User] } );
User.findById( 1, { include : [{ model : User }] });
User.findById( 1, { include : [{ model : User, as : 'ToDo' }] });
User.findById( 1, { include : [User, { model : User, as : 'ToDo' }] });
User.findById( 'id' );
User.findById( 'id', { attributes : ['id'] } );
User.findById( 'id', { logging : function( ) { } } );
User.findById( 'id', { transaction : t } );
User.findById( 'id', { include : [User] } );
User.findById( 'id', { include : [{ model : User }] });
User.findById( 'id', { include : [{ model : User, as : 'ToDo' }] });
User.findById( 'id', { include : [User, { model : User, as : 'ToDo' }] });
User.findById( Buffer.from('id') );
User.findById( Buffer.from('id'), { attributes : ['id'] } );
User.findById( Buffer.from('id'), { logging : function( ) { } } );
User.findById( Buffer.from('id'), { transaction : t } );
User.findById( Buffer.from('id'), { include : [User] } );
User.findById( Buffer.from('id'), { include : [{ model : User }] });
User.findById( Buffer.from('id'), { include : [{ model : User, as : 'ToDo' }] });
User.findById( Buffer.from('id'), { include : [User, { model : User, as : 'ToDo' }] });
User.findByPrimary( 1 );
User.findByPrimary( 1, { attributes : ['id'] } );
User.findByPrimary( 1, { logging : function( ) { } } );
User.findByPrimary( 1, { transaction : t } );
User.findByPrimary( 1, { include : [User] } );
User.findByPrimary( 1, { include : [{ model : User }] });
User.findByPrimary( 1, { include : [{ model : User, as : 'ToDo' }] });
User.findByPrimary( 1, { include : [User, { model : User, as : 'ToDo' }] });
User.findByPrimary( 'id' );
User.findByPrimary( 'id', { attributes : ['id'] } );
User.findByPrimary( 'id', { logging : function( ) { } } );
User.findByPrimary( 'id', { transaction : t } );
User.findByPrimary( 'id', { include : [User] } );
User.findByPrimary( 'id', { include : [{ model : User }] });
User.findByPrimary( 'id', { include : [{ model : User, as : 'ToDo' }] });
User.findByPrimary( 'id', { include : [User, { model : User, as : 'ToDo' }] });
User.findByPrimary( Buffer.from('id') );
User.findByPrimary( Buffer.from('id'), { attributes : ['id'] } );
User.findByPrimary( Buffer.from('id'), { logging : function( ) { } } );
User.findByPrimary( Buffer.from('id'), { transaction : t } );
User.findByPrimary( Buffer.from('id'), { include : [User] } );
User.findByPrimary( Buffer.from('id'), { include : [{ model : User }] });
User.findByPrimary( Buffer.from('id'), { include : [{ model : User, as : 'ToDo' }] });
User.findByPrimary( Buffer.from('id'), { include : [User, { model : User, as : 'ToDo' }] });
User.findByPk( 1 );
User.findByPk( 1, { attributes : ['id'] } );
User.findByPk( 1, { logging : function( ) { } } );
User.findByPk( 1, { transaction : t } );
User.findByPk( 1, { include : [User] } );
User.findByPk( 1, { include : [{ model : User }] });
User.findByPk( 1, { include : [{ model : User, as : 'ToDo' }] });
User.findByPk( 1, { include : [User, { model : User, as : 'ToDo' }] });
User.findByPk( 'id' );
User.findByPk( 'id', { attributes : ['id'] } );
User.findByPk( 'id', { logging : function( ) { } } );
User.findByPk( 'id', { transaction : t } );
User.findByPk( 'id', { include : [User] } );
User.findByPk( 'id', { include : [{ model : User }] });
User.findByPk( 'id', { include : [{ model : User, as : 'ToDo' }] });
User.findByPk( 'id', { include : [User, { model : User, as : 'ToDo' }] });
User.findByPk( Buffer.from('id') );
User.findByPk( Buffer.from('id'), { attributes : ['id'] } );
User.findByPk( Buffer.from('id'), { logging : function( ) { } } );
User.findByPk( Buffer.from('id'), { transaction : t } );
User.findByPk( Buffer.from('id'), { include : [User] } );
User.findByPk( Buffer.from('id'), { include : [{ model : User }] });
User.findByPk( Buffer.from('id'), { include : [{ model : User, as : 'ToDo' }] });
User.findByPk( Buffer.from('id'), { include : [User, { model : User, as : 'ToDo' }] });
User.findOne( { where : { username : 'foo' } } );
User.findOne( { where : { id : 1 }, attributes : ['id', ['username', 'name']] } );
User.findOne( { where : { id : 1 }, attributes : ['id'] } );
User.findOne( { where : { username : 'foo' }, logging : function( ) { } } );
User.findOne( { limit : 10 } );
User.findOne( { where : { title : 'homework' }, include : [User] } );
User.findOne( { where : { name : 'environment' }, include : [{ model : User, as : 'PrivateDomain' }] } );
User.findOne( { where : { username : 'foo' }, transaction : t } ).then( ( p ) => p );
User.findOne( { include : [User] } );
User.findOne( { include : [{ model : User, as : 'Work' }] } );
User.findOne( { where : { name : 'worker' }, include : [{ model : User, as : 'ToDo' }] } );
User.findOne( { include : [{ model : User, as : 'ToDo' }, { model : User, as : 'DoTo' }] } );
User.findOne( { where : { name : 'worker' }, include : [User] } );
User.findOne( { where : { name : 'Boris' }, include : [User, { model : User, as : 'Photos' }] } );
User.findOne( { where : { username : 'someone' }, include : [User] } );
User.findOne( { where : { username : 'barfooz' }, raw : true } );
User.findOne( { where : s.fn('count', []) } );
User.findOne( { where: s.where(s.fn('lower', s.col('email')), s.fn('lower', 'TEST@SEQUELIZEJS.COM')) } );
/* NOTE https://github.com/DefinitelyTyped/DefinitelyTyped/pull/5590
User.findOne( { updatedAt : { ne : null } } );
*/
User.find( { where : { intVal : { gt : 5 } } } );
User.find( { where : { intVal : { lte : 5 } } } );
User.count();
User.count( { transaction : t } );
User.count().then( function( c ) { c.toFixed(); } );
User.count( { where : ["username LIKE '%us%'"] } );
User.count( { include : [{ model : User, required : false }] } );
User.count( { distinct : true, include : [{ model : User, required : false }] } );
User.count( { attributes : ['data'], group : ['data'] } );
User.count( { where : { access_level : { gt : 5 } } } );
User.count( { col: 'title', distinct: true, where : { access_level : { gt : 5 } } } );
User.findAndCountAll( { offset : 5, limit : 1, include : [User, { model : User, as : 'a' }] } );
User.max( 'age', { transaction : t } );
User.max( 'age' );
User.max( 'age', { logging : function( ) { } } );
User.min( 'age', { transaction : t } );
User.min( 'age' );
User.min( 'age', { logging : function( ) { } } );
User.sum( 'order' );
User.sum( 'age', { where : { 'gender' : 'male' } } );
User.sum( 'age', { logging : function( ) { } } );
User.build( { username : 'John Wayne' } ).save();
User.build();
User.build( { id : 1, T : [{ n : 'a' }, { id : 2 }], A : { id : 1, n : 'a', c : 'a' } }, { include : [User, Task] } );
User.build( { id : 1, }, { include : [{ model : User, as : 'followers' }, { model : Task, as : 'categories' }] } );
User.create();
User.create( { createdAt : 1, updatedAt : 2 }, { silent : true } );
User.create( {}, { returning : true } );
User.create( { intVal : s.literal( 'CAST(1-2 AS' ) } );
User.create( { secretValue : s.fn( 'upper', 'sequelize' ) } );
User.create( { myvals : [1, 2, 3, 4], mystr : ['One', 'Two', 'Three', 'Four'] } );
User.create( { name : 'Fluffy Bunny', smth : 'else' }, { logging : function( ) {} } );
User.create( {}, { fields : [] } );
User.create( { name : 'Yolo Bear', email : 'yolo@bear.com' }, { fields : ['name'] } );
User.create( { title : 'Chair', User : { first_name : 'Mick', last_name : 'Broadstone' } }, { include : [User] } );
User.create( { title : 'Chair', creator : { first_name : 'Matt', last_name : 'Hansen' } }, { include : [User] } );
User.create( { id : 1, title : 'e', Tags : [{ id : 1, name : 'c' }, { id : 2, name : 'd' }] }, { include : [User] } );
User.create( { id : 'My own ID!' } ).then( ( i ) => i.isNewRecord );
let findOrRetVal: Bluebird<[AnyInstance, boolean]>;
findOrRetVal = User.findOrInitialize( { where : { username : 'foo' } } );
findOrRetVal = User.findOrInitialize( { where : { username : 'foo' }, transaction : t } );
findOrRetVal = User.findOrInitialize( { where : { username : 'foo' }, defaults : { foo : 'asd' }, transaction : t } );
findOrRetVal = User.findOrInitialize( { where : { username : 'foo' }, defaults : { foo : 'asd' }, paranoid : false } );
findOrRetVal = User.findOrCreate( { where : { a : 'b' }, defaults : { json : { a : { b : 'c' }, d : [1, 2, 3] } } } );
findOrRetVal = User.findOrCreate( { where : { a : 'b' }, defaults : { json : 'a', data : 'b' } } );
/* NOTE https://github.com/DefinitelyTyped/DefinitelyTyped/pull/5590
User.findOrCreate( { where : { a : 'b' }, transaction : t, lock : t.LOCK.UPDATE } );
*/
findOrRetVal = User.findOrCreate( { where : { a : 'b' }, logging : function( ) { } } );
findOrRetVal = User.findOrCreate( { where : { username : 'Username' }, defaults : { data : 'some data' }, transaction : t } );
findOrRetVal = User.findOrCreate( { where : { objectId : 'asdasdasd' }, defaults : { username : 'gottlieb' } } );
findOrRetVal = User.findOrCreate( { where : { id : undefined }, defaults : { name : Math.random().toString() } } );
findOrRetVal = User.findOrCreate( { where : { email : 'unique.email.@d.com', companyId : Math.floor( Math.random() * 5 ) } } );
findOrRetVal = User.findOrCreate( { where : { objectId : 1 }, defaults : { bool : false } } );
let upsertPromiseNoOptions: Bluebird<boolean> = User.upsert( { id : 42, username : 'doe', foo : s.fn( 'upper', 'mixedCase2' ) } );
let upsertPromiseWithNonReturningOptions: Bluebird<boolean> = User.upsert( { id : 42, username : 'doe', foo : s.fn( 'upper', 'mixedCase2' ) }, { logging: true } );
let upsertPromiseReturning: Bluebird<[AnyInstance, boolean]> = User.upsert( { id : 42, username : 'doe', foo : s.fn( 'upper', 'mixedCase2' ) }, { returning: true } );
let upsertPromiseNotReturning: Bluebird<boolean> = User.upsert( { id : 42, username : 'doe', foo : s.fn( 'upper', 'mixedCase2' ) }, { returning: false } );
User.bulkCreate( [{ aNumber : 10 }, { aNumber : 12 }] ).then( ( i ) => i[0].isNewRecord );
User.bulkCreate( [{ username : 'bar' }, { username : 'bar' }, { username : 'bar' }] );
User.bulkCreate( [{}, {}], { validate : true, individualHooks : true } );
User.bulkCreate( [{ style : 'ipa' }], { logging : function() { } } );
User.bulkCreate( [{ a : 'b', c : 'd', e : 'f' }, { a : 'b', c : 'd', e : 'f' }], { fields : ['a', 'b'] } );
User.bulkCreate( [{ name : 'foo', code : '123' }, { code : 'c' }, { name : 'bar', code : '1' }], { validate : true } );
User.bulkCreate( [{ name : 'foo', code : '123' }, { code : '1234' }], { fields : ['code'], validate : true } );
User.bulkCreate( [{ name : 'a', c : 'b' }, { name : 'e', c : 'f' }], { fields : ['e', 'f'], ignoreDuplicates : true } );
User.truncate();
User.truncate( { cascade : true } );
User.truncate( { force : true } );
User.truncate( { cascade: true, force : true } );
User.destroy( { where : { client_id : 13 } } ).then( ( a ) => a.toFixed() );
User.destroy( { force : true } );
User.destroy( { where : {}, transaction : t } );
User.destroy( { where : { access_level : { lt : 5 } } } );
User.destroy( { truncate : true } );
User.destroy( { where : {} } );
User.restore( { where : { secretValue : '42' } } );
User.update( { username : 'ruben' }, { where : {} } );
User.update( { username : 'ruben' }, { where : { access_level : { lt : 5 } } } );
User.update( { username : 'ruben' }, { where : { username : 'dan' } } );
User.update( { username : 'bar' }, { where : { username : 'foo' }, transaction : t } );
User.update( { username : 'Bill', secretValue : '43' }, { where : { secretValue : '42' }, fields : ['username'] } );
User.update( { username : s.cast( '1', 'char' ) }, { where : { username : 'John' } } );
User.update( { username : s.fn( 'upper', s.col( 'username' ) ) }, { where : { username : 'John' } } );
User.update( { username : 'Bill' }, { where : { secretValue : '42' }, returning : true } );
User.update( { secretValue : '43' }, { where : { username : 'Peter' }, limit : 1 } );
User.update( { name : Math.random().toString() }, { where : { id : '1' } } );
User.update( { a : { b : 10, c : 'd' } }, { where : { username : 'Jan' }, sideEffects : false } );
User.update( { geometry : { type : 'Point', coordinates : [49.807222, -86.984722] } }, {
where : {
u : {
u : 'u',
geometry : { type : 'Point', coordinates : [49.807222, -86.984722] }
}
}
} );
User.update( {
geometry : {
type : 'Polygon',
coordinates : [[[100.0, 0.0], [102.0, 0.0], [102.0, 1.0], [100.0, 1.0], [100.0, 0.0]]]
}
}, {
where : {
username : {
username : 'username',
geometry : { type : 'Point', coordinates : [49.807222, -86.984722] }
}
}
} );
User.unscoped().find( { where : { username : 'bob' } } );
User.unscoped().count();
//
// Query Interface
// ~~~~~~~~~~~~~~~~~
//
// https://github.com/sequelize/sequelize/blob/v3.4.1/test/integration/query-interface.test.js
//
var queryInterface = s.getQueryInterface();
queryInterface.dropAllTables();
queryInterface.showAllTables( { logging : function() { } } );
queryInterface.createTable( 'table', { name : Sequelize.STRING }, { logging : function() { } } );
queryInterface.createTable( 'skipme', { name : Sequelize.STRING } );
/* NOTE https://github.com/DefinitelyTyped/DefinitelyTyped/pull/5590
queryInterface.dropAllTables( { skip : ['skipme'] } );
*/
queryInterface.dropTable( 'Group', { logging : function() { } } );
queryInterface.addIndex( 'Group', ['username', 'isAdmin'], { logging : function() { } } );
queryInterface.showIndex( 'Group', { logging : function() { } } );
queryInterface.removeIndex( 'Group', ['username', 'isAdmin'], { logging : function() { } } );
queryInterface.showIndex( 'Group' );
/* NOTE https://github.com/DefinitelyTyped/DefinitelyTyped/pull/5590
queryInterface.createTable( 'table', { name : { type : Sequelize.STRING } }, { schema : 'schema' } );
*/
queryInterface.addIndex( { schema : 'a', tableName : 'c' }, ['d', 'e'], { logging : function() {} }, 'schema_table' );
queryInterface.showIndex( { schema : 'schema', tableName : 'table' }, { logging : function() {} } );
queryInterface.addIndex( 'Group', ['from'] );
queryInterface.addIndex( 'Group', ['from'], { indexName: 'group_from' });
queryInterface.addIndex( 'Group', ['from'], { type: 'FULLTEXT' });
queryInterface.addIndex( 'Group', ['from'], { indicesType: 'FULLTEXT' } );
queryInterface.addIndex( 'Group', ['from'], { concurrently: true } );
queryInterface.addIndex( 'Group', ['data'], { using: 'gin', operator: 'jsonb_path_ops' } );
queryInterface.addIndex( 'Group', { fields: ['data'], using: 'gin', operator: 'jsonb_path_ops' } );
queryInterface.describeTable( '_Users', { logging : function() {} } );
queryInterface.createTable( 's', { table_id : { type : Sequelize.INTEGER, primaryKey : true, autoIncrement : true } } );
/* NOTE https://github.com/DefinitelyTyped/DefinitelyTyped/pull/5590
queryInterface.insert( null, 'TableWithPK', {}, { raw : true, returning : true, plain : true } );
*/
queryInterface.createTable( 'SomeTable', { someEnum : Sequelize.ENUM( 'value1', 'value2', 'value3' ) } );
queryInterface.createTable( 'SomeTable', { someEnum : { type : Sequelize.ENUM, values : ['b1', 'b2', 'b3'] } } );
queryInterface.createTable( 't', { someEnum : { type : Sequelize.ENUM, values : ['c1', 'c2', 'c3'], field : 'd' } } );
/* NOTE https://github.com/DefinitelyTyped/DefinitelyTyped/pull/5590
queryInterface.createTable( 'User', { name : { type : Sequelize.STRING } }, { schema : 'hero' } );
queryInterface.rawSelect( 'User', { schema : 'hero', logging : function() {} }, 'name' );
*/
queryInterface.renameColumn( '_Users', 'username', 'pseudo', { logging : function() {} } );
queryInterface.renameColumn( { schema : 'archive', tableName : 'Users' }, 'username', 'pseudo' );
queryInterface.renameColumn( '_Users', 'username', 'pseudo' );
queryInterface.createTable( { tableName : 'y', schema : 'a' },
{ id : { type : Sequelize.INTEGER, primaryKey : true, autoIncrement : true }, currency : Sequelize.INTEGER } );
queryInterface.changeColumn( { tableName : 'a', schema : 'b' }, 'c', { type : Sequelize.FLOAT },
{ logging : () => s } );
queryInterface.createTable( 'users', { id : { type : Sequelize.INTEGER, primaryKey : true, autoIncrement : true } } );
queryInterface.bulkInsert({tableName:'users', schema:'test'}, [{}, {}, {}]);
queryInterface.getForeignKeysForTables(['users']);
queryInterface.createTable( 'level', { id : { type : Sequelize.INTEGER, primaryKey : true, autoIncrement : true } } );
queryInterface.addColumn( 'users', 'someEnum', Sequelize.ENUM( 'value1', 'value2', 'value3' ) );
queryInterface.addColumn( 'users', 'so', { type : Sequelize.ENUM, values : ['value1', 'value2', 'value3'] } );
queryInterface.addColumn({tableName:'users', schema:'test'}, 'enum',{ type : Sequelize.ENUM, values : ['value1', 'value2', 'value3'] });
queryInterface.removeColumn('users','so');
queryInterface.removeColumn({tableName:'users', schema:'test'},'enum');
queryInterface.createTable( 'hosts', {
id : {
type : Sequelize.INTEGER,
primaryKey : true,
autoIncrement : true
},
admin : {
type : Sequelize.INTEGER,
references : {
model : User,
key : 'id'
}
},
operator : {
type : Sequelize.INTEGER,
references : {
model : User,
key : 'id'
},
onUpdate : 'cascade'
},
owner : {
type : Sequelize.INTEGER,
references : {
model : User,
key : 'id'
},
onUpdate : 'cascade',
onDelete : 'set null'
}
} );
//
// Query Types
// ~~~~~~~~~~~~~
//
s.getDialect();
s.validate();
s.authenticate();
s.isDefined( '' );
s.model( 'pp' );
s.query( '', { raw : true } );
s.query( '' );
s.query( '' ).then( function( res ) {} );
s.query( { query : 'select ? as foo, ? as bar', values : [1, 2] }, { raw : true, replacements : [1, 2] } );
s.query( '', { raw : true, nest : false } );
s.query( 'select ? as foo, ? as bar', { type : sequelize.QueryTypes.SELECT, replacements : [1, 2] } );
s.query( { query : 'select ? as foo, ? as bar', values : [1, 2] }, { type : s.QueryTypes.SELECT } );
s.query( 'select :one as foo, :two as bar', { raw : true, replacements : { one : 1, two : 2 } } );
s.transaction().then( function( t ) { s.set( { foo : 'bar' }, { transaction : t } ); } );
s.define( 'foo', { bar : Sequelize.STRING }, { collate : 'utf8_bin' } );
s.define( 'Foto', { name : Sequelize.STRING }, { tableName : 'photos' } );
s.databaseVersion().then( function( version ) { } );
//
// Sequelize
// ~~~~~~~~~~~
//
new Sequelize( 'db', 'user', 'pw', { logging : false } );
new Sequelize( 'db', 'user', 'pass', {
dialect : '',
port : 99999,
pool : {}
} );
new Sequelize( '' ).query( '', { type : s.QueryTypes.FOREIGNKEYS, logging : function() {} } );
new Sequelize( 'sqlite://test.sqlite' );
new Sequelize( 'wat', 'trololo', 'wow', { port : 99999 } );
new Sequelize( 'localhost', 'wtf', 'lol', { port : 99999 } );
new Sequelize( 'sequelize', null, null, {
replication : {
read : [{
host : 'localhost',
username : 'omg',
password : 'lol'
}]
}
} );
new Sequelize( {
database: 'db',
username: 'user',
password: 'pass',
retry: {
match: ['failed', /failed/i, Sequelize.ForeignKeyConstraintError],
max: 3
},
typeValidation: true
} );
new Sequelize({
operatorsAliases: false,
});
new Sequelize({
operatorsAliases: {
$and: Sequelize.Op.and,
customAlias: Sequelize.Op.or,
},
});
s.model( 'Project' );
s.models['Project'];
s.define( 'Project', {
name : Sequelize.STRING
} );
var s = new Sequelize( '' );
var testModel = s.define( 'User', {
username : Sequelize.STRING,
secretValue : Sequelize.STRING,
data : Sequelize.STRING,
intVal : Sequelize.INTEGER,
theDate : Sequelize.DATE,
aBool : Sequelize.BOOLEAN
} );
const testFrozenModel = s.define( 'FrozenUser', {}, { freezeTableName : true } );
s.define( 'UserWithClassAndInstanceMethods', {}, {
classMethods : { doSmth : function() { return 1; } },
instanceMethods : { makeItSo : function() { return 2; } }
} );
s.define( 'UserCol', {
id : {
type : Sequelize.STRING,
defaultValue : 'User',
primaryKey : true
}
} );
s.define( 'UserWithTwoAutoIncrements', {
userid : { type : Sequelize.INTEGER, primaryKey : true, autoIncrement : true },
userscore : { type : Sequelize.INTEGER, primaryKey : true, autoIncrement : true }
} );
s.define( 'Foo', {
field : Sequelize.INTEGER
}, {
validate : {
field : function() {}
}
} );
var UserTable = s.define( 'UserCol', {
aNumber : Sequelize.INTEGER,
createdAt : {
type : Sequelize.DATE,
defaultValue : new Date()
},
updatedAt : {
type : Sequelize.DATE,
defaultValue : new Date()
}
}, { timestamps : true } );
s.define( 'UserCol', {
aNumber : Sequelize.INTEGER
}, {
timestamps : true,
updatedAt : 'updatedOn',
createdAt : 'dateCreated',
deletedAt : 'deletedAtThisTime',
paranoid : true
} );
s.define( 'UpdatingUser', {
name : Sequelize.STRING
}, {
timestamps : true,
updatedAt : false,
createdAt : false,
deletedAt : 'deletedAtThisTime',
paranoid : true
} );
s.define( 'TaskBuild', {
title : {
type : Sequelize.STRING( 50 ),
allowNull : false,
defaultValue : ''
}
}, {
setterMethods : {
title : function() { }
}
} );
s.define( 'UserCol', {
aNumber : Sequelize.INTEGER
}, {
paranoid : true,
underscored : true
} );
s.define( 'UserWithUniqueUsername', {
username : { type : Sequelize.STRING, unique : { name : 'user_and_email', msg : 'User and email must be unique' } },
email : { type : Sequelize.STRING, unique : 'user_and_email' }
} );
s.define( 'UserWithUniqueUsername', {
user_id : { type : Sequelize.INTEGER },
email : { type : Sequelize.STRING }
}, {
indexes : [
{
name : 'user_and_email_index',
unique : true,
method : 'BTREE',
fields : ['user_id', { attribute : 'email', collate : 'en_US', order : 'DESC', length : 5 }],
where : {
user_id : { $not: null }
}
},
{
fields: ['data'],
using: 'gin',
operator: 'jsonb_path_ops'
}
]
} );
s.define( 'TaskBuild', {
title : { type : Sequelize.STRING, defaultValue : 'a task!' },
foo : { type : Sequelize.INTEGER, defaultValue : 2 },
bar : { type : Sequelize.DATE },
foobar : { type : Sequelize.TEXT, defaultValue : 'asd' },
flag : { type : Sequelize.BOOLEAN, defaultValue : false }
} );
s.define( 'ProductWithSettersAndGetters1', {
price : {
type : Sequelize.INTEGER,
get : function() {
return 'answer = ' + this.getDataValue( 'price' );
},
set : function( v: number ) {
return this.setDataValue( 'price', v + 42 );
}
}
} );
s.define( 'ProductWithSettersAndGetters2', {
priceInCents : Sequelize.INTEGER
}, {
setterMethods : {
price : function( value ) {
this.dataValues.priceInCents = value * 100;
}
},
getterMethods : {
price : function() {
return '$' + (this.getDataValue( 'priceInCents' ) / 100);
},
priceInCents : function() {
return this.dataValues.priceInCents;
}
}
} );
s.define( 'post', {
title : Sequelize.STRING,
authorId : { type : Sequelize.INTEGER, references : testModel, referencesKey : 'id' }
} as any /* TODO please remove `as any` */);
s.define( 'post', {
title : Sequelize.STRING,
authorId : { type : Sequelize.INTEGER, references : { model : testModel, key : 'id' } }
} );
s.define( 'User', {
username : Sequelize.STRING,
geometry : Sequelize.GEOMETRY( 'POINT' )
} );
s.define( 'ScopeMe', {
username : Sequelize.STRING,
email : Sequelize.STRING,
access_level : Sequelize.INTEGER,
other_value : Sequelize.INTEGER,
parent_id : Sequelize.INTEGER
}, {
defaultScope : {
where : {
access_level : {
gte : 5
}
}
},
scopes : {
isTony : {
where : {
username : 'tony'
}
},
}
} );
s.define( 'company', {
active : Sequelize.BOOLEAN
}, {
defaultScope : {
where : { active : true }
},
scopes : {
notActive : {
where : {
active : false
}
},
reversed : {
order : [['id', 'DESC']]
}
}
} );
s.define( 'profile', {
active : Sequelize.BOOLEAN
}, {
defaultScope : {
where : { active : true }
},
scopes : {
notActive : {
where : {
active : false
}
},
}
} );
s.define( 'ScopeMe', {
username : Sequelize.STRING,
email : Sequelize.STRING,
access_level : Sequelize.TINYINT,
other_value : Sequelize.INTEGER
}, {
defaultScope : {
where : {
access_level : {
gte : 5
}
}
},
scopes : {
lowAccess : {
where : {
access_level : {
lte : 5
}
}
},
withOrder : {
order : 'username'
}
}
} );
// Test convention method used to associate models after creation
Object.keys(s.models).forEach(modelName => {
if (s.models[modelName].associate) {
s.models[modelName].associate(s.models);
}
});
// Generic find options
interface ChairAttributes {
id: number;
color: string;
legs: number;
}
interface ChairInstance extends Sequelize.Instance<ChairAttributes> {}
const Chair = s.define<ChairInstance, ChairAttributes>('chair', {
id: Sequelize.NUMBER,
color: Sequelize.STRING,
legs: Sequelize.NUMBER
});
Chair.findAll({
where: {
color: 'blue',
legs: { $in: [3, 4] },
},
});
Chair.findAll({
where: {
color: 'blue',
legs: { [Sequelize.Op.in]: [3, 4] },
},
});
// If you want to use a property that isn't explicitly on the model's Attributes
// use the find-function's generic type parameter.
Chair.findAll<{ customProperty: number }>({
where: {
customProperty: 123,
}
});
Chair.findAll<any>({
where: {
customProperty1: 123,
customProperty2: 456,
}
});
s.define( 'ScopeMe', {
username : Sequelize.STRING,
email : Sequelize.STRING,
access_level : Sequelize.INTEGER,
other_value : Sequelize.INTEGER
}, {
defaultScope : {
where : {
access_level : {
gte : 5
}
}
},
scopes : {
lowAccess : {
where : {
access_level : {
lte : 5
}
}
}
}
} );
s.define( 'user', {
id : {
type : Sequelize.INTEGER,
allowNull : false,
primaryKey : true,
autoIncrement : true,
field : 'userId'
},
name : {
type : Sequelize.STRING,
field : 'full_name'
},
taskCount : {
type : Sequelize.INTEGER,
field : 'task_count',
defaultValue : 0,
allowNull : false
}
}, {
tableName : 'users',
timestamps : false
} );
s.define( 'task', {
id : {
type : Sequelize.INTEGER,
allowNull : false,
primaryKey : true,
autoIncrement : true,
field : 'taskId'
},
title : {
type : Sequelize.STRING,
field : 'name'
}
}, {
tableName : 'tasks',
timestamps : false
} );
s.define( 'comment', {
id : {
type : Sequelize.INTEGER,
allowNull : false,
primaryKey : true,
autoIncrement : true,
field : 'commentId'
},
text : {
type : Sequelize.STRING,
field : 'comment_text'
},
notes : {
type : Sequelize.STRING,
field : 'notes'
}
}, {
tableName : 'comments',
timestamps : false
} );
s.define( 'test', {
id : {
type : Sequelize.INTEGER,
field : 'test_id',
autoIncrement : true,
primaryKey : true,
validate : {
min : 1
}
},
title : {
allowNull : false,
type : Sequelize.STRING( 255 ),
field : 'test_title'
}
}, {
timestamps : true,
underscored : true,
freezeTableName : true
} );
s.define( 'testBooeanVersionOption', {
version : {
type : Sequelize.INTEGER,
}
}, {
version: true
} );
s.define( 'testStringVersionOption', {
nameOfOptimisticLockColumn : {
type : Sequelize.INTEGER,
}
}, {
version: "nameOfOptimisticLockColumn"
} );
s.define( 'User', {
deletedAt : {
type : Sequelize.DATE,
field : 'deleted_at'
}
}, {
timestamps : true,
paranoid : true
} );
s.define( 'TriggerTest', {
id : {
type : Sequelize.INTEGER,
field : 'test_id',
autoIncrement : true,
primaryKey : true,
validate : {
min : 1
}
},
title : {
allowNull : false,
type : Sequelize.STRING( 255 ),
field : 'test_title'
}
}, {
timestamps : false,
underscored : true,
hasTrigger : true
} );
s.define('DefineOptionsIndexesTest', {
id: {
type: Sequelize.INTEGER,
autoIncrement: true,
primaryKey: true,
validate: {
min: 1
}
},
email: {
allowNull: false,
type: Sequelize.STRING(255),
set: function (val: any) {
if (typeof val === "string") {
val = val.toLowerCase();
} else {
throw new Error("email must be a string");
}
this.setDataValue("email", val);
}
}
}, {
timestamps: false,
indexes: [
{
name: "DefineOptionsIndexesTest_lower_email",
unique: true,
type: "SPATIAL",
fields: [
Sequelize.fn("LOWER", Sequelize.col("email"))
]
}
]
} );
//
// Transaction
// ~~~~~~~~~~~~~
//
// https://github.com/sequelize/sequelize/blob/v3.4.1/test/integration/transaction.test.js
//
s.transaction().then( function( t ) {
t.commit();
t.rollback();
User.find( {
where : {
username : 'John'
},
include : [User],
lock : t.LOCK.UPDATE,
transaction : t
} );
User.find( {
where : {
username : 'John'
},
include : [User],
lock : {
level : t.LOCK.UPDATE,
of : User
},
transaction : t
} );
User.update( {
active : true
}, {
where : {
active : false
},
transaction : t
} );
User.find( {
where : {
username : 'jan'
},
lock : t.LOCK.NO_KEY_UPDATE,
transaction : t
} );
User.find( {
where : {
username : 'jan'
},
lock : t.LOCK.KEY_SHARE,
transaction : t
} );
} );
s.transaction({
isolationLevel: s.Transaction.ISOLATION_LEVELS.READ_COMMITTED
}).then(function(t2) {
return User.find({
where: {
username: 'jan'
},
lock: t2.LOCK.UPDATE,
transaction: t2
});
});
s.transaction( function() {
return Bluebird.resolve();
} );
s.transaction( { isolationLevel : 'SERIALIZABLE' }, function( t ) { return Bluebird.resolve(); } );
s.transaction( { isolationLevel : s.Transaction.ISOLATION_LEVELS.SERIALIZABLE }, (t) => Bluebird.resolve() );
s.transaction( { isolationLevel : s.Transaction.ISOLATION_LEVELS.READ_COMMITTED }, (t) => Bluebird.resolve() );
// transaction types
new Sequelize( '', { transactionType: 'DEFERRED' } );
new Sequelize( '', { transactionType: Sequelize.Transaction.TYPES.DEFERRED} );
new Sequelize( '', { transactionType: Sequelize.Transaction.TYPES.IMMEDIATE} );
new Sequelize( '', { transactionType: Sequelize.Transaction.TYPES.EXCLUSIVE} );
s.transaction( { type : 'DEFERRED' }, (t) => Bluebird.resolve() );
s.transaction( { type : s.Transaction.TYPES.DEFERRED }, (t) => Bluebird.resolve() );
s.transaction( { type : s.Transaction.TYPES.IMMEDIATE }, (t) => Bluebird.resolve() );
s.transaction( { type : s.Transaction.TYPES.EXCLUSIVE }, (t) => Bluebird.resolve() );
// promise transaction
s.transaction(async () => {
});
s.transaction((): Promise<void> => {
return Promise.resolve();
});
s.transaction((): Bluebird<void> => {
return Bluebird.resolve();
});
s.transaction((): Q.Promise<void> => {
return Q.Promise<void>((resolve) => {
resolve(null);
});
});
// sync options types
s.sync({
alter: true,
force: true,
hooks: false,
searchPath: 'some/path/',
schema: 'schema',
logging: () => {},
match: new RegExp('\d{4,}')
});