const config = require('../../config'); const providers = config.providers; const crypto = require('crypto'); const bcrypt = require('bcrypt'); const moment = require('moment'); module.exports = function(sequelize, DataTypes) { const game_rulesets = sequelize.define( 'game_rulesets', { id: { type: DataTypes.UUID, defaultValue: DataTypes.UUIDV4, primaryKey: true, }, name: { type: DataTypes.TEXT, }, mode: { type: DataTypes.ENUM, values: [ "free_for_all", "team_red_vs_blue", "duel_bracket" ], }, round_duration_seconds: { type: DataTypes.INTEGER, }, max_players: { type: DataTypes.INTEGER, }, tap_damage: { type: DataTypes.DECIMAL, }, gift_damage_multiplier: { type: DataTypes.DECIMAL, }, join_bonus_health: { type: DataTypes.DECIMAL, }, initial_health: { type: DataTypes.INTEGER, }, vip_only: { type: DataTypes.BOOLEAN, allowNull: false, defaultValue: false, }, notes: { type: DataTypes.TEXT, }, importHash: { type: DataTypes.STRING(255), allowNull: true, unique: true, }, }, { timestamps: true, paranoid: true, freezeTableName: true, }, ); game_rulesets.associate = (db) => { /// loop through entities and it's fields, and if ref === current e[name] and create relation has many on parent entity db.game_rulesets.hasMany(db.arena_sessions, { as: 'arena_sessions_ruleset', foreignKey: { name: 'rulesetId', }, constraints: false, }); //end loop db.game_rulesets.belongsTo(db.users, { as: 'created_by_user', foreignKey: { name: 'created_by_userId', }, constraints: false, }); db.game_rulesets.belongsTo(db.users, { as: 'createdBy', }); db.game_rulesets.belongsTo(db.users, { as: 'updatedBy', }); }; return game_rulesets; };