From 7015fc16717d6a42b4e33bbce06d349fc11eda68 Mon Sep 17 00:00:00 2001 From: dbroqua Date: Tue, 24 Dec 2019 14:34:22 +0100 Subject: [PATCH] Added histories import from old version --- .gitignore | 2 ++ import.js | 92 +++++++++++++++++++++++++++++++++++++++++++++++++ models/index.js | 2 +- package.json | 3 +- yarn.lock | 5 +++ 5 files changed, 102 insertions(+), 2 deletions(-) create mode 100644 import.js diff --git a/.gitignore b/.gitignore index 06f4157..8da0357 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ run.sh node_modules +import +import.sh diff --git a/import.js b/import.js new file mode 100644 index 0000000..0fa86c9 --- /dev/null +++ b/import.js @@ -0,0 +1,92 @@ +const path = require('path') +const moment = require('moment') +const models = require('./models').models + +// Export data from base: +// docker exec mongo sh -c 'mongoexport --host localhost --db irc-bot-rx3 --collection histories --type=json --fields artist,songName,createdAt' > rx3.json + +if (!process.argv[2]) { + console.error(new Error('Missing radio alias')) + process.exit(1) +} + +const radio = process.argv[2] +const file = path.join('import', `${radio}.json`) + +var lineReader = require('readline').createInterface({ + input: require('fs').createReadStream(file) +}) + +let lines = 0 +let checked = 0 +let inserted = 0 +let canDone = false + +const done = () => { + if (canDone && lines === checked) { + console.log(`Inserted ${inserted} on ${lines} lines read`) + process.exit(0) + } +} + +lineReader.on('close', () => { + console.log('All lines read, waiting for insert') + canDone = true + done() +}) + +lineReader.on('line', function (line) { + lines += 1 + const currentLine = JSON.parse(line) + + const value = { + radio: radio, + artist: currentLine.artist, + title: currentLine.songName, + createdAt: currentLine.createdAt.$date + } + + // console.log('WHERE:', value) + + models.Histories + .find({ + radio: radio, + artist: currentLine.artist, + title: currentLine.songName + }) + .exec(function (err, saved) { + // console.log('SAVED:', saved) + if (err) { + checked += 1 + console.error('ERR:', err) + done() + } else { + let found = false + // console.log('CHECK FOR:', value.title) + for (let i = 0; i < saved.length; i += 1) { + const currentDate = moment(saved[i].createdAt).millisecond(0) + + // console.log(currentDate.toDate(), moment(value.createdAt).millisecond(0).toDate()) + + if (currentDate.diff(moment(value.createdAt).millisecond(0), 'seconds') === 0) { + // console.log('======= FOUND =========') + found = true + break + } + } + + if (!found) { + // Insert line + const history = new models.Histories(value) + history.save(() => { + checked += 1 + inserted += 1 + done() + }) + } else { + checked += 1 + done() + } + } + }) +}) diff --git a/models/index.js b/models/index.js index b59cba8..10ec97d 100644 --- a/models/index.js +++ b/models/index.js @@ -8,7 +8,7 @@ mongoose.set('useNewUrlParser', true) mongoose.set('useUnifiedTopology', true) mongoose.set('useFindAndModify', false) mongoose.set('useCreateIndex', true) -mongoose.set('debug', true) +mongoose.set('debug', false) mongoose.connect(process.env.MONGO_URL) diff --git a/package.json b/package.json index 114fc2d..809474d 100644 --- a/package.json +++ b/package.json @@ -11,6 +11,7 @@ "license": "ISC", "dependencies": { "irc-upd": "^0.10.0", + "moment": "^2.24.0", "mongoose": "^5.8.3", "radio-stream": "^0.0.1" }, @@ -23,4 +24,4 @@ "eslint-plugin-standard": "^4.0.1", "nodemon": "^2.0.2" } -} +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 9286331..c2aee03 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1114,6 +1114,11 @@ mkdirp@^0.5.1: dependencies: minimist "0.0.8" +moment@^2.24.0: + version "2.24.0" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.24.0.tgz#0d055d53f5052aa653c9f6eb68bb5d12bf5c2b5b" + integrity sha512-bV7f+6l2QigeBBZSM/6yTNq4P2fNpSWj/0e7jQcy87A8e7o2nAfP/34/2ky5Vw4B9S446EtIhodAzkFCcR4dQg== + mongodb@3.4.1: version "3.4.1" resolved "https://registry.yarnpkg.com/mongodb/-/mongodb-3.4.1.tgz#0d15e57e0ea0fc85b7a4fb9291b374c2e71652dc"