39553-vm/backend/src/db/models/game_servers.js
2026-04-11 12:47:25 +00:00

222 lines
2.9 KiB
JavaScript

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_servers = sequelize.define(
'game_servers',
{
id: {
type: DataTypes.UUID,
defaultValue: DataTypes.UUIDV4,
primaryKey: true,
},
server_name: {
type: DataTypes.TEXT,
},
place_id: {
type: DataTypes.TEXT,
},
job_id: {
type: DataTypes.TEXT,
},
region: {
type: DataTypes.ENUM,
values: [
"na",
"eu",
"asia",
"sa",
"oce",
"other"
],
},
status: {
type: DataTypes.ENUM,
values: [
"online",
"offline",
"starting",
"stopping",
"unknown"
],
},
last_heartbeat_at: {
type: DataTypes.DATE,
},
current_players: {
type: DataTypes.INTEGER,
},
max_players: {
type: DataTypes.INTEGER,
},
importHash: {
type: DataTypes.STRING(255),
allowNull: true,
unique: true,
},
},
{
timestamps: true,
paranoid: true,
freezeTableName: true,
},
);
game_servers.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_servers.hasMany(db.players, {
as: 'players_last_seen_server',
foreignKey: {
name: 'last_seen_serverId',
},
constraints: false,
});
db.game_servers.hasMany(db.moderation_actions, {
as: 'moderation_actions_server',
foreignKey: {
name: 'serverId',
},
constraints: false,
});
db.game_servers.hasMany(db.zombie_events, {
as: 'zombie_events_server',
foreignKey: {
name: 'serverId',
},
constraints: false,
});
db.game_servers.hasMany(db.event_triggers, {
as: 'event_triggers_server',
foreignKey: {
name: 'serverId',
},
constraints: false,
});
db.game_servers.hasMany(db.luck_boosts, {
as: 'luck_boosts_server',
foreignKey: {
name: 'serverId',
},
constraints: false,
});
db.game_servers.hasMany(db.game_settings, {
as: 'game_settings_server',
foreignKey: {
name: 'serverId',
},
constraints: false,
});
db.game_servers.hasMany(db.admin_announcements, {
as: 'admin_announcements_server',
foreignKey: {
name: 'serverId',
},
constraints: false,
});
//end loop
db.game_servers.belongsTo(db.users, {
as: 'createdBy',
});
db.game_servers.belongsTo(db.users, {
as: 'updatedBy',
});
};
return game_servers;
};