Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var Sequelize = require("sequelize");
- var bcrypt = require("bcrypt");
- const saltRounds = 10;
- module.exports = {
- connect: function(config) {
- connection = new Sequelize(config.get('databaseName'),
- config.get('databaseUsername'),
- config.get('databasePassword'), {
- host: 'localhost',
- dialect: 'mysql',
- pool: {
- max: 5,
- min: 0,
- idle: 10000
- }
- });
- return connection;
- },
- setup: function(config, callback) {
- databaseModels = {
- users: connection.define('users', users),
- patches: connection.define('patches', patches),
- categories: connection.define('categories', categories),
- weakauras: connection.define('weakauras', weakauras),
- weakauraRatings: connection.define('weakauraRatings', weakauraRatings),
- weakauraCategories: connection.define('weakauraCategories', weakauraCategories),
- weakauraVersions: connection.define('weakauraVersions', weakauraVersions),
- weakauraComments: connection.define('weakauraComments', weakauraComments),
- userSubscriptions: connection.define('userSubscriptions', userSubscriptions),
- weakauraSubscriptions: connection.define('weakauraSubscriptions', weakauraSubscriptions)
- };
- initAssosications();
- if (config.get("debug", false)) {
- connection.sync({ force: true }).then(insertDefaultValue).then(callback);
- } else {
- connection.sync().then(callback);
- }
- },
- getModels: function() {
- return databaseModels;
- }
- };
- var insertDefaultValue = function() {
- databaseModels.patches.create({number: '7.2.0'});
- databaseModels.weakauras.create({name: '7.2.0', screenshot: '7.2.0', description: '7.2.0'});
- }
- var initAssosications = function() {
- databaseModels.weakauras.belongsTo(databaseModels.users);
- databaseModels.users.hasMany(databaseModels.weakauras);
- databaseModels.weakauraRatings.belongsTo(databaseModels.users);
- databaseModels.weakauraRatings.belongsTo(databaseModels.weakauras);
- databaseModels.users.hasMany(databaseModels.weakauraRatings);
- databaseModels.weakauras.hasMany(databaseModels.weakauraRatings);
- databaseModels.weakauraCategories.belongsTo(databaseModels.categories);
- databaseModels.weakauraCategories.belongsTo(databaseModels.weakauras);
- databaseModels.categories.hasMany(databaseModels.weakauraCategories);
- databaseModels.weakauras.hasMany(databaseModels.weakauraCategories);
- databaseModels.weakauraVersions.belongsTo(databaseModels.patches);
- databaseModels.weakauraVersions.belongsTo(databaseModels.weakauras);
- databaseModels.patches.hasMany(databaseModels.weakauraVersions);
- databaseModels.weakauras.hasMany(databaseModels.weakauraVersions);
- databaseModels.weakauraComments.belongsTo(databaseModels.weakauraVersions);
- databaseModels.weakauraComments.belongsTo(databaseModels.users);
- databaseModels.weakauraVersions.hasMany(databaseModels.weakauraComments);
- databaseModels.users.hasMany(databaseModels.weakauraComments);
- databaseModels.weakauraSubscriptions.belongsTo(databaseModels.weakauras);
- databaseModels.weakauraSubscriptions.belongsTo(databaseModels.users);
- databaseModels.weakauras.hasMany(databaseModels.weakauraSubscriptions);
- databaseModels.users.hasMany(databaseModels.weakauraSubscriptions);
- databaseModels.userSubscriptions.belongsTo(databaseModels.users, { as: 'subscriber' });
- databaseModels.userSubscriptions.belongsTo(databaseModels.users, { as: 'subscribed' });
- databaseModels.users.hasMany(databaseModels.userSubscriptions);
- }
- var connection;
- var databaseModels = {};
- var users = {
- id: {
- type: Sequelize.INTEGER,
- autoIncrement: true,
- primaryKey: true
- },
- email: {
- type: Sequelize.STRING,
- unique: true,
- allowNull: false
- },
- password: {
- type: Sequelize.STRING,
- allowNull: false,
- set: function(value) {
- this.setDataValue("password", bcrypt.hashSync(value, saltRounds));
- }
- },
- picture: {
- type: Sequelize.STRING
- },
- status: {
- type: Sequelize.ENUM('active','pending','blocked'),
- allowNull: false,
- defaultValue: 'pending'
- },
- btag: {
- type: Sequelize.STRING
- },
- description: {
- type: Sequelize.TEXT
- },
- username: {
- allowNull: false,
- type: Sequelize.STRING
- }
- };
- var patches = {
- id: {
- type: Sequelize.INTEGER,
- autoIncrement: true,
- primaryKey: true
- },
- number: {
- type: Sequelize.STRING,
- unique: true,
- allowNull: false
- }
- };
- var categories = {
- id: {
- type: Sequelize.INTEGER,
- autoIncrement: true,
- primaryKey: true
- },
- name: {
- type: Sequelize.STRING,
- unique: true,
- allowNull: false
- }
- };
- var weakauras = {
- id: {
- type: Sequelize.INTEGER,
- autoIncrement: true,
- primaryKey: true,
- },
- name: {
- type: Sequelize.STRING,
- unique: true,
- allowNull: false
- },
- description: {
- type: Sequelize.STRING,
- allowNull: false
- },
- screenshot: {
- type: Sequelize.STRING,
- allowNull: false
- },
- visibility: {
- type: Sequelize.ENUM('public', 'private'),
- allowNull: false,
- defaultValue: 'public'
- }
- };
- var weakauraRatings = {
- id: {
- type: Sequelize.INTEGER,
- autoIncrement: true,
- primaryKey: true,
- },
- rating: {
- type: Sequelize.INTEGER,
- allowNull: false,
- validate: { min: 1, max: 10 }
- },
- };
- var weakauraCategories = {
- id: {
- type: Sequelize.INTEGER,
- autoIncrement: true,
- primaryKey: true,
- }
- };
- var weakauraVersions = {
- id: {
- type: Sequelize.INTEGER,
- autoIncrement: true,
- primaryKey: true,
- },
- version: {
- type: Sequelize.STRING,
- allowNull: false
- },
- string: {
- type: Sequelize.TEXT,
- allowNull: false
- },
- changelog: {
- type: Sequelize.TEXT,
- allowNull: false
- }
- };
- var weakauraComments = {
- id: {
- type: Sequelize.INTEGER,
- autoIncrement: true,
- primaryKey: true,
- },
- text: {
- type: Sequelize.TEXT,
- allowNull: false
- }
- };
- var weakauraSubscriptions = {
- id: {
- type: Sequelize.INTEGER,
- autoIncrement: true,
- primaryKey: true,
- }
- };
- var userSubscriptions = {
- id: {
- type: Sequelize.INTEGER,
- autoIncrement: true,
- primaryKey: true,
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement