npm install -g sequelize-cli To update the database after updating the app from git (on the command line in the webapp base directory): sequelize db:migrate To undo the last migrations: sequelize db:migrate:undo
204 lines
3.5 KiB
JavaScript
204 lines
3.5 KiB
JavaScript
'use strict';
|
|
|
|
module.exports = {
|
|
up: function (query, Sequelize) {
|
|
var DataTypes = Sequelize; //Allow for more cut and paste :)
|
|
|
|
return query.createTable('User', {
|
|
login: {
|
|
type: DataTypes.STRING
|
|
},
|
|
password: {
|
|
type: DataTypes.STRING
|
|
},
|
|
admin: {
|
|
type: DataTypes.BOOLEAN,
|
|
allowNull: false,
|
|
defaultValue: true
|
|
}
|
|
}, {
|
|
charset: 'utf8'
|
|
});
|
|
query.addIndex('User', ['login'], {indicesType: 'UNIQUE', indexName: 'LOGIN_INDEX'});
|
|
|
|
query.createTable('Measure', {
|
|
id: {
|
|
type: DataTypes.INTEGER,
|
|
primaryKey: true,
|
|
allowNull: false,
|
|
autoIncrement: true
|
|
},
|
|
name: {
|
|
type: DataTypes.STRING,
|
|
allowNull: false
|
|
},
|
|
image: {
|
|
type: DataTypes.STRING,
|
|
allowNull: true
|
|
},
|
|
postfix: {
|
|
type: DataTypes.STRING,
|
|
allowNull: false
|
|
},
|
|
visible: {
|
|
type: DataTypes.BOOLEAN,
|
|
allowNull: false,
|
|
defaultValue: true
|
|
}
|
|
}, {
|
|
charset: 'utf8'
|
|
});
|
|
|
|
query.createTable('Venue', {
|
|
id: {
|
|
type: DataTypes.INTEGER,
|
|
primaryKey: true,
|
|
allowNull: false,
|
|
autoIncrement: true
|
|
},
|
|
name: {
|
|
type: DataTypes.STRING,
|
|
allowNull: false
|
|
},
|
|
visible: {
|
|
type: DataTypes.BOOLEAN,
|
|
allowNull: false,
|
|
defaultValue: true
|
|
}
|
|
}, {
|
|
charset: 'utf8'
|
|
});
|
|
|
|
query.createTable('Category', {
|
|
id: {
|
|
type: DataTypes.INTEGER,
|
|
primaryKey: true,
|
|
allowNull: false,
|
|
autoIncrement: true
|
|
},
|
|
name: {
|
|
type: DataTypes.STRING,
|
|
allowNull: false
|
|
},
|
|
visible: {
|
|
type: DataTypes.BOOLEAN,
|
|
allowNull: false,
|
|
defaultValue: true
|
|
}
|
|
}, {
|
|
charset: 'utf8'
|
|
});
|
|
|
|
query.createTable('Subcategory', {
|
|
id: {
|
|
type: DataTypes.INTEGER,
|
|
field: 'id',
|
|
primaryKey: true,
|
|
allowNull: false,
|
|
autoIncrement: true
|
|
},
|
|
name: {
|
|
type: DataTypes.STRING,
|
|
field: 'name',
|
|
allowNull: false
|
|
},
|
|
visible: {
|
|
type: DataTypes.BOOLEAN,
|
|
allowNull: false,
|
|
defaultValue: true
|
|
},
|
|
categoryId: {
|
|
type: Sequelize.INTEGER,
|
|
references: {
|
|
model: 'Category',
|
|
key: 'id'
|
|
},
|
|
onUpdate: 'cascade',
|
|
onDelete: 'cascade'
|
|
}
|
|
}, {
|
|
charset: 'utf8'
|
|
});
|
|
|
|
query.createTable('Item', {
|
|
id: {
|
|
type: DataTypes.INTEGER,
|
|
primaryKey: true,
|
|
allowNull: false,
|
|
autoIncrement: true
|
|
},
|
|
name: {
|
|
type: DataTypes.STRING,
|
|
allowNull: false
|
|
},
|
|
counts: {
|
|
type: DataTypes.JSON,
|
|
allowNull: false
|
|
},
|
|
visible: {
|
|
type: DataTypes.BOOLEAN,
|
|
allowNull: false,
|
|
defaultValue: true
|
|
},
|
|
subcategoryId: {
|
|
type: Sequelize.INTEGER,
|
|
references: {
|
|
model: 'Subcategory',
|
|
key: 'id'
|
|
},
|
|
onUpdate: 'cascade',
|
|
onDelete: 'cascade'
|
|
}
|
|
}, {
|
|
charset: 'utf8'
|
|
});
|
|
|
|
query.createTable('Sale', {
|
|
id: {
|
|
type: DataTypes.INTEGER,
|
|
primaryKey: true,
|
|
allowNull: false,
|
|
autoIncrement: true
|
|
},
|
|
date: {
|
|
type: DataTypes.DATE,
|
|
allowNull: false
|
|
},
|
|
measure: {
|
|
type: DataTypes.JSONB,
|
|
allowNull: false
|
|
},
|
|
itemId: {
|
|
type: Sequelize.INTEGER,
|
|
references: {
|
|
model: 'Item',
|
|
key: 'id'
|
|
},
|
|
onUpdate: 'cascade',
|
|
onDelete: 'cascade'
|
|
},
|
|
venueId: {
|
|
type: Sequelize.INTEGER,
|
|
references: {
|
|
model: 'Venue',
|
|
key: 'id'
|
|
},
|
|
onUpdate: 'cascade',
|
|
onDelete: 'cascade'
|
|
}
|
|
}, {
|
|
charset: 'utf8'
|
|
});
|
|
},
|
|
|
|
down: function (query, Sequelize) {
|
|
query.dropTable('Sale');
|
|
query.dropTable('Item');
|
|
query.dropTable('Subcategory');
|
|
query.dropTable('Category');
|
|
query.dropTable('User');
|
|
query.dropTable('Measure');
|
|
query.dropTable('Venue');
|
|
}
|
|
};
|