Files
PetitTeton/migrations/20160602035027-base.js

204 lines
3.5 KiB
JavaScript
Raw Normal View History

'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');
}
};