Advertisement
Guest User

Untitled

a guest
Mar 28th, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var Sequelize = require("sequelize");
  2. var bcrypt = require("bcrypt");
  3. const saltRounds = 10;
  4.  
  5. module.exports = {
  6.     connect: function(config) {
  7.         connection = new Sequelize(config.get('databaseName'),
  8.                             config.get('databaseUsername'),
  9.                             config.get('databasePassword'), {
  10.             host: 'localhost',
  11.             dialect: 'mysql',
  12.  
  13.             pool: {
  14.                 max: 5,
  15.                 min: 0,
  16.                 idle: 10000
  17.             }
  18.         });
  19.         return connection;
  20.     },
  21.    
  22.     setup: function(config, callback) {
  23.          databaseModels = {
  24.             users: connection.define('users', users),
  25.             patches: connection.define('patches', patches),
  26.             categories: connection.define('categories', categories),
  27.             weakauras: connection.define('weakauras', weakauras),
  28.             weakauraRatings: connection.define('weakauraRatings', weakauraRatings),
  29.             weakauraCategories: connection.define('weakauraCategories', weakauraCategories),
  30.             weakauraVersions: connection.define('weakauraVersions', weakauraVersions),
  31.             weakauraComments: connection.define('weakauraComments', weakauraComments),
  32.             userSubscriptions: connection.define('userSubscriptions', userSubscriptions),
  33.             weakauraSubscriptions: connection.define('weakauraSubscriptions', weakauraSubscriptions)
  34.         };     
  35.         initAssosications();
  36.         if (config.get("debug", false)) {
  37.             connection.sync({ force: true }).then(insertDefaultValue).then(callback);
  38.         } else {
  39.             connection.sync().then(callback);
  40.         }
  41.        
  42.     },
  43.    
  44.     getModels: function() {
  45.         return databaseModels;
  46.     }
  47. };
  48.  
  49. var insertDefaultValue = function() {
  50.     databaseModels.patches.create({number: '7.2.0'});
  51.     databaseModels.weakauras.create({name: '7.2.0', screenshot: '7.2.0', description: '7.2.0'});
  52. }
  53.  
  54. var initAssosications = function() {
  55.     databaseModels.weakauras.belongsTo(databaseModels.users);
  56.     databaseModels.users.hasMany(databaseModels.weakauras);
  57.     databaseModels.weakauraRatings.belongsTo(databaseModels.users);
  58.     databaseModels.weakauraRatings.belongsTo(databaseModels.weakauras);
  59.     databaseModels.users.hasMany(databaseModels.weakauraRatings);
  60.     databaseModels.weakauras.hasMany(databaseModels.weakauraRatings);
  61.     databaseModels.weakauraCategories.belongsTo(databaseModels.categories);
  62.     databaseModels.weakauraCategories.belongsTo(databaseModels.weakauras);
  63.     databaseModels.categories.hasMany(databaseModels.weakauraCategories);
  64.     databaseModels.weakauras.hasMany(databaseModels.weakauraCategories);
  65.     databaseModels.weakauraVersions.belongsTo(databaseModels.patches);
  66.     databaseModels.weakauraVersions.belongsTo(databaseModels.weakauras);
  67.     databaseModels.patches.hasMany(databaseModels.weakauraVersions);
  68.     databaseModels.weakauras.hasMany(databaseModels.weakauraVersions);
  69.     databaseModels.weakauraComments.belongsTo(databaseModels.weakauraVersions);
  70.     databaseModels.weakauraComments.belongsTo(databaseModels.users);
  71.     databaseModels.weakauraVersions.hasMany(databaseModels.weakauraComments);
  72.     databaseModels.users.hasMany(databaseModels.weakauraComments);
  73.     databaseModels.weakauraSubscriptions.belongsTo(databaseModels.weakauras);
  74.     databaseModels.weakauraSubscriptions.belongsTo(databaseModels.users);
  75.     databaseModels.weakauras.hasMany(databaseModels.weakauraSubscriptions);
  76.     databaseModels.users.hasMany(databaseModels.weakauraSubscriptions);
  77.     databaseModels.userSubscriptions.belongsTo(databaseModels.users, { as: 'subscriber' });
  78.     databaseModels.userSubscriptions.belongsTo(databaseModels.users, { as: 'subscribed' });
  79.     databaseModels.users.hasMany(databaseModels.userSubscriptions);
  80. }
  81.  
  82. var connection;
  83. var databaseModels = {};
  84. var users = {
  85.     id: {
  86.         type: Sequelize.INTEGER,
  87.         autoIncrement: true,
  88.         primaryKey: true
  89.     },
  90.     email: {
  91.         type: Sequelize.STRING,
  92.         unique: true,
  93.         allowNull: false
  94.     },
  95.     password: {
  96.         type: Sequelize.STRING,
  97.         allowNull: false,
  98.         set: function(value) {
  99.             this.setDataValue("password", bcrypt.hashSync(value, saltRounds));
  100.         }
  101.     },
  102.     picture: {
  103.         type: Sequelize.STRING
  104.     },
  105.     status: {
  106.         type: Sequelize.ENUM('active','pending','blocked'),
  107.         allowNull: false,
  108.         defaultValue: 'pending'
  109.     },
  110.     btag: {
  111.         type: Sequelize.STRING
  112.     },
  113.     description: {
  114.         type: Sequelize.TEXT
  115.     },
  116.     username: {
  117.         allowNull: false,
  118.         type: Sequelize.STRING
  119.     }
  120. };
  121.  
  122. var patches = {
  123.     id: {
  124.         type: Sequelize.INTEGER,
  125.         autoIncrement: true,
  126.         primaryKey: true
  127.     },
  128.     number: {
  129.         type: Sequelize.STRING,
  130.         unique: true,
  131.         allowNull: false
  132.     }
  133. };
  134.  
  135. var categories = {
  136.     id: {
  137.         type: Sequelize.INTEGER,
  138.         autoIncrement: true,
  139.         primaryKey: true
  140.     },
  141.     name: {
  142.         type: Sequelize.STRING,
  143.         unique: true,
  144.         allowNull: false
  145.     }
  146. };
  147.  
  148. var weakauras = {
  149.     id: {
  150.         type: Sequelize.INTEGER,
  151.         autoIncrement: true,
  152.         primaryKey: true,
  153.     },
  154.     name: {
  155.         type: Sequelize.STRING,
  156.         unique: true,
  157.         allowNull: false
  158.     },
  159.     description: {
  160.         type: Sequelize.STRING,
  161.         allowNull: false
  162.     },
  163.     screenshot: {
  164.         type: Sequelize.STRING,
  165.         allowNull: false
  166.     },
  167.     visibility: {
  168.         type: Sequelize.ENUM('public', 'private'),
  169.         allowNull: false,
  170.         defaultValue: 'public'
  171.     }  
  172. };
  173.  
  174. var weakauraRatings = {
  175.     id: {
  176.         type: Sequelize.INTEGER,
  177.         autoIncrement: true,
  178.         primaryKey: true,
  179.     },
  180.     rating: {
  181.         type: Sequelize.INTEGER,
  182.         allowNull: false,
  183.         validate: { min: 1, max: 10 }
  184.     },
  185. };
  186.  
  187. var weakauraCategories = {
  188.     id: {
  189.         type: Sequelize.INTEGER,
  190.         autoIncrement: true,
  191.         primaryKey: true,
  192.     }
  193. };
  194.  
  195. var weakauraVersions = {
  196.     id: {
  197.         type: Sequelize.INTEGER,
  198.         autoIncrement: true,
  199.         primaryKey: true,
  200.     },
  201.     version: {
  202.         type: Sequelize.STRING,
  203.         allowNull: false
  204.     },
  205.     string: {
  206.         type: Sequelize.TEXT,
  207.         allowNull: false
  208.     },
  209.     changelog: {
  210.         type: Sequelize.TEXT,
  211.         allowNull: false
  212.     }
  213. };
  214.  
  215. var weakauraComments = {
  216.     id: {
  217.         type: Sequelize.INTEGER,
  218.         autoIncrement: true,
  219.         primaryKey: true,
  220.     },
  221.     text: {
  222.         type: Sequelize.TEXT,
  223.         allowNull: false
  224.     }
  225. };
  226.  
  227. var weakauraSubscriptions = {
  228.     id: {
  229.         type: Sequelize.INTEGER,
  230.         autoIncrement: true,
  231.         primaryKey: true,
  232.     }
  233. };
  234.  
  235. var userSubscriptions = {
  236.     id: {
  237.         type: Sequelize.INTEGER,
  238.         autoIncrement: true,
  239.         primaryKey: true,
  240.     }
  241. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement