Files
PetitTeton/migrations/20160602035027-base.js
Wynne Crisman 0a7cff6672 Merged PetitTeton webapp with the inventory tracking app; Moved the database configuration out of git and added an example configuration; Added migrations to the mix so that we can easily update the production database and roll back changes to the database (from the command line install migrations [may not be necessary?]:
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
2016-06-13 11:54:12 -07:00

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