mirror of
https://gitlab.com/MrFry/mrfrys-node-server
synced 2025-04-01 20:24:18 +02:00
mergeDuplicateSubjectsAndRmDuplicates.sh
This commit is contained in:
parent
2c031e4d05
commit
c8653805fb
2 changed files with 63 additions and 28 deletions
|
@ -1,52 +1,59 @@
|
||||||
|
/* eslint-disable @typescript-eslint/no-var-requires */
|
||||||
const fs = require('fs')
|
const fs = require('fs')
|
||||||
const path = require('path')
|
const path = require('path')
|
||||||
|
|
||||||
const arg = process.argv[2]
|
const filesDirPath = process.argv[2]
|
||||||
const files = fs.readdirSync(arg)
|
const resdir = process.argv[3]
|
||||||
const resdir = './res'
|
const files = fs.readdirSync(filesDirPath)
|
||||||
|
|
||||||
let duplicateSubjects = 0
|
let duplicateSubjects = 0
|
||||||
let questionsInDuplicateSubjects = 0
|
let questionsInDuplicateSubjects = 0
|
||||||
|
|
||||||
|
if (!fs.existsSync(resdir)) {
|
||||||
|
fs.mkdirSync(resdir)
|
||||||
|
}
|
||||||
|
|
||||||
function merge(x, y) {
|
function merge(x, y) {
|
||||||
return {
|
return {
|
||||||
Name: x.Name,
|
Name: x.Name,
|
||||||
Questions: [...x.Questions, ...y.Questions],
|
Questions: [...x.Questions, ...y.Questions],
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const fixQdb = (dbname) => {
|
const fixQdb = (dbname) => {
|
||||||
console.log(dbname)
|
console.log(dbname)
|
||||||
console.log()
|
console.log()
|
||||||
const file = JSON.parse(fs.readFileSync(path.join(arg + dbname), 'utf8'))
|
const file = JSON.parse(
|
||||||
|
fs.readFileSync(path.join(filesDirPath + dbname), 'utf8')
|
||||||
|
)
|
||||||
|
|
||||||
const result = {}
|
const result = {}
|
||||||
|
|
||||||
file.forEach((x) => {
|
file.forEach((x) => {
|
||||||
if (result[x.Name]) {
|
if (result[x.Name]) {
|
||||||
console.log(x.Name, ' is duplicate!')
|
console.log(x.Name, ' is duplicate!')
|
||||||
duplicateSubjects += 1
|
duplicateSubjects += 1
|
||||||
result[x.Name] = merge(result[x.Name], x)
|
result[x.Name] = merge(result[x.Name], x)
|
||||||
questionsInDuplicateSubjects += result[x.Name].Questions.length
|
questionsInDuplicateSubjects += result[x.Name].Questions.length
|
||||||
} else {
|
} else {
|
||||||
result[x.Name] = x
|
result[x.Name] = x
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
const newFile = Object.values(result)
|
const newFile = Object.values(result)
|
||||||
|
|
||||||
fs.writeFileSync(path.join(resdir, dbname), JSON.stringify(newFile))
|
fs.writeFileSync(path.join(resdir, dbname), JSON.stringify(newFile))
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fs.existsSync(resdir)) {
|
if (fs.existsSync(resdir)) {
|
||||||
fs.rmSync(resdir, { recursive: true })
|
fs.rmSync(resdir, { recursive: true })
|
||||||
fs.mkdirSync(resdir)
|
fs.mkdirSync(resdir)
|
||||||
}
|
}
|
||||||
|
|
||||||
files.forEach((x) => {
|
files.forEach((x) => {
|
||||||
if (x.includes('json')) {
|
if (x.includes('json')) {
|
||||||
fixQdb(x)
|
fixQdb(x)
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
console.log('Done! Found duplicates:', duplicateSubjects)
|
console.log('Done! Found duplicates:', duplicateSubjects)
|
||||||
|
|
28
src/standaloneUtils/mergeDuplicateSubjectsAndRmDuplicates.sh
Executable file
28
src/standaloneUtils/mergeDuplicateSubjectsAndRmDuplicates.sh
Executable file
|
@ -0,0 +1,28 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
OUTDIR="/tmp/res/"
|
||||||
|
|
||||||
|
echo "> pwd ${PWD}"
|
||||||
|
|
||||||
|
mkdir -p OUTDIR
|
||||||
|
node ./src/standaloneUtils/duplicateSubjectsInQdbFix.js ./public/questionDbs/ "${OUTDIR}"
|
||||||
|
|
||||||
|
echo -e "\n\n\n"
|
||||||
|
find "${OUTDIR}" -type f | while IFS= read -r qdb; do
|
||||||
|
node \
|
||||||
|
./src/standaloneUtils/rmDuplicates.js \
|
||||||
|
"${qdb}"
|
||||||
|
|
||||||
|
echo -e "\n\n\n"
|
||||||
|
done
|
||||||
|
|
||||||
|
rm -v ${OUTDIR}*.json || exit
|
||||||
|
|
||||||
|
mv -v ./*.res "${OUTDIR}" || exit
|
||||||
|
|
||||||
|
find "${OUTDIR}" -type f | while IFS= read -r qdb; do
|
||||||
|
newName=$(echo "${qdb}" | rev | cut -d '.' -f 2- | rev)
|
||||||
|
mv -v "${qdb}" "${newName}"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "Done!"
|
Loading…
Add table
Add a link
Reference in a new issue