diff --git a/admin/migrate_playerstats.js b/admin/migrate_playerstats.js index 7373a96..ebc783a 100644 --- a/admin/migrate_playerstats.js +++ b/admin/migrate_playerstats.js @@ -23,7 +23,8 @@ async function migrate() { const package = await JSON.parse(fs.readFileSync('../package.json')); 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 { // Get the database and collection on which to run the operation @@ -31,32 +32,38 @@ async function migrate() { const players = database.collection("players"); const guilds = database.collection("guilds"); + // Get current guild settings + player stats let guild = await guilds.findOne({"server.serverID": guildId}); + // Create backup dir const dir = __dirname + '/backup'; if (!fs.existsSync(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.bountiesLength = stat.bounties.length); // write JSON to file - // 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.`); + 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.`); - // const result = await players.insertMany(guild.server.playerstats, { ordered: true }); - // console.log(`${result.insertedCount} documents were inserted`); + // Move player stats to new collection. + 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; + // Update guild settings with removed player stats. await guilds.updateOne({"server.serverID": guildId}, {$set: guild}); } catch (err) { throw new Error(`An error occured while attempting to migrate player stats: ${err}`) } finally { await client.close(); - console.log(`Successfully migrated player stats into the 'players' collection.`); + console.log(`Successfully migrated player stats into the "players" collection.`); } } diff --git a/package.json b/package.json index 2111862..105ab19 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dayzr-bot", - "version": "12.0.3", + "version": "12.0.4", "description": "A General Purpose Discord Bot for DayZ Nitrado Servers.", "main": "index.js", "nodemonConfig": {