final/migrate players script

This commit is contained in:
SowinskiBraeden committed 2023-10-29 18:22:26 -07:00
1 parent 894aba1a7b
commit 0b94b3f8f2
2 files changed
+14 -7

No files matched your search

+13 -6
View File
@@ -23,7 +23,8 @@ async function migrate() {
const package = await JSON.parse(fs.readFileSync('../package.json')); const package = await JSON.parse(fs.readFileSync('../package.json'));
const version = package.version.split('.').map(v => parseInt(v)); const version = package.version.split('.').map(v => parseInt(v));
if (version[0] < 12) throw new Error('Bot version does not meet requirements: v^12.0.0'); // Ensure version is 12.0.4 or higher.
if (version[0] < 12, version[2] < 4) throw new Error('Bot version does not meet requirements: v^12.0.4');
try { try {
// Get the database and collection on which to run the operation // Get the database and collection on which to run the operation
@@ -31,32 +32,38 @@ async function migrate() {
const players = database.collection("players"); const players = database.collection("players");
const guilds = database.collection("guilds"); const guilds = database.collection("guilds");
// Get current guild settings + player stats
let guild = await guilds.findOne({"server.serverID": guildId}); let guild = await guilds.findOne({"server.serverID": guildId});
// Create backup dir
const dir = __dirname + '/backup'; const dir = __dirname + '/backup';
if (!fs.existsSync(dir)){ if (!fs.existsSync(dir)){
fs.mkdirSync(dir); fs.mkdirSync(dir);
} }
// Ensure new required values are inserted into player stat.
guild.server.playerstats.map(stat => stat.nitradoServerID = NitradoServerID); guild.server.playerstats.map(stat => stat.nitradoServerID = NitradoServerID);
guild.server.playerstats.map(stat => stat.bountiesLength = stat.bounties.length); guild.server.playerstats.map(stat => stat.bountiesLength = stat.bounties.length);
// write JSON to file // write JSON to file
// fs.writeFileSync(`${dir}/player_stats_backup.json`, JSON.stringify(guild.server.playerstats, null, 2)); fs.writeFileSync(`${dir}/player_stats_backup.json`, JSON.stringify(guild.server.playerstats, null, 2));
// console.log(`A backup of playerstats was successfully created in ./backup/player_stats_backup.json in case of a fatal error.`); console.log(`A backup of playerstats was successfully created in ./backup/player_stats_backup.json in case of a fatal error.`);
// const result = await players.insertMany(guild.server.playerstats, { ordered: true }); // Move player stats to new collection.
// console.log(`${result.insertedCount} documents were inserted`); const result = await players.insertMany(guild.server.playerstats, { ordered: true });
console.log(`${result.insertedCount} documents were inserted to "players" collections.`);
// Removes player stats from guild settings.
delete guild.server.playerstats; delete guild.server.playerstats;
// Update guild settings with removed player stats.
await guilds.updateOne({"server.serverID": guildId}, {$set: guild}); await guilds.updateOne({"server.serverID": guildId}, {$set: guild});
} catch (err) { } catch (err) {
throw new Error(`An error occured while attempting to migrate player stats: ${err}`) throw new Error(`An error occured while attempting to migrate player stats: ${err}`)
} finally { } finally {
await client.close(); await client.close();
console.log(`Successfully migrated player stats into the 'players' collection.`); console.log(`Successfully migrated player stats into the "players" collection.`);
} }
} }
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "dayzr-bot", "name": "dayzr-bot",
"version": "12.0.3", "version": "12.0.4",
"description": "A General Purpose Discord Bot for DayZ Nitrado Servers.", "description": "A General Purpose Discord Bot for DayZ Nitrado Servers.",
"main": "index.js", "main": "index.js",
"nodemonConfig": { "nodemonConfig": {